Page 1 sur 1

problème update du 1er enregistrement

Posté : 28 juin 2006, 10:46
par ahmet
Bonjout tout le monde,

voila mon problème :

a partir des données que je récupère je fais un update d'une table --

Ca fonctionne très bien à part pour le premier enregistrement :
voila le code :
$Output[$j] .= "<form method='POST' name='envoyer$IdIco' ction='envoi_commentaire.php?aydi=$IdIco'>";
// je récupère les valeurs depuis la requete
    $ChampTexte1 = $ctItem["stru_comment1"];
   $ChampTexte2 = $ctItem["stru_comment2"];
   if ($AutoriserEcriture == True)// si on a l'autorisation d'écrire on peut saisir dans les champs et on affiche le bouton pour modifier
   {
      $Output[$j] .= "<td width='3' height='5'><input type='text' name='txtCommentaire1$IdIco' value=\"$ChampTexte1\" maxlength='3' size='3'>";
      $Output[$j] .= "<td width='1%' height='5'><input type='text' name='txtCommentaire2$IdIco' value=\"$ChampTexte2\" size='30'>";
      $Output[$j] .= "<td><input type='submit' name='btnCommentaire2$IdIco' value='$IdIco' style='width:50;height:20;'></td>";
      $Output[$j] .= "</form>";
   }
   else// affichage seulement des champs de saisie et on n'affiche pas le bouton modifier
   {
      $Output[$j] .= "<td width='3' height='5'><input type='text' name='txtCommentaire1$IdIco' value=\"$ChampTexte1\" maxlength='3' size='3' readonly>";
      $Output[$j] .= "<td width='1%' height='5'><input type='text' name='txtCommentaire2$IdIco' value=\"$ChampTexte2\" size='30' readonly>";
      $Output[$j] .= "</form>";
}
Je ne comprend pas pourquoi ca ne fonctionne pas, en fait lorsque je clique sur le bouton de submit, pour tout les enregistrements, ca me renvoie bioen à la page envoie_commentaire.php?aydi=$IdICo sauf pour le premier enregistrement.

Pourtant lors de l'affichage, je récupère bien les bonnes valeurs, même pour le 1er enregis.

Quelqu'un aurait une idée ???

Merci

Posté : 28 juin 2006, 10:55
par Maitrepylos
Bonjour,

Déja il y a une erreur ici
$Output[$j] .= "<form method='POST' name='envoyer$IdIco' ction='envoi_commentaire.php?aydi=$IdIco'>";
A remplacer par
$Output[$j] .= "<form method='POST' name='envoyer$IdIco' action='envoi_commentaire.php?aydi=$IdIco'>";

Posté : 28 juin 2006, 10:58
par Invité
non non ca c'est juste un mauvais copier coller je pense parceque dans mon code j'ai bien action...
sinon ????

pourkoi ca ne fonctionne pas seulement pour le 1er enregistrement.

En fait il ne me renvoie pas a la page qu'il ya dans action pour le premier enregistrement mais pour les autres ca fonctionnne très bien ...

Posté : 28 juin 2006, 11:05
par Ryle
ca me renvoie bioen à la page envoie_commentaire.php?aydi=$IdICo sauf pour le premier enregistrement
Et il te fait quoi exactement le premier formulaire ? rien ? il te renvoi sur une autre page ? il te renvoi sur la bonne page mais n'enregistre rien ? ... :)

Posté : 28 juin 2006, 11:09
par Maitrepylos
Le problème dois se situer au niveau de la requète!

Posté : 28 juin 2006, 11:13
par Invité
Pas de problèlme de requete parceque j'ai vérifié et il me donne bien toute les bonnes infos.


il fait une sorte d'actualisation de page en changeant quelques paramètres. Ca ne change rien sur l'affichage mais il ne me fait pas le update que je dois faire lorsque j'appel la page envoi_commentaire

Posté : 28 juin 2006, 11:23
par Maitrepylos
C'est la page envoi_commentaire qu'on devrais voir, afin de vérifier que tu récupères bien
$_POST[txtCommentaire1$IdIco]

Posté : 28 juin 2006, 11:28
par Invité
voila la page envoi_commentiatre.
je ne pense pas qu'il y ait des problème dans cette page vu que ca fonctionne pour tout les enregistremetn a part le premier mais qui c'est ....
// recupération de l'id, et des commentaires saisit dans l'écran
if (isset($_GET["aydi"])) {$aydi = $_GET["aydi"];}
else{$aydi = 1;}
if (isset($_POST["txtCommentaire2$aydi"])){$Comment2 = $_POST["txtCommentaire2$aydi"];}
else{$Comment2 = "";}
if (isset($_POST["txtCommentaire1$aydi"]))
{$Comment1 = $_POST["txtCommentaire1$aydi"];}
else{$Comment1 = "";}

