[PHP]Pb formulaire GET
Résolugryzzly Messages postés 5220 Date d'inscription Statut Contributeur Dernière intervention -
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
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.
-
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 ?
@+
-
-
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...
- 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!
-
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!
-
-
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...
-
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 -
a mon avis il faut juste que tu teste $ligne contient $f_decrit, parce ke la desc sera forcement differente, non ?
-
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!
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
pitetre que quand tu lis une ligne, ya \n a la fin ?
-
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à! -
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
-
-
-
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é!?
-
-
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 ?-
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?
-
-
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? -
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! -
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 -
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 -
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 -
ca ma lair bon. cette fois par contre c un vrai ++, je suis en WE now !
-
-
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.
-
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 ?