Supprimer ligne fichier

Supprimer ligne fichier - PHP - Programmation

Marsh Posté le 23-09-2007 à 11:24:35    

Bonjour,  
j'ai créé un site de creation  d'albums photos, ( pour ceux qui seraient intéréssés )
 
Je voulais savoir comment supprimer une ligne d'un fichier dont le numero est contenu dans une variable $compte.
 
mon code actuel :
 

Code :
  1. <?
  2. include("_protect.php" );
  3.  
  4. if ($protect<"2" )
  5. {
  6. $compte=@$_GET['id']-1;
  7. //effacer la ligne $compte dans le fichier inscrits.php
  8. }
  9.  
  10. else
  11. {
  12. echo "<p><p><p><p class='center'>Vous n'etes pas admin</p></p></p></p>";
  13. }
  14. ?>


 
merci d'avance.

Reply

Marsh Posté le 23-09-2007 à 11:24:35   

Reply

Marsh Posté le 23-09-2007 à 11:32:22    

Code :
  1. echo "<p><p><p><p class='center'>Vous n'etes pas admin</p></p></p></p>";


 
paragraph addict ?
 
et t'en est à ou dans ton algo de supression de ligne ?
pasque ton code actuel n s'en fou, ça n'a rien a voir avec ce que tu demande. en gros tu veux qu'on te fasse ton script là :o.
ta cherché un peu ?
 
suffit de lire le fichier jusqua la ligne machin, puis de la ligne machin+1 à la fin, et tu refou le tout dans un fichier nan ?

Reply

Marsh Posté le 23-09-2007 à 11:50:11    

je sais, mais comment je supprime ?
je veux juste le nom de la fonction...  
sinon, pr le reste je sais jai ma boucle for()
 
EDIT : ok c bon jai trouvé


Message édité par Profil supprimé le 23-09-2007 à 11:52:25
Reply

Marsh Posté le 23-09-2007 à 11:53:05    

je crois pas qu'une focntion delete_line_x() existe en php ...
 
edit: ta trouvé quoi ?

Message cité 1 fois
Message édité par zecrazytux le 23-09-2007 à 11:53:28
Reply

Marsh Posté le 23-09-2007 à 13:07:49    

zecrazytux a écrit :

je crois pas qu'une focntion delete_line_x() existe en php ...
 
edit: ta trouvé quoi ?


 
ca, mais en fait ca marche pas... je cherche trop compliqué !

Code :
  1. <?
  2. //script de suppression de ligne
  3. ?>


 
lol :d je demande juste une fonction.


Message édité par Profil supprimé le 24-09-2007 à 18:09:44
Reply

Marsh Posté le 23-09-2007 à 13:57:56    

Code :
  1. function delete_line($filename, $line_number) {
  2.  $lines = file($filename);
  3.  unset($lines[$line_number - 1]);
  4.  file_put_contents($filename, implode($lines));
  5. }


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-09-2007 à 18:08:33    

merci, mais delete_line retourne false:  

Code :
  1. <?
  2. include("_protect.php" );
  3.  
  4. if ($protect<"2" )
  5. {
  6. $compte=@$_GET['id']-1;
  7.  
  8. function delete_line($filename, $line_number) {  $lines = file($filename);  unset($lines[$line_number - 1]);  file_put_contents($filename, implode($lines));}
  9.  
  10. if (delete_line("inscrits.php", $compte))
  11. {
  12. echo "La suppression des donnees de connexion s'est deroul&eacute;e correctement.";
  13. }
  14.  
  15. else
  16. {
  17. echo "Erreur. veuillez supprimer le compte manuellement via FTP";
  18. }
  19. }
  20.  
  21. else
  22. {
  23. echo "tes pas admin";
  24. }
  25. ?>


 
J'ai donné toutes les permissions a mon fichier (777)
 :cry:


Message édité par Profil supprimé le 24-09-2007 à 18:12:43
Reply

Marsh Posté le 24-09-2007 à 18:11:12    

delete_line() retourne rien.
Certainement évalué à false.

 
Code :
  1. function delete_line($filename, $line_number) {
  2.  $lines = file($filename);
  3.  unset($lines[$line_number - 1]);
  4.  // éventuellement, savoir si ça enregistre bien
  5.  return file_put_contents($filename, implode($lines));
  6. }
 

Et ça marche qu'avec PHP5.
http://fr.php.net/file_put_contents

 