// ajout d'un slash devant chaque caractère qui en besoins pour etre insérer dans une requete pour les champs de commentaire
$champ1 = addslashes($Comment1);
$champ2 = addslashes($Comment2);
// mise a jour des commentaires de l'id selectionné
$sql = "UPDATE structure SET stru_comment1 = '$champ1', stru_comment2 = '$champ2' WHERE stru_id = $aydi ";
// Erreur si pas réussi update
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// récupération de l'url qui a appelé ce fichier php
$url = $HTTP_REFERER;
// redirection vers cette url
header ("Location: $url");
?>
merci

Posté : 28 juin 2006, 11:52
par Maitrepylos
Peux-tu essayer ceci
$Output[$j] .= "<form method='POST' name='envoyer".".$Idico."."' ction='envoi_commentaire.php?aydi=".$Idico."'>";
// je récupère les valeurs depuis la requete
    $ChampTexte1 = $ctItem["stru_comment1"];
   $ChampTexte2 = $ctItem["stru_comment2"];
   if ($AutoriserEcriture == True)// si on a l'autorisation d'écrire on peut saisir dans les champs et on affiche le bouton pour modifier
   {
      $Output[$j] .= "<td width='3' height='5'><input type='text' name='txtCommentaire1".$Idico."' value=\"$ChampTexte1\" maxlength='3' size='3'>";
      $Output[$j] .= "<td width='1%' height='5'><input type='text' name='txtCommentaire2".$Idico."' value=\"$ChampTexte2\" size='30'>";
      $Output[$j] .= "<td><input type='submit' name='btnCommentaire2".$Idico."' value='".$Idico."' style='width:50;height:20;'></td>";
      $Output[$j] .= "</form>";
   }
   else// affichage seulement des champs de saisie et on n'affiche pas le bouton modifier
   {
      $Output[$j] .= "<td width='3' height='5'><input type='text' name='txtCommentaire1".$Idico."' value=\"$ChampTexte1\" maxlength='3' size='3' readonly>";
      $Output[$j] .= "<td width='1%' height='5'><input type='text' name='txtCommentaire2".$Idico."' value=\"$ChampTexte2\" size='30' readonly>";
      $Output[$j] .= "</form>";
} 
et
      // recupération de l'id, et des commentaires saisit dans l'écran
if (isset($_GET["aydi"])) {$aydi = $_GET["aydi"];}
else{$aydi = 1;}
if (isset($_POST["txtCommentaire2".$aydi.""])){$Comment2 = $_POST["txtCommentaire2".$aydi.""];}
else{$Comment2 = "";}
if (isset($_POST["txtCommentaire1".$aydi.""]))
{$Comment1 = $_POST["txtCommentaire1".$aydi.""];}
else{$Comment1 = "";}

// ajout d'un slash devant chaque caractère qui en besoins pour etre insérer dans une requete pour les champs de commentaire
$champ1 = addslashes($Comment1);
$champ2 = addslashes($Comment2);
// mise a jour des commentaires de l'id selectionné
$sql = "UPDATE structure SET stru_comment1 = '$champ1', stru_comment2 = '$champ2' WHERE stru_id = $aydi ";
// Erreur si pas réussi update
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// récupération de l'url qui a appelé ce fichier php
$url = $HTTP_REFERER;
// redirection vers cette url
header ("Location: $url"); 
      

Posté : 28 juin 2006, 11:59
par Invité
je viens d'essaiyé mais c'est pareil,
ca marche mùais pas pour le premier enregistrement et pareil lorsqsue je veux modifier le premier enregistrement il me fait une sorte de rafraichissmeent de la page en modfiant quelques paramètres.

en fait ca me fait exactement la même chose .

Posté : 28 juin 2006, 12:02
par Ryle
Ca serait pas plutôt :
... name='envoyer" . $Idico . "' ...
:?: :)

Cela dit, entre guillemets, les variables sont interprétées, ca ne devrait donc rien changer. Et puis que le traitement fonctionne sur les autres formulaire et qu'il utiliser toujours la même boucle, c'est au niveau des données qu'il faut chercher le problème.

Affiche nous un "print_r($_POST)" dans la page qui gère les enregistrement lorsque tu soumets le premier formulaire, puis envoi le 2ème pour comparer les différences entre les deux :)