[Réglé] Boucle d'Update et Zones de texte...

Boucle d'Update et Zones de texte... [Réglé] - PHP - Programmation

Marsh Posté le 02-08-2008 à 19:51:12    

Bonsoir à tous !
 
Voici mon petit problème :
 
J'ai une page avec un tableau où se liste automatiquement tout le contenu d'une table de base de donnée.
Sauf qu'au lieu d'afficher les informations "en texte brut", je les affiche à chaque fois et dans chaque cellule via une zone de texte.
Ainsi, l'utilisateur peut directement modifié le contenu de chaque champs via la zone de texte correspondante.
 
J'aimerai donc placer un bouton en bas de ce tableau, qui, lorsque l'utilisateur cliquerait, mettrait à jour toute la table avec les informations de toutes les zones de textes (qu'elles soient modifiées ou non).
 
J'ai donc commencé mes recherches par le principe connu du système de cases à cocher à coté de chaque lignes pour supprimer celles-ci une fois appuyé sur "Supprimer" plus bas, cela fonctionne mais bon ça n'a rien à voir. J'ai tenté de l'adapter pour qu'il mette à jour les lignes cochées... Mais bon je ne m'en sors pas ^^
 
Bref, voici déjà ma boucle qui forme le tableau avec le contenu de la table concernée (photo_cle/photo_url/photo_legende) :

Code :
  1. $query = "SELECT photo_cle,photo_url,photo_legende FROM album";
  2. while($data = mysql_fetch_array($result)){
  3.  echo "<tr>\n
  4.  <td>INPUT type=text size=30 name=photo_url[] value='".$data['photo_url']."'></td>\n
  5.  <td><INPUT type=text size=30 name=photo_legende[] value='".$data['photo_legende']."'></td>\n
  6.  <td><INPUT type='checkbox' name='modif[]' value='".$data['photo_cle']."'></td>\n
  7.  </tr>\n";
  8. }


 
Et le bidouillage dans la page de traitement...

Code :
  1. $modif = $_POST['modif'] ;
  2. $photo_url = $_POST['photo_url'] ;
  3. $photo_legende = $_POST['photo_legende'] ;
  4. foreach ($modif as $valeur){
  5.  $query="UPDATE 'album' SET photo_url='".$photo_url."',photo_legende='".$photo_legende."' WHERE photo_cle='".$valeur."'";
  6.  $result = mysql_query($query);
  7. }


 
Voilà, j'espère avoir été assez clair ^^
 
Merci d'avance si quelqu'un a une piste d'aide...


Message édité par PtitGenie le 04-08-2008 à 13:25:34
Reply

Marsh Posté le 02-08-2008 à 19:51:12   

Reply

Marsh Posté le 02-08-2008 à 20:07:06    

et sa? (pas testé, montre un print_r($modif); et les 2 autres et coche 1 case)

 
Code :
  1. foreach ($modif as $key => $valeur){
  2.   $query="UPDATE 'album' SET photo_url='".$photo_url[$key]."',photo_legende='".$photo_legende[$key]."' WHERE photo_cle='".$valeur."'";
  3.   $result = mysql_query($query);
  4. }
 

documente toi sur http://fr.php.net/manual/fr/functi [...] string.php sinon c'est pas sécurisé la

Message cité 1 fois
Message édité par ouiouioui10 le 02-08-2008 à 20:09:59
Reply

Marsh Posté le 02-08-2008 à 23:11:43    

Non, çe me met toujours tous les champs vides, "Array" :/
 
Merci pour la doc !


Message édité par PtitGenie le 02-08-2008 à 23:12:05
Reply

Marsh Posté le 02-08-2008 à 23:17:48    

ouiouioui10 a écrit :

montre un print_r($modif); et les 2 autres et coche 1 case)


 

Code :
  1. foreach ($modif2 as $key => $valeur){
  2.  print_r($modif2);
  3.  print_r($photo_url);
  4.  print_r($photo_legende);
  5.     $query="UPDATE 'album' SET photo_url='".$photo_url[$key]."',photo_legende='".$photo_legende[$key]."' WHERE photo_cle='".$valeur."'";
  6.     $result = mysql_query($query);
  7. }


 
