Les Allergies
Alimentaires
Posez votre question Signaler

[PHP]Pb formulaire GET [Résolu]

luckyluke44100 24Messages postés 2 juin 2005Date d'inscription - Dernière réponse le 20 juin 2007 à 19:29
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!
Lire la suite 

[PHP]Pb formulaire GET »

35 réponses
Réponse
+0
moins plus
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 ?

@+
luckyluke44100- 1 juil. 2005 à 15:32
Ok , je regarde tout çà de suite!
luckyluke44100Erdnax - 1 juil. 2005 à 16:26
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!
luckyluke44100- 1 juil. 2005 à 15:38
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!
Ajouter un commentaire
Réponse
+0
moins plus
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...
luckyluke44100- 1 juil. 2005 à 15:32
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!
Ajouter un commentaire
Réponse
+0
moins plus
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
luckyluke44100- 1 juil. 2005 à 16:39
oui en fait :
chemin/fichier|desc

et $f_decrit contient chemin/fichier

ok pour rename!
Ajouter un commentaire
Réponse
+0
moins plus
a mon avis il faut juste que tu teste $ligne contient $f_decrit, parce ke la desc sera forcement differente, non ?
luckyluke44100- 1 juil. 2005 à 16:43
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!
Ajouter un commentaire
Réponse
+0
moins plus
pitetre que quand tu lis une ligne, ya \n a la fin ?
luckyluke44100- 1 juil. 2005 à 16:48
ouais bonne idee, j vais essayer avec trim() !
luckyluke44100- 1 juil. 2005 à 17:00
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
Ajouter un commentaire
Réponse
+0
moins plus
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à!
Ajouter un commentaire
Réponse
+0
moins plus
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
luckyluke44100- 1 juil. 2005 à 17:12
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!

++
Ajouter un commentaire
Réponse
+0
moins plus
vi mai ca sera ma derniere semaine
bon Weekend
luckyluke44100- 1 juil. 2005 à 17:16
toi aussi
luckyluke44100- 1 juil. 2005 à 17:23
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é!?
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
luckyluke44100- 1 juil. 2005 à 17:30
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?
Ajouter un commentaire
Réponse
+0
moins plus
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?
Ajouter un commentaire
Réponse
+0
moins plus
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!
Ajouter un commentaire
Réponse
+0
moins plus
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
luckyluke44100- 1 juil. 2005 à 17:48
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?
Ajouter un commentaire
Réponse
+0
moins plus
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
luckyluke44100- 1 juil. 2005 à 17:56
mais le 1 et le 2 c'est sur 2 pages distinctes , on est ok?et 1et 3 c'est les memes pages?
Ajouter un commentaire
Réponse
+0
moins plus
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
luckyluke44100- 1 juil. 2005 à 18:01
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?
Ajouter un commentaire
Réponse
+0
moins plus
ca ma lair bon. cette fois par contre c un vrai ++, je suis en WE now !
Ajouter un commentaire
Réponse
+0
moins plus
ok merci bcp
++
et bon we
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Ce document intitulé « [PHP]Pb formulaire GET » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?