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

  FORUM HardWare.fr
  Programmation
  PHP

  Faire un choix multiple avec une bdd

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire un choix multiple avec une bdd

n°1328789
jenny50
Posté le 20-03-2006 à 13:47:48  profilanswer
 

Bonjour à tous,  
 
Je ne m'en sors pas. Je cherche à faire un formulaire de saisi avec un champ destinataires ou la réponse peut être unique ou multiple. Le hic est que dans ma bdd quand je valide il ne sélectionne que ma dernière checkbox sélectionner, il ne regarde pas s'il y en a d'autre.
 
Voici mon code de création d'un message avec la TR qui correspond au champ "destinataires". Pourriez-vous m'aider??
 

Code :
  1. $sql = "INSERT INTO messages (mess_titre, mess_date, mess_message, mess_emetteur, mess_dest) VALUES ( ";
  2.  $sql = $sql . " ' ".$_POST['mess_titre']." ', ' ".$_POST['mess_date']." ', ' ".$_POST['mess_message']." ', ' ".$_POST['mess_emetteur']." ', ' ".$_POST['mess_dest']." ') ";
  3.  $qry = pg_query ( $conn,$sql);


Code :
  1. <tr>
  2.  <td align="right" id="formulaire">Destinataire(s) du message</td>
  3.  <td align="left" id="formulaire">
  4.   <?
  5.   $sql = " SELECT grp_cle, grp_lib FROM grputi";
  6.   $qry = pg_query($conn, $sql);
  7.   while ($result = pg_fetch_object($qry))
  8.    {
  9.   ?>
  10.   <input type="checkbox" name="mess_dest<? for ($i=0; $i>5; $i++) { echo $i; }?>" value="<?=$result->grp_cle?>" <? if ($result->grp_cle == ''.$fetch->mess_dest.'') { echo 'checked'; } ?>><?=$result->grp_lib?>
  11.   <? } ?>
  12.  </td>
  13. </tr>

mood
Publicité
Posté le 20-03-2006 à 13:47:48  profilanswer
 

n°1328823
j_lecruel
☀ ☁ ☂
Posté le 20-03-2006 à 14:31:55  profilanswer
 

Tu n'aurais pas déjà posé cette question par hasard...?
 

Code :
  1. <input type="checkbox" name="mess_dest[<? for ($i=0; $i>5; $i++) { echo $i; }?>]"


 
En nommant dtes checkbox de cette façon tu récupèreras un tableau contenant les valeur de celles qui auront été cochées, après tu n'a plus qu'à faire une boucle pour parcourir ces valeurs.


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1328839
omega2
Posté le 20-03-2006 à 14:56:09  profilanswer
 

j_lecruel > Ca sert à rien de mettre un indice pour un élément de formulaire. Tu fais simplement

Code :
  1. <input type="checkbox" name="mess_dest[]" value="labonnevaleur">letexte</input>

et php mettra les bons indice comme il faut. En plus, avec ton code, tu donais le même indice à tout le monde, ca aurait pas mieux marché que ce qu'il avait fait.
 
PS : A noter qu'il faut modifier "labonnevaleur" et "letexte".

n°1328841
j_lecruel
☀ ☁ ☂
Posté le 20-03-2006 à 15:02:39  profilanswer
 

Exact, j'ai même pas percuté qu'elle faisait une boucle.


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1328844
jenny50
Posté le 20-03-2006 à 15:12:14  profilanswer
 

ok les garçons mais si je fais ça, cela ne fonctionne pas avec mon premier bout de code correspondant  ma requete...
 
Il faut que je change qqch ici, non?

Code :
  1. 1.
  2.       $sql = "INSERT INTO messages (mess_titre, mess_date, mess_message, mess_emetteur, mess_dest) VALUES ( ";
  3.    2.
  4.               $sql = $sql . " ' ".$_POST['mess_titre']." ', ' ".$_POST['mess_date']." ', ' ".$_POST['mess_message']." ', ' ".$_POST['mess_emetteur']." ', ' ".$_POST['mess_dest']." ') ";
  5.    3.
  6.               $qry = pg_query ( $conn,$sql);

n°1328898
j_lecruel
☀ ☁ ☂
Posté le 20-03-2006 à 16:32:02  profilanswer
 


Code :
  1. $mess_dest= (isset($_POST['mess_dest'])&&!empty($_POST['mess_dest'])) ? $_POST['mess_dest'] : false;
  2. if(is_array($mess_dest)) {
  3.    foreach($mess_dest as $dest) {
  4.       $sql = "INSERT INTO messages (mess_titre, mess_date, mess_message, mess_emetteur, mess_dest)
  5.                 VALUES ('".$_POST['mess_titre']."', '".$_POST['mess_date']."',
  6.                             '".$_POST['mess_message']."', '".$_POST['mess_emetteur']."', '".$dest."')";
  7.       $qry = pg_query ( $conn,$sql);   
  8.    }
  9. }


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1328925
jenny50
Posté le 20-03-2006 à 17:08:13  profilanswer
 

OK c'est cool ça fonctionne, c'est exactement ce que je voulais... Tu es trop fort...  
Je vais me tester car j'ai une partie fonction modif...  
 

Code :
  1. global $conn,$mess,$titre;
  2.  $sql = " UPDATE messages SET mess_titre = ' ".$_POST['mess_titre']." ', ";
  3.  $sql .= " mess_date = ' ".$_POST['mess_date']." ', ";
  4.  $sql .= " mess_message = ' ".$_POST['mess_message']." ', ";
  5.  $sql .= " mess_emetteur = ' ".$_POST['mess_emetteur']." ', ";
  6.  $sql .= " mess_dest = ' ".$_POST['mess_dest']." ' ";
  7.  $sql .= " WHERE mess_cle = ".$_GET['cle']." ";
  8.  $qry = pg_query($conn,$sql);

n°1328928
jenny50
Posté le 20-03-2006 à 17:12:52  profilanswer
 

j'ai oublié de te demander...
 
En gros le code que tu m'as donné ça veut dire quoi en français pour être sur que je comprenne bien et surtout pouvoir aider les autres plus tard

n°1328947
j_lecruel
☀ ☁ ☂
Posté le 20-03-2006 à 17:33:13  profilanswer
 

En gros dans la première ligne tu récupère les destinataires sélectionnés, ensuite dans le foreach tu balaye chacun de ces destinataires et tu insère le message dans la base de données.
 
 
Edit : par rapport à ton dernier post, le recours aux variables globales est à éviter autant que possible (dans ton cas il vaux mieux que tu passe les variables dont tu auras besoin en paramètre de ta fonction).


Message édité par j_lecruel le 20-03-2006 à 17:34:48

---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1329250
jenny50
Posté le 21-03-2006 à 09:21:33  profilanswer
 

depuis hier soir j'ai essayé plusieurs choses mais je n'arrive pas à changer mon dernier post pour que ça fonctionne correctement.
 
Pourriez-vous une nouvelle fois m'aider?? Non pas que je suis fainéante, mais je veux comprendre la logique sans trop m'embrouiller dans des essais et tout mélanger !!
 
Merci d'avance

mood
Publicité
Posté le 21-03-2006 à 09:21:33  profilanswer
 

n°1329258
j_lecruel
☀ ☁ ☂
Posté le 21-03-2006 à 09:31:09  profilanswer
 

Salut,
 
déjà il est plutôt déconseillé (niveau sécurité) d'utiliser directement les variables envoyées par le client ($_POST['var']) dans les requêtes SQL.
 
Ensuite pour faire ce que tu veux... tu fournis en paramètre de ta fonction les destinataires sous formes de tableau, et tu fais ta boucle dans ta fonction pour parcourir ces destinataires et insérer les messages dans ta base de données.
 
En fait je vois pas trop ce qui te pose problème...


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1329266
jenny50
Posté le 21-03-2006 à 09:45:17  profilanswer
 

Ben en fait c'est moi qui merdouille je ne t'ai pas dit que sur cette page en fait y'avais la fonction création que tu m'a gentilment modifier et la fonction modification que je te redonne. Peux-tu m'éclairer??

Code :
  1. function modif (){
  2.  global $conn,$mess,$titre;
  3.  $sql = " UPDATE messages SET mess_titre = ' ".$_POST['mess_titre']." ', ";
  4.  $sql .= " mess_date = ' ".$_POST['mess_date']." ', ";
  5.  $sql .= " mess_message = ' ".$_POST['mess_message']." ', ";
  6.  $sql .= " mess_emetteur = ' ".$_POST['mess_emetteur']." ', ";
  7.  $sql .= " mess_dest = ' ".$_POST['mess_dest']." ' ";
  8.  $sql .= " WHERE mess_cle = ".$_GET['cle']." ";
  9.  $qry = pg_query($conn,$sql);
  10.  header("Location:adm_listmess.php?mess=5" );
  11.  exit;
  12. }

n°1329273
j_lecruel
☀ ☁ ☂
Posté le 21-03-2006 à 09:54:14  profilanswer
 

Euh... pas évident de répondre sans connaitre un peu la structure de ta base,  mais à priori tu procèdes de la même manière, tu boucle sur test destinataires en exécutant la requête de modification pour chacun d'eux :
 

Code :
  1. foreach($mess_dest as $dest) {
  2.    $sql = "UPDATE messages SET [...], mess_dest='".$dest."' [...] ";
  3. }


---------------
♈ ♋ ♌ ♍ ♎ ♏ - Agora Fidelio | Galerie d'art Toulousaine
n°1329281
jenny50
Posté le 21-03-2006 à 10:21:45  profilanswer
 

c'est ce que j'avais essayer mes ça ne fonctionne pas.
voici mon code

Code :
  1. function creat (){
  2.  global $conn,$mess,$titre;
  3.  $mess_dest= (isset($_POST['mess_dest'])&&!empty($_POST['mess_dest'])) ? $_POST['mess_dest'] : false;
  4.  if(is_array($mess_dest))
  5.   {
  6.   foreach($mess_dest as $dest)
  7.    {
  8.    $sql = "INSERT INTO messages (mess_titre, mess_date, mess_message, mess_emetteur, mess_dest) VALUES ('".$_POST['mess_titre']."', '".$_POST['mess_date']."', '".$_POST['mess_message']."', '".$_POST['mess_emetteur']."', '".$dest."')";
  9.    $qry = pg_query ( $conn,$sql);   
  10.    }
  11.   }
  12.  header("Location:adm_listmess.php?mess=4" );
  13.  exit;
  14. }
  15. function modif (){
  16.  global $conn,$mess,$titre;
  17.  $mess_dest= (isset($_POST['mess_dest'])&&!empty($_POST['mess_dest'])) ? $_POST['mess_dest'] : false;
  18.  if(is_array($mess_dest))
  19.   {
  20.   foreach($mess_dest as $dest)
  21.    {
  22.    $sql = " UPDATE messages SET mess_titre = ' ".$_POST['mess_titre']." ', ";
  23.    $sql .= " mess_date = ' ".$_POST['mess_date']." ', ";
  24.    $sql .= " mess_message = ' ".$_POST['mess_message']." ', ";
  25.    $sql .= " mess_emetteur = ' ".$_POST['mess_emetteur']." ', ";
  26.    $sql .= " mess_dest = ' ".$dest." ' ";
  27.    $sql .= " WHERE mess_cle = ".$_GET['cle']." ";
  28.    $qry = pg_query($conn,$sql);
  29.    }
  30.   }
  31.  header("Location:adm_listmess.php?mess=5" );
  32.  exit;
  33. }
  34. if (isset($_GET['cle'])){
  35. $sql = 'SELECT * FROM messages WHERE mess_cle = ' . $_GET['cle'] ;
  36. $qry = pg_query ($conn,$sql);
  37. $fetch = pg_fetch_object ($qry);
  38. }


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

  Faire un choix multiple avec une bdd

 

Sujets relatifs
Probleme de séléction multipleLimiter le choix de SET a quelques caracteres
Formulaire à choix multiple (PHP/SQL)Liste deroulante à choix multiple
[HTML] Combo box choix multiple[Javascript] Combo box choix multiple
ComboBox à choix multipleListe déroulante à choix multiple
upload + choix multipleappeler une fct JS apres selection d`un choix multiple ? [RESOLU]
Plus de sujets relatifs à : Faire un choix multiple avec une bdd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR