Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1613 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1768317
PtitGenie
Posté le 02-08-2008 à 19:51:12  profilanswer
 

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
mood
Publicité
Posté le 02-08-2008 à 19:51:12  profilanswer
 

n°1768323
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 02-08-2008 à 20:07:06  profilanswer
 

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
n°1768377
PtitGenie
Posté le 02-08-2008 à 23:11:43  profilanswer
 

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
n°1768379
PtitGenie
Posté le 02-08-2008 à 23:17:48  profilanswer
 

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
n°1768414
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 03-08-2008 à 10:06:38  profilanswer
 


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
n°1768508
PtitGenie
Posté le 03-08-2008 à 15:48:33  profilanswer
 

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
n°1768589
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 03-08-2008 à 18:16:16  profilanswer
 

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
n°1768612
PtitGenie
Posté le 03-08-2008 à 19:09:31  profilanswer
 

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
n°1768644
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 03-08-2008 à 21:02:24  profilanswer
 

à 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
n°1768648
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 03-08-2008 à 21:10:46  profilanswer
 

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
mood
Publicité
Posté le 03-08-2008 à 21:10:46  profilanswer
 

n°1768654
PtitGenie
Posté le 03-08-2008 à 21:24:09  profilanswer
 

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

n°1768750
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 04-08-2008 à 10:31:57  profilanswer
 

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


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Problème avec un update lié à un onclickScript de news qui multiplie les apostrophes dans le texte
Récupérer texte pour envoi par mailKSH Boucle for
AS3: changer le texte, garder le formatage?[résolu] Boucle fichier dans un repertoire
[Réglé] regex qui va pasgérer une boucle en YACC
[Réglé] lire fichier log pendant qu'une application l'écrit[Résolu][C]condition de sortie d'une boucle while = retour chariot
Plus de sujets relatifs à : [Réglé] Boucle d'Update et Zones de texte...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)