Edit :
On t'a jamais dit d'indenter ton code?

Message cité 1 fois
Message édité par dwogsi le 24-09-2007 à 18:14:34

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 24-09-2007 à 18:14:17    

dwogsi a écrit :

delete_line() retourne rien.
Certainement évalué à false.
 

Code :
  1. function delete_line($filename, $line_number) {
  2.  $lines = file($filename);
  3.  unset($lines[$line_number - 1]);
  4.  // éventuellement, savoir si ça enregistre bien
  5.  return file_put_contents($filename, implode($lines));
  6. }


 
Et ça marche qu'avec PHP5.


 
nn, mais il ne fonctionne pas :|
if (delete_line(...))
{
echo "ca marche !";
}
 
else
{
echo "ca marche pas !...";
}
 
affiche :
ca marche pas !...

Reply

Marsh Posté le 24-09-2007 à 18:16:56    

Une erreur s'affiche?
Niveau d'error_reporting?
Version de php?
La ligne est supprimée dans le fichier?
T'es sûr d'avoir rajouté le return?
T'es sûr que le numéro de ligne que tu indique existe dans le fichier?


Message édité par dwogsi le 24-09-2007 à 18:25:01

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 24-09-2007 à 18:16:56   

Reply

Marsh Posté le 24-09-2007 à 18:20:27    

<?  
include("_protect.php" );
 
if ($protect<"2" )
{
$compte=@$_GET['id']-1;
 
function delete_line($filename, $line_number)
 {  
  $lines = file($filename);  
   unset($lines[$line_number - 1]);  
    file_put_contents($filename, implode($lines));
return file_put_contents($filename, implode($lines));
}
delete_line("inscrits.php", "$compte" );
}
 
else
{
echo "tes pas admin";
}
?>


Message édité par Profil supprimé le 24-09-2007 à 18:21:30
Reply

Marsh Posté le 24-09-2007 à 18:32:30    

Essais cette fonction :

Code :
  1. function delete_line($filename, $line_number)
  2. {
  3.      if(!file_exists($filename))
  4.            return $filename.' introuvable.';
  5.      if(!is_readable($filename))
  6.            return 'lecture de '.$filename.' impossible.';
  7.      if(!is_writeable($filename))
  8.            return 'ecriture de '.ilename.' impossible.';
  9.  
  10.      $lines = file($filename);  
  11.      unset($lines[$line_number - 1]);  
  12.      return file_put_contents($filename, implode($lines));
  13. }


 
En faisant un echo delete_line($filename, $line_number);
Donc essais ce code :

Code :
  1. <?  
  2. include("_protect.php" );
  3.  
  4. function delete_line($filename, $line_number)
  5. {
  6.      if(!file_exists($filename))
  7.            return $filename.' introuvable.';
  8.      if(!is_readable($filename))
  9.            return 'lecture de '.$filename.' impossible.';
  10.      if(!is_writeable($filename))
  11.            return 'ecriture de '.ilename.' impossible.';
  12.  
  13.      $lines = file($filename);  
  14.      unset($lines[$line_number - 1]);  
  15.      return file_put_contents($filename, implode($lines));
  16. }
  17.  
  18. // Pourquoi des " ici?
  19. if ($protect<"2" )
  20. {
  21.     $compte=@$_GET['id']-1;
  22.     
  23.     // Qu'est ce que ça affiche ici???
  24.     echo delete_line("inscrits.php", "$compte" );
  25. }
  26. else
  27. {
  28.     echo "tes pas admin";
  29. }
  30. ?>


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 24-09-2007 à 18:35:24    

Ca n'affiche rien
les "" ? sé pas ! j'y suis habitué ! C'est mieux sans ?


Message édité par Profil supprimé le 24-09-2007 à 18:36:08
Reply

Marsh Posté le 24-09-2007 à 18:40:08    

Mais bordel faudra que je te pose la question combien de fois...
EST CE QUE CETTE FOUTU LIGNE DE MERDE EST SUPPRIMEE DE TON FICHIER???!!!
Merci de regarder cette fois-ci.

 

Edit :
Je suppose que $protect doit être numérique.
On ne peut logiquement pas faire de comparaison entre une donnée numérique et une chaîne (présence de " indique une chaîne).


Message édité par dwogsi le 24-09-2007 à 18:41:19

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 24-09-2007 à 18:52:11    

Non, le fichier ne change pas.
la ligne reste intacte.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed