[PHP]Pb formulaire GET

Résolu
luckyluke44100 Messages postés 24 Statut Membre -  
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je m'enerve sur une page php depuis 1 bon moment sans trouver ce qui ne va pas...et c'est pourquoi je sollicite de l'aide!
En fait j'ai une page qui liste des fichiers, leur taille, date et commentaire(ce dernier est contenu dans un fichier texte)!
Quand on veut modifier le commentaire du fichier, on clic et çà envoit en methode GET plein d'infos a une page edit_comments.php!Jusque là pas de problème, mes variables sont bien recup et c'est les bonnes valeurs!Mais quand sur cette page je modifie le commentaire, il est renvoye a la premiere page inchangee (le commentaire n'a pas ete modifié)alors que dans l'url je voit bien qu'il a enregistré les modifications!
Qu'est ce qui ne va pas?
Si quelqu'un a une idée...?

Mon bout de code: page edit_comments.php
if (isset($_GET['chemin']))
{$chemin=$_GET['chemin'];echo $chemin;}
if (isset($_GET['fichier']))
{$fichier=$_GET['fichier'];echo $fichier;}
if (isset($_GET['desc_file']))
{$desc_file=$_GET['desc_file'];echo $desc_file;}
if (isset($_GET['page_origin']))
{$page_origin=$_GET['page_origin'];echo $page_origin;}

echo "<table border='0' cellpadding='8' cellspacing='0'>";
echo "<tr class='paragraph'><td class='default_td'>";
echo "Enter the new description for the file <em>$fichier</em>:";
echo "<form method='get' action='$page_origin'>";
echo "<input type='hidden' name='chemin' value='$chemin'>";
echo "<input type='hidden' name='descFile' value='$desc_file'>";
$res=affiche_description($chemin,$fichier,$desc_file);

if (isset($_GET['comment']) && ($_GET['comment'] !==""))
{
$desc=$_GET['comment'];
		
		?>
		<p><INPUT type='text' name='desc' size='50' value=<?php echo "'".$desc."'" ;?>></p>	
		<?php
		$f_decrit=$chemin.$fichier;
		suppr_ligne_fichier($f_decrit,$desc,$desc_file);
		insertion_ligne_fichier($f_decrit,$desc,$desc_file);
}
		echo'<p><input class="button" type="submit" value="Change" /></p>
		</form></td></tr></table>';


Merci de vos idées!

18 réponses

Résumé de la discussion

Le souci rencontré en PHP est que la page qui liste des fichiers et leurs commentaires (stockés dans un fichier texte) ne met pas à jour le commentaire affiché lorsque l’on soumet le formulaire d’édition. Le code lit le paramètre 'comment' via GET pour déclencher la mise à jour, mais le formulaire envoie le champ sous le nom 'desc', et l’action du formulaire retourne vers la page d’origine sans appliquer la modification. La solution consiste soit à faire le traitement dans la page qui reçoit le formulaire en utilisant le même nom de paramètre que le formulaire (ou à ajuster le nom du champ), soit à rediriger vers une page qui applique la mise à jour avant d’afficher la liste.

Bobot (l'IA à votre service)
  1. Erdnax Messages postés 2279 Statut Contributeur 497
     
    Salut,

    Pourquoi est-ce que tu coupe ton code php au milieu de ta page ?

    (?><p><INPUT type='text' name='desc' ... )

    T'as essayé en continuant avec un echo pour pour ton input ?

    @+
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      Salut,

      Qu'est ce que tu veux dire par continuer avec 1 echo?

      J'ai fait des echo histoire de voir ce qui est passé en parametre mais comme je n'ai rien a afficher sur cette page!

      Effectivement je n'ai pas a couper mon code php au milieu mais je ne pense pas que ce soit le probleme?Tu crois que c çà?
      0
    2. Erdnax Messages postés 2279 Statut Contributeur 497
       
      Sincèrement, je crois pas, mais ça coute rien d'essayer, et j'ai vu des trucs vraiment bizzare des fois ... On sais jamais... (toujours sans trop de convictions)

      Sinon tu peux peut-être voir dans tes fonctions, comme l'a dis Timon...
      0
      1. luckyluke44100 Messages postés 24 Statut Membre > Erdnax Messages postés 2279 Statut Contributeur
         
        Ok , je regarde tout çà de suite!
        0
      2. luckyluke44100 Messages postés 24 Statut Membre > Erdnax Messages postés 2279 Statut Contributeur
         
        Ben en fait j'ai testé la fonction de suppression, elle ne marche pas:(elle ne supprime rien,et qd je met" if ($ligne==$val){ "au lieu de "if ($ligne!=$val){ ", alors elle supprime tout donc le probleme est dans le if, surement avec la comparaison):

        function suppr_ligne_fichier($f_decrit,$desc,$desc_file){
        
        $val="$f_decrit"."|"."$desc";
        
        $fp = fopen($desc_file,"r"); // Ouverture du fichier en lecture, au debut du fichier
        $fp_temp = fopen("temp.txt","w+"); // Ouverture du fichier temporaire
        
        while (!feof($fp)) { // Parcours du fichier
        $ligne = fgets($fp); // On récupère  la ligne
        if ($ligne!=$val){ //si la valeur de la ligne est differente de la val recherchee(a supprimer) on insere ds le fichier temp
        fwrite($fp_temp,$ligne);
        } 
        }
        
        fclose($fp); // Fermeture du fichier
        fclose($fp_temp);
        
        copy("temp.txt",$desc_file); // On recopie le fichier temporaire obtenu
        unlink("temp.txt"); // On l'efface
        
        
        }


        Le but de cette fonction est de supprimer une ligne precise du fichier!Puis comme il s'agit en réalité d'une modification du commentaire,ensuite j'appelle une fonction d'insertion, elle marche celle la mais elle ne prend pas la valeur modifiee du commentaire, elle garde l'ancienne!Mais c'est pas le meme probleme!
        0
    3. luckyluke44100 Messages postés 24 Statut Membre
       
      Non ben j'ai mis :
      echo '<p><input type="text" name="desc" size="50" value="'.$desc.'">';echo"</p>";

      à la place de :
      ?>
      		<p><INPUT type='text' name='desc' size='50' value=<?php //echo "'".$desc."'" ;?>></p>	
      		<?php

      et çà change rien!
      Dc je vais voir les fonctions!
      Apres j reviens sur le forum!(A moins que vous ne voyez d'autres trucs qui ne vont pas entre temps)

      Merci!
      0
  2. Timon1102 Messages postés 354 Statut Membre 109
     
    Voui tisuisse a raison, et comme ila repondu avant moi j'edite mon post pour enlever ma reponse qui etait a coté de la plaque...
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      Salut,
      Ben en fait je me demande si tu n'avais pas raison !

      Car en fait mon affichage sur la premiere page vient directement du fichier texte dc peut etre !
      Je vais voir çà de suite!
      0
  3. Timon1102 Messages postés 354 Statut Membre 109
     
    ton fichier contient
    fichier1|desc1
    fichier2|desc2
    fichier3|desc3

    c'est ca ?
    au fait, il ya la fonction rename() ; qui peut aller plus vite sur la fin, mais c un detail
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      oui en fait :
      chemin/fichier|desc

      et $f_decrit contient chemin/fichier

      ok pour rename!
      0
  4. Timon1102 Messages postés 354 Statut Membre 109
     
    a mon avis il faut juste que tu teste $ligne contient $f_decrit, parce ke la desc sera forcement differente, non ?
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      J'ai testé, c'est identique, même pas un espace ou alors j l'ai pas vu!
      Je pensais plutôt à un problème de syntaxe pour la comparaison ou alors la boucle est pourrie!

      Oui en fait je crois que j'ai pas bien compris ce que tu m'a dit!
      oui la description risque d'etre differente selon le fichier et il n'y a qu'un commentaire par fichier dc oui je pourrais ne tester que la partie chemin+nom fichier mais c'etait pour faire simple sans utiliser explode!
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Timon1102 Messages postés 354 Statut Membre 109
     
    pitetre que quand tu lis une ligne, ya \n a la fin ?
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      ouais bonne idee, j vais essayer avec trim() !
      0
      1. luckyluke44100 Messages postés 24 Statut Membre > luckyluke44100 Messages postés 24 Statut Membre
         
        OK nickel merci!trim() çà marche , il supprime la ligne!
        Maintenant j'ai un probleme avec la fonction d'ajout je pense(apres avoir mis trim() quand meme!Je regarde et je reviens!

        Merci
        0
  7. luckyluke44100 Messages postés 24 Statut Membre
     
    Pas sur que çà marche en fait!Quand j'utilise le code de la fonction dans un autre fichier a part pour tester, çà marche mais pas dans mon vrai!
    Je comprend rien!
    Faut que je fasse chauffer la cervelle là!
    0
  8. Timon1102 Messages postés 354 Statut Membre 109
     
    chauffe,chauffe, mais vas pas te griller un neurone. les miens sont a plat aujourdhui, a pri froid a un concert de suzanne Véga... lol... atchooum
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      Dur dur pour toi, moij'ai pris froid hier soir :grosse biture!En fait y'a des chances que je remette le grillage de neurone a lundi, si t'es toujours ds le coin!

      Merci bien dans tous les cas!

      ++
      0
  9. Timon1102 Messages postés 354 Statut Membre 109
     
    vi mai ca sera ma derniere semaine
    bon Weekend
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      toi aussi
      0
    2. luckyluke44100 Messages postés 24 Statut Membre
       
      Re moi,
      en fait je comprend un peu mieux ce qui se passe:
      la supprression marche tres bien !( c'est juste que comme je la testait dans le fichier d'origine ou l'insertion marche mal, çà me reinserait lameme chose)!

      Dc en fait le probleme c'est que la suppression et l'insertion ont lieu avant que le tout soit posté donc il n'y a pas modification!

      Mais je ne voit pas comment faire l'insertion apres que mon formu GET ai été envoyé!?
      0
  10. Timon1102 Messages postés 354 Statut Membre 109
     
    comme tu a l'air de tou faire ds la mm page c juste un pbd'ordre non ? par exemple tu affiche la description avant de la changer...
    j'ai bon la ?
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      Oui tu as bon, mais:
      Regarde le code de ma page tout en haut:
      suppr_ligne_fichier($f_decrit,$desc,$desc_file);
      insertion_ligne_fichier($f_decrit,$desc,$desc_file);
      }
      		echo'<p><input class="button" type="submit" value="Change" /></p>
      		</form></td></tr></table>';


      comment je peux faire l'insertion (insertion_ligne_fichier() apres le</ form>?

      Je peux pas faire çà, je me trompe?
      0
  11. Timon1102 Messages postés 354 Statut Membre 109
     
    tu peux mettre ton script php de traitement(effacement remplacement) n'importe ou, avant apres ton form si ca te demange, mais il faut juste que tu verifie que le traitement doit etre fait = ke le form a ete soumis.
    si tu raffichedirectement dans ta page le resultat (fichier modifié), il faut bien sur le faire apres le traitement.
    ou pitetre apa compris ton pb?
    0
  12. luckyluke44100 Messages postés 24 Statut Membre
     
    j'explicite pour etre sur qu'on se comprend:

    la premiere page ou il y a les fichiers listés avec leur commentaires: bidule_dpt.php
    la seconde (cf code tout en haut),on y accede en cliquant sur une icone (sur la 1ere page)en face du fichier ou on veut editer/modif le commenatire!
    Du coup toutes les variables necessaires sont postees en GET ds l'url!:cette page c'est edit_comment.php
    Dans cette secponde page, je reaffiche la valeur du commentaire(le vieux) et on peut ecrire dessus !
    Quand on ecrit dessus en theorie j'appelle les fonctions suppression et insertion pour aller bidouiller le fichier texte ou le commentaire se trouve!
    ensuite je renvoi çà a la premiere page:bidule_dpt.php en GET (dans l'url , ou la je vois bien la valeur modifiee du commenatire mais sur la page bidule_dpt.php non)!

    Je ne sais pas si je suis tres claire!?

    Mais en fait p etre que la ou çà va pas c'est que sur la 1ere page:bidule_dpt.php, je me set juste du fuichier texte pour afficher le commentaire dc en fait je ne sais pas pourquoi je lui renvoit en GET, bref je suis embrouillée dc si je ne suis pas claire c'est normal je pense!
    0
  13. Timon1102 Messages postés 354 Statut Membre 109
     
    je crois que tu ne fais pas le traitement dans la bonne page ...?
    Si quand tu change le commentaire, tu soumet ton form et ca te retourne a la liste de fichier, c'est dans cette page kil faut remplacer la ligne
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      oui mais si je fais çà a l'affichage le commentaire ne sera toujours pas modif!Moi je pensais faire:

      1ere page:le vieyux commentaire
      2eme:le vieux que tu modifie direct!il enregistre le nouveau
      3eme:affichage du nouveau

      Non?
      0
  14. Timon1102 Messages postés 354 Statut Membre 109
     
    si, il sera modif si tu commence par ca. fait tes modifs des ouverture de la page, ensuite tu affiches.
    1. vieille page vieux commentaires
    2.form de changements de commentaires
    3.1 reception du form =MAJ des commentaires
    3.2 affichage toubo touneuf
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      mais le 1 et le 2 c'est sur 2 pages distinctes , on est ok?et 1et 3 c'est les memes pages?
      0
  15. Timon1102 Messages postés 354 Statut Membre 109
     
    on est ok. 1et 3 sont les mm, sauf ke dans 3 les variables $_GET sont remplies de bonnes infos sucrées a digérer. donc la page1 (ou 3) est comme ca:
    si isset($_GET['nouvo_comm']), alors je fais mon pti bazar.
    dans tous les cas, apres ce test, j'affiche tout
    0
    1. luckyluke44100 Messages postés 24 Statut Membre
       
      ok!
      Donc pour toi c'est pas genant que je remplisse les valeurs affichees des commentaires depuis 1 fichier texte?Et dans ce cas si il y a qqchose ds get il fait insertion et suppression puis affichage du fichier texte qui a ete modif et sinon il fait affichage ficher texte?
      0
  16. Timon1102 Messages postés 354 Statut Membre 109
     
    ca ma lair bon. cette fois par contre c un vrai ++, je suis en WE now !
    0
  17. luckyluke44100 Messages postés 24 Statut Membre
     
    ok merci bcp
    ++
    et bon we
    0
  18. falman
     
    Bonjour a tous je suis pas un informé du domaine et j'ai un probleme. j'ai un formulaire qui doit recueillir les inforations à inserer dans ma base de donnée. Quand je fait la saisi des infos sur ma machine(utilisée comme serveur) et que je valide; c'est plutot le telechargement de la page php(pour l'insertion) qui se lance. Par contre sur une machine connectée en réseau l'insertion ce fait sans probleme.
    0
  19. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    merci de ne pas polluer des discussions.

    si tu as une question : tu crées ton propre message !

    pour ta réponse : as tu un serveur avec php sur ta machine ?
    0