Résultat :
Array ( [0] => 1 [1] => 2 ) Array ( [0] => Array ( [0] => blabla [1] => tictic ) ) Array ( [0] => Array ( [0] => tructruc [1] => bbbbb ) ) Array ( [0] => 1 [1] => 2 ) Array ( [0] => Array ( [0] => blabla [1] => tictic ) ) Array ( [0] => Array ( [0] => tructruc [1] => bbbbb ) )  
Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 2.0b1\www\admin_modif_majphotos.php on line 32
 
Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 2.0b1\www\admin_modif_majphotos.php on line 32

 
Petite image de mon tableau...
http://img46.imageshack.us/img46/5011/tabwj3.jpg


Message édité par PtitGenie le 02-08-2008 à 23:19:27
Reply

Marsh Posté le 03-08-2008 à 10:06:38    


Code :
  1. print_r($modif2);
  2. print_r($photo_url);
  3. print_r($photo_legende);
  4.   foreach ($modif2 as $key => $valeur){
  5.         $query="UPDATE 'album' SET photo_url='".$photo_url[0][$key]."',photo_legende='".$photo_legende[0][$key]."' WHERE photo_cle='".$valeur."'";
  6.         $result = mysql_query($query);
  7.     }
 

et la?

 

Pourquoi $photo_url et legende sont un double array

 

si ta clé photo démarrerai par 0:

Code :
  1. print_r($modif2);
  2. print_r($photo_url);
  3. print_r($photo_legende);
  4.   foreach ($modif2 as $valeur){
  5.         $query="UPDATE 'album' SET photo_url='".$photo_url[0][$valeur]."',photo_legende='".$photo_legende[0][$valeur]."' WHERE photo_cle='".$valeur."'";
  6.         $result = mysql_query($query);
  7.     }


et sa serai mieux vu que les array commence à 0 sa évite de se dire array 0 = photo 1 etc et faire des erreurs.


Message édité par ouiouioui10 le 03-08-2008 à 10:16:19
Reply

Marsh Posté le 03-08-2008 à 15:48:33    

Déjà, merci de prendre du temps pour m'aider.
 
Alors, avec le premier code que tu m'as donné, j'ai uniquement :
Array ( [0] => 1 [1] => 2 ) Array ( [0] => Array ( [0] => aaa [1] => ccc ) ) Array ( [0] => Array ( [0] => bbb [1] => ddd ) )
 
Avec l'autre :
Array ( [0] => 1 [1] => 2 ) Array ( [0] => Array ( [0] => aaa [1] => ccc ) ) Array ( [0] => Array ( [0] => bbb [1] => ddd ) )  
Notice: Undefined index: 2 in C:\Program Files\EasyPHP 2.0b1\www\admin_modif_majphotos.php on line 32
Notice: Undefined index: 2 in C:\Program Files\EasyPHP 2.0b1\www\admin_modif_majphotos.php on line 32

 
A savoir qu'à chaque fois je tape :
http://img393.imageshack.us/img393/7070/clipboard03hq4.jpg
 
Et que je me retrouve après avec :
http://img60.imageshack.us/img60/2582/clipboard05yl9.jpg
 
Le problème ne viendrait pas aussi en partie du code où j'attribue les noms/valeurs aux zones de textes du tableau ?

Code :
  1. $query = "SELECT photo_cle,photo_url,photo_legende FROM `$idseance`";
  2. $result = mysql_query($query);
  3. while($data = mysql_fetch_array($result)){
  4.  echo "<tr>\n
  5.  <td><center><INPUT type=text size=30 name=photo_url[] value='".$data['photo_url']."'> ===> <a href='".$idseance."/".$data['photo_url']."' target=_blank>Voir</a></center></td>\n
  6.  <td><center><INPUT type=text size=30 name=photo_legende[] value='".$data['photo_legende']."'></center></td>\n
  7.  <td><center><input type='checkbox' name='modif2[]' value='".$data['photo_cle']."'></center></td>\n
  8.  </tr>\n";
  9. }


Message édité par PtitGenie le 03-08-2008 à 19:12:54
Reply

Marsh Posté le 03-08-2008 à 18:16:16    

euh, le deuxième code peut pas marcher si tu modif pas pour commencer dans ta database avec l'id 0 et non 1 pour la 1er image.

 

le 1er code me semble correct t'est sur que ta bien la même chose dans ta page et ce thread? et tu coche les cases?
Colle tout le code d'un coup :/

 

désolé je vois pas :ouch:


Message édité par ouiouioui10 le 03-08-2008 à 18:17:34
Reply

Marsh Posté le 03-08-2008 à 19:09:31    

Oui oui je copie bien tout à chaque fois !
 
Et si le système de cochage est indépendant ? Que lorsque l'on clique sur Modifier, qu'importe si la case à coté est cochée, cela met quand même à jour... ce serait plus simple ?
 
Rolala, c'est chiant, parce que le système de cochage/suppression des cases cochées fonctionne, et ça ne devrait pas être si éloigné du fonctionnement de la "Modification".
J'aime pô les casses-têtes è_é


Message édité par PtitGenie le 03-08-2008 à 19:12:39
Reply

Marsh Posté le 03-08-2008 à 21:02:24    

à part $key => $val en $key = $val - 1; mon code était bon j'ai testé tu m'a mis le doute! et ceci fonctionne parfaitement:

 
Code :
  1. $mysql = mysql_connect('localhost', "root", '');
  2. mysql_select_db("tdgvegxs" );
  3. if (isset($_POST['cid'])) {
  4. $cid = $_POST['cid'];
  5. $titre = $_POST['titre'];
  6. foreach ($cid as $valeur) {
  7.  $key = $valeur - 1;
  8.  $query = "UPDATE `nuked_team` SET titre='$titre[$key]' WHERE `cid` = $valeur";
  9.  $result = mysql_query($query);
  10. }
  11. }
  12. echo '<form action="test.php" method="post">';
  13. $query = "SELECT cid,titre FROM `nuked_team`";
  14. $result = mysql_query($query);
  15. while ($data = mysql_fetch_array($result)) {
  16. echo "<tr>\n
  17.    <td><center><INPUT type=text size=30 name=titre[] value='" . $data['titre'] . "'></center></td>\n
  18.     <td><center><input type='checkbox' name='cid[]' value='" . $data['cid'] . "'></center></td>\n
  19.    </tr>\n";
  20. }
  21. echo '<input type="submit" value="modif">
  22. </form>';
  23. mysql_close();
 

tes requêtes protège les noms avec ` et les valeurs oublie pas mysql_real_esca...


Message édité par ouiouioui10 le 03-08-2008 à 21:03:11
Reply

Marsh Posté le 03-08-2008 à 21:10:46    

euh j'avais pas vu si tes id se suive pas ex tu supprime le 3 et a le 1 2 4 sa ira pas! mais ceci oui:

Code :
  1. $mysql = mysql_connect('localhost', "root", '');
  2. mysql_select_db("tdgvegxs" );
  3. if (isset($_POST['cid'])) {
  4. $cid = $_POST['cid'];
  5. $titre = $_POST['titre'];
  6. foreach ($cid as $valeur) {
  7.  $query = "UPDATE `nuked_team` SET titre='$titre[$valeur]' WHERE `cid` = $valeur";
  8.  $result = mysql_query($query);
  9. }
  10. }
  11. echo '<form action="test.php" method="post">';
  12. $query = "SELECT cid,titre FROM `nuked_team` LIMIT 3";
  13. $result = mysql_query($query);
  14. while ($data = mysql_fetch_array($result)) {
  15. echo "<tr>\n
  16.    <td><center><INPUT type=text size=30 name=titre[" . $data['cid'] . "] value='" . $data['titre'] . "'></center></td>\n
  17.     <td><center><input type='checkbox' name='cid[]' value='" . $data['cid'] . "'></center></td>\n
  18.    </tr>\n";
  19. }
  20. echo '<input type="submit" value="modif">
  21. </form>';
  22. mysql_close();


Message édité par ouiouioui10 le 03-08-2008 à 21:12:56
Reply

Marsh Posté le 03-08-2008 à 21:10:46   

Reply

Marsh Posté le 03-08-2008 à 21:24:09    

Et bien écoute c'est parfait ! Ca fonctionne nikel ^^ Merci beaucoup beaucoup !
 
Je vais voir pour mysql_real_escape_string, j'espère que ce n'est pas trop compliqué xD

Reply

Marsh Posté le 04-08-2008 à 10:31:57    

rajoute [Réglé] dans le début du titre de ton sujet merci ;)


Message édité par ouiouioui10 le 04-08-2008 à 10:32:19
Reply

Sujets relatifs:

Leave a Replay

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