encore une histoire de checkbox à choix multiple

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : encore une histoire de checkbox à choix multiple

par Alexdu62 » 29 janv. 2009, 02:47

J'ai oublier de préciser, que l'exemple ci-dessus, la Q2 et Q3 sont soumis à choix multiples et non la Q1

par Alexdu62 » 29 janv. 2009, 02:45

Bonsoir à tous :)

Désolé de déterrer un si vieux post, mais j'ai un petit souci.

Je réalise un questionnaire, auquel il y aura plusieurs questions à choix multiples.

J'ai donc suivi les instructions de ce topic et ca fonctionne :)
La ou ca devient compliqué et que je me heurte à un pb, c'est dès que je veux généralisé le code pour d'autres questions :s

J'ai fait ceci, mais ca ne marche pas :-/

Code : Tout sélectionner

<? @include("bdd.php"); // affichage sélection $sql = "INSERT INTO nightfly_sondage (Q1, Q2, Q3) VALUES('".$Q1."','"; if (!empty($Q2)) { foreach($Q2 as $cle => $valeur) { $sql .= "".$valeur.", "; } if (!empty($Q3)) { foreach($Q3 as $cle => $valeur) { $sql .= "".$valeur.", "; } } } $sql = substr($sql, 0, -2); // on rajoute une parenthèse $sql .= ''; $sql .="')"; echo $sql; mysql_query($sql); ?>
Merci d'avance pour l'aide :)

par yola26 » 15 sept. 2005, 17:25

ca y é ca marche enfin !!!!! cé pa trop tot !

bon je poste mon code manquant :
// affichage sélection
$sql = "INSERT INTO " . $table . "(titre, description, utilisateur, probleme) VALUES('" . $titre . "','" . $description . "','" . $utilisateur . "','";
if (!empty($probleme)) {
     foreach($probleme as $cle => $valeur) {
         $sql .= "".$valeur.", ";

     }
}

$sql = substr($sql, 0, -2);

// on rajoute une parenthèse

$sql .= '';
$sql .="')";
echo $sql;



mysql_query($sql);
et un grand merci à toi ouckileou d'avoir pris le temps de nous expliquer même si tout nous as fait chercher c'est une bonne chose car tu nous as orienté de façon à ce que l'on se creuse les menages pour trouver le résultat final par nous même ! Congratulations :wink:

par yola26 » 15 sept. 2005, 16:34

oki si ca marche jte fé un gro post de remerciement, des moments le php cé vraiment prise de tete lol mais on aime ca :D

par ouckileou » 15 sept. 2005, 16:24

tu ne me déranges pas, mais tu as déjà un exemple de concaténation ici dans la boucle

.= est une concaténation

sauf qu'ici tu concatènes les valeurs en les séparant par des ' et des ,
ce qui fait que ta requête SQL sera fausse
il faudrait n'en faire qu'une seule chaine, en séparant les valeurs par des virgules, et en entourant toute la chaine par des '

pour l'instant tu as :
'val1', 'val2', 'val3'

et il te faudrait, pour tout mettre dans le même champ:
'val1, val2, val3'

par yola26 » 15 sept. 2005, 15:50

bon jvé me renseigner sur la facon de concatenes, jte remercie de l'aide fourni jvé essayer de me débrouiller pour pa te déranger de nouveau :D

par ouckileou » 15 sept. 2005, 15:32

la parenthèse se met à la fin
// affichage sélection
$sql = "INSERT INTO " . $table . "(titre, description, utilisateur, probleme) VALUES('" . $titre . "','" . $description . "','" . $utilisateur . "',";
if (!empty($probleme)) {
     foreach($probleme as $cle => $valeur) {
         $sql .= "'".$valeur."' ";
     }
}
$sql = substr($sql, 0, -2);
// on rajoute une parenthèse
$sql .= ')';
echo $sql;
mais là, c'est tjrs la même chose, tu crées directement la requête, comme si chaque valeur allait dans une colonne distincte
mais tu ne les concatènes pas ensemble

par yola26 » 15 sept. 2005, 15:28

oui le but est d'enregistrer dans la meme colonne en les concaténant et je n'arrive toujours pas à savoir ou je mets ma parenthese si tu peux me poster la correction car la je suis vraiment perdu et je ne comprend plus rien


<?php

    // déclaration de quelques variables
    $host = "xxx";
    $user = "xxx";
    $pass = "";
    $bdd = "xxx";
    $table = "xxx_xxx";

 // connection avec MySQL
    @mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données"); // Le @ indique à php de ne pas afficher de message d'erreur
    @mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");


 $titre = addslashes($_POST['titre']);
 $description = addslashes($_POST['description']);
 $utilisateur = $_POST['utilisateur'];
 $probleme = $_POST['probleme'];




    // affichage sélection
 $sql = "INSERT INTO " . $table . "(titre, description, utilisateur, probleme) VALUES('" . $titre . "','" . $description . "','" . $utilisateur . "',";
 if (!empty($probleme)) {
     foreach($probleme as $cle => $valeur) {
         $sql .= "'".$valeur."' ";
     }
 }
 echo $sql;
 $sql = substr($sql, 0, -2);
// on execute
mysql_query($sql);
 $res = mysql_query($sql);



    // stockage dans la bdd




    // déconnection avec MySQL
    mysql_close();

 echo "Sauvegarde réussite";

     ?>

par ouckileou » 15 sept. 2005, 15:14

tu pourrais enregistrer toutes ces données dans la même colonne, mais en une seule fois, en les concaténant dans une même chaine
or ici tu les enregistres séparément, donc il faudrait un nombre de colonnes correspondant

mais si tu dois stocker plusieurs valeurs dans une seule colonne, il doit y avoir un problème de conception quelque part

lorsqu'il y a répétition des données, plusieurs valeurs dans une même colonne, ou plusieurs colonnes sensiblement identiques, alors il y a un problème

par yola26 » 15 sept. 2005, 15:02

sui j'ai bien compris je ne peux pas rentrer les données imprimante, scanner, portable etc.. dans le même champs ? je suis obligé de créer autant de champs spécifiques que j'ai de données multiples par rapport aux checkboxc donc ?

par ouckileou » 15 sept. 2005, 14:55

il faut rajouter la parenthèse à la fin, en fait enlever l'espace et l'apostrophe en trop, et lesremplacer par une parenthèse

mais là c'est normal que ça ne marche sinon, tu as 4 colonnes, et tu essayes d'insérer 7 valeurs

par yola26 » 15 sept. 2005, 14:48

en faite ca m'affiche ceci plutot :

INSERT INTO fiche_client(titre, description, utilisateur, probleme) VALUES('fffgg','ffffggg $jjggg','SYLVAIN BOREMISE','Imprimante' 'Palm' 'scanner' 'Portable' Sauvegarde réussite

par yola26 » 15 sept. 2005, 14:46

ca m'affiche ceci :
INSERT INTO fiche_client(titre, description, utilisateur, probleme) VALUES('fffgg','ffffggg $jjggg','SYLVAIN REMEYSE','Imprimante', 'Palm', 'scanner', 'Portable', Sauvegarde réussite
déjà il manque une parenthese mé ou la mettre je ne se sais pa trop

j'ai mis :

echo $sql;

par ouckileou » 15 sept. 2005, 14:35

le deuxième code est sur la bonne voie
mais avant d'exécuter la requête, affiche la à l'écran pour voir si rien ne te choque
ensuite, copie-colle le code dans phpMyAdmin et exécute la directement, tu verras d'éventuelles erreurs MySQL

par yola26 » 15 sept. 2005, 14:27

j'ai essayer ceci mais plus rien ne ce passe :

    // affichage sélection
 $sql = "INSERT INTO " . $table . "(titre, description, utilisateur, probleme) VALUES('" . $titre . "','" . $description . "','" . $utilisateur . "',";
 if (!empty($probleme)) {
     foreach($probleme as $cle => $valeur) {
         $sql .= "'".$valeur."', ";
     }
 }
 $sql = substr($sql, 0, -2);
// on execute
mysql_query($sql);