traitement update d'après tableau (array) - php

traitement update d'après tableau (array) - php - PHP - Programmation

Marsh Posté le 19-01-2010 à 12:49:11    

Bonjour,
 
Je n'arrive pas à enregistrer des donnés issus d'un array.  :??:  
"idph" représente l'identifiant unique de l'enregistrement. "commentaire" représente le commentaire de l'enregistrement qui va être modifié et mis à jour dans la base.
Première étape : j'affiche des textes (commentaires) issus d'une base de donnée mysql, et j'ai le moyen de les modifier :
 

Code :
  1. echo '<center>';
  2. while($row2 = mysql_fetch_array($result2))
  3. {
  4. echo '<form action="modif_com.php?idph='. $row2['idph'] .' & commentaire='. $row2['commentaire'] .'"  method="POST" value="envoyer" name="soumettre">';
  5.    echo '<img border=0 height="50" src="../../images/photos_alb/' . $row2['photo'] . '"><input name="'. $row2['idph'] . '" type="text" id="commentaire_' . $row2['idph'] . '" value="'.$row2['commentaire'] .'" size="150" maxlength="250">';
  6. }
  7. echo '<input type="submit" value="envoyer" /></center>';
  8. echo '</form></center>';


 
Deuxième étape : je récupère les variables, et j'enregistre les commentaires modifiés dans la base :
 

Code :
  1. $idph = $_POST["idph"];
  2.     $commentaire = $_POST["commentaire"];
  3. if( isset($_POST['commentaire']) )
  4. {
  5.    //Boucle sur les valeurs
  6.  foreach($_POST['commentaire'] as $idph => $commentaire)
  7. {
  8.  
  9.     //Requête d'update de la photo pointée par idph
  10.     $requete = 'UPDATE photos SET commentaire='.$commentaire.' WHERE idph='.$idph;
  11.     $result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
  12. }
  13. }
  14. mysql_free_result($result);


 
Si je teste la récupération de mes valeurs $_POST, j'ai ceci (pour 2 enregistrements) :
 
Array
(
    [11] => imge 1
    [12] => aaaaaaaaaaaaaaaa
)

 
Entre-crochet représente l'idph, et après "=>", représente le commentaire.
 
Mais je n'ai pas de mise à jour de la base, et pas de message d'erreur !  :(  
 
Merci pour l'aide que vous m'apporterez ...  :)

Reply

Marsh Posté le 19-01-2010 à 12:49:11   

Reply

Marsh Posté le 19-01-2010 à 14:29:52    

essaye déjà de rajouté en début de ton programme un  
 

Code :
  1. error_reporting(E_ALL);


 
Tu sera informer si tu utilise des variables indéfinit.
 
Puis valide que ton code passe dans le foreach, place dans le foreach des  
echo "passage dans le foreach avec les valeurs :  $idph   $commentaire "  
 
 
autre très bon code de débugage :
echo '<pre>'; print_r($_POST); echo '</pre>';


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 19-01-2010 à 15:20:43    

PierreC a écrit :

essaye déjà de rajouté en début de ton programme un  
 

Code :
  1. error_reporting(E_ALL);


 
Tu sera informer si tu utilise des variables indéfinit.
 
Puis valide que ton code passe dans le foreach, place dans le foreach des  
echo "passage dans le foreach avec les valeurs :  $idph   $commentaire "  
 
 
autre très bon code de débugage :
echo '<pre>'; print_r($_POST); echo '</pre>';


 
Bonjour pierreC, et merci de m'aider.
Pour le error_reporting(E_ALL);, je ne connais pas et ne sait pas comment ça fonctionne. Je l'ai mis en début de 2° script, mais rien ???
Pour les echo dans le foreach, peux-tu me montrer comment placer la récupération des valeurs $idph   $commentaire  ?
Et pour le '<pre>'; print_r($_POST); echo '</pre>';[/quotemsg] c'est ce que j'avais mis après les $_POST, et j'ai pu constaté que mes variables étaient bien présente dans l'array :
 
Array  
(  
    [11] => imge 1  
    [12] => aaaaaaaaaaaaaaaa  
)  

Reply

Marsh Posté le 19-01-2010 à 17:15:07    

t671 a écrit :


 
Bonjour pierreC, et merci de m'aider.
Pour le error_reporting(E_ALL);, je ne connais pas et ne sait pas comment ça fonctionne. Je l'ai mis en début de 2° script, mais rien ???


 
Si y'a rien c'est que c'est bon :-) tu n'utilise aucune variable indéfini

t671 a écrit :


 
Pour les echo dans le foreach, peux-tu me montrer comment placer la récupération des valeurs $idph   $commentaire  ?
 


 

Code :
  1. foreach($_POST['commentaire'] as $idph => $commentaire)
  2. {
  3.   echo "passage dans le foreach avec les valeurs :  $idph et  $commentaire "  ;
  4.  
  5.      //Requête d'update de la photo pointée par idph
  6.      $requete = 'UPDATE photos SET commentaire='.$commentaire.' WHERE idph='.$idph;
  7.      $result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
  8. }


 
 
[quotemsg=1958761,3,309144]
Si là par contre rien ne s'affiche y'a un problème, tu n'entre pas dans le foreach.
 


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 19-01-2010 à 17:17:46    

AHH mais bete que je suis  
 
Ton print_r($_POST) indique  


Array  
(  
    [11] => imge 1  
    [12] => aaaaaaaaaaaaaaaa  
)  


 
Mais tu veux lire $_POST['commentaire']  qui n'existe pas :
 
Ton donc est donc tout simplement :
 


 if( isset($_POST) )
 {
    //Boucle sur les valeurs
  foreach($_POST as $idph => $commentaire)
 {
   
     //Requête d'update de la photo pointée par idph
     $requete = 'UPDATE photos SET commentaire='.$commentaire.' WHERE idph='.$idph;
     $result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
 }
 }
 


 
 
qu'est ce que ca donne ?


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 19-01-2010 à 17:42:25    

Mettre des quotes autours des chaines de caracteres dans les ordres sql est rarement debile.

Reply

Marsh Posté le 19-01-2010 à 17:57:02    

Merci pierreC ..........  :bounce:  
Ca fonctionne ..........   :)  
 
 :hello:

Reply

Marsh Posté le 21-01-2010 à 10:56:57    

Bonjour ! Encore une tit' question .....
 
Quand je saisi un texte à enregistrer dans ma base, celui-ci est bien enregistré. Par contre, il n'y a que les 42 premiers caractères qui sont affichés.
 
Voilà mon script qui affiche :
 

Code :
  1. echo '<center>';
  2. while($row2 = mysql_fetch_array($result2))
  3. {
  4. echo '<form action="modif_com.php?idph='. $row2['idph'] .' & commentaire='. $row2['commentaire'] .'"  method="POST" value="envoyer" name="soumettre">';
  5.    echo '<img border=0 width="80" src="../../images/photos_alb/' . $row2['photo'] . '">     
  6.      <input name="'. $row2['idph'] . '" type="text" id="commentaire_' . $row2['idph'] . '" value="'.$row2['commentaire'] .'" size="150" maxlength="6000"><p>';
  7.  echo '<input type="submit" value="Valider">';
  8.  echo '<input type="button" name="lien" value="Annuler" onClick="self.location.href=\'aff_alb_photos.php\'">';
  9.  }
  10. echo '</center></form>';


 :whistle:


Message édité par t671 le 21-01-2010 à 10:57:32
Reply

Marsh Posté le 21-01-2010 à 10:58:09    

Quelle taille fait ton champ en base de données ?


---------------

Reply

Marsh Posté le 21-01-2010 à 11:03:06    

flo850 a écrit :

Quelle taille fait ton champ en base de données ?


 Il est défini en "TEXT". Donc il n'y a pas de taille de définie.
Mais j'y pense : les " " sont-ils acceptés comme du texte ?  :heink:

Reply

Marsh Posté le 21-01-2010 à 11:03:06   

Reply

Marsh Posté le 21-01-2010 à 11:13:54    

flo850 a écrit :

Quelle taille fait ton champ en base de données ?


 
Ben non, c'est pas ça !!! J'ai défini le champs en VARCHAR 6000, et c'est pareil ....  :(  
 
C'est quand même bizarre .....  :pt1cable:

Reply

Marsh Posté le 21-01-2010 à 11:20:23    

La balise <center> :love:


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 21-01-2010 à 11:30:52    

j'avais pas lu ton code en détail  
 
afficher directement les donénes de la base de données c'ets mal ( par exemple si ton champ contient du javascript  ça va s'executer
 
utilise htmlentites


---------------

Reply

Marsh Posté le 21-01-2010 à 11:36:21    

flo850 a écrit :

j'avais pas lu ton code en détail  
 
afficher directement les donénes de la base de données c'ets mal ( par exemple si ton champ contient du javascript  ça va s'executer
 
utilise htmlentites


 
Pour kao98, ce n'est pas la balise CENTER !
 
Pour flo850 : je comprend pas ce que tu veux me dire ???  :??:  

Reply

Marsh Posté le 21-01-2010 à 11:40:35    

flo850 a écrit :

j'avais pas lu ton code en détail  
 
afficher directement les donénes de la base de données c'ets mal ( par exemple si ton champ contient du javascript  ça va s'executer
 
utilise htmlentites


 
J'ai trouvé ..... Mon script n'affiche pas les " ".
Comment palier à cela ????

Reply

Marsh Posté le 21-01-2010 à 11:41:25    

t671 a écrit :


 
Pour kao98, ce n'est pas la balise CENTER !
 
Pour flo850 : je comprend pas ce que tu veux me dire ???  :??:  


Ha mais j'essayais pas de t'aider hein ! Je me foutais de la gueule de ton code, c'est tout !
 
T'es complètement largué. Tu ferais mieux de reprendre tout par le commencement, avec de bonnes bases. Trouve toi de bons bouquin pour débuter le développement, le dev web, et tout ce qu'il faut, et ça ira beaucoup mieux ensuite.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 21-01-2010 à 11:41:55    

au lieu de value="'.$row2['commentaire'] .'"
tu dois utiliser value="'.htmlentities($row2['commentaire']) .'"


---------------

Reply

Marsh Posté le 21-01-2010 à 11:44:29    

kao98 a écrit :


Ha mais j'essayais pas de t'aider hein ! Je me foutais de la gueule de ton code, c'est tout !
 
T'es complètement largué. Tu ferais mieux de reprendre tout par le commencement, avec de bonnes bases. Trouve toi de bons bouquin pour débuter le développement, le dev web, et tout ce qu'il faut, et ça ira beaucoup mieux ensuite.


comportement très intelligent  
surtout que tu n'as même pas la décence de lui donner une piste sur un bon bouquin ( en php il y en a peu ) ou de bonnes sources


---------------

Reply

Marsh Posté le 21-01-2010 à 11:50:51    

kao98 a écrit :


Ha mais j'essayais pas de t'aider hein ! Je me foutais de la gueule de ton code, c'est tout !
 
T'es complètement largué. Tu ferais mieux de reprendre tout par le commencement, avec de bonnes bases. Trouve toi de bons bouquin pour débuter le développement, le dev web, et tout ce qu'il faut, et ça ira beaucoup mieux ensuite.


 
Je fais des pages web pour le plaisir, par occupation, parceque ça me plait ! Pas pour le boulot !!! Je n'ai rien à gagner ..... !
Maintenant, sur ta réaction je préfères ne rien dire. Rester poli et aimable par respect pour tous ceux qui fréquentes ce site !  :kaola:

Message cité 1 fois
Message édité par t671 le 21-01-2010 à 11:55:17
Reply

Marsh Posté le 21-01-2010 à 11:52:50    

flo850 a écrit :


comportement très intelligent  
surtout que tu n'as même pas la décence de lui donner une piste sur un bon bouquin ( en php il y en a peu ) ou de bonnes sources


Suis blasé aujourd'hui.
Les gens qui sortent "je connais pas error_reporting" et qui ne prennent pas la peine de chercher sur google, ça me gonfle. :/


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 21-01-2010 à 11:53:11    

t671 a écrit :


 
Je fais des pages web pour le plaisir ! P


Et ça n'empêche pas d'apprendre à le faire correctement !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 21-01-2010 à 11:56:09    

kao98 a écrit :


Et ça n'empêche pas d'apprendre à le faire correctement !


 j'avais pô fini ..........  :kaola:

Reply

Marsh Posté le 21-01-2010 à 11:59:17    

t671 a écrit :


 j'avais pô fini ..........  :kaola:


Bon, ok. Désolé. Je m'excuse.
Au moins, maintenant, tu connais le fond de ma pensée !
Si tu veux apprendre à faire du dev web, même pour le plaisir, apprend à le faire bien (reprend donc les bases !!!). Ce ne sera que plus gratifiant tu crois pas ?
 
Au départ, j'essayais de te faire réagir quant à la balise <center>. C'est une balise qui ne devrait plus être utilisée. Elle est d'un autre âge, d'une autre époque !


Message édité par kao98 le 21-01-2010 à 11:59:29

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 21-01-2010 à 12:29:21    

flo850 a écrit :

au lieu de value="'.$row2['commentaire'] .'"
tu dois utiliser value="'.htmlentities($row2['commentaire']) .'"


 
Merci flo850 ...  :)   :hello:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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