Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2006, 00h02   #1
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
Par défaut [SQL] Problème résultat checkbox dans requête SQL

Bonjour,

Je vous explique :

j'ai un formulaire basique et à la fin j'ai 10 checkbox; si par exemple il y a 4 checkbox choisis, je veux que dans ma table SQL il y ait en chaine de caractères mes 4 choix séparés par des virgules.

Ainsi je mets le code :

Code :
1
2
3
 
mysql_query("INSERT INTO voiture (marque, modele, annee, carross, energie, kms, prix, mensua, dmc, couleur, puiss, garantie, equip, dateCreaAnnonc, idAnnonc) VALUES 
					('$theMarque', '$theModele', '$theAnnee', '$theListeCarross', '$theListeEnergie', '$theKm', '$thePrix', '$theMensua', '$maDateDMCTab', '$theCouleur', '$thePuiss', '$theListeGarantie', 'if (!empty($tabEquipmt)) { foreach($tabEquipmt as $cle => $valeur) { echo '$valeur, '; } } ', '$date', $theMaxIdAnnonc+1)") or die(mysql_error());
Voilà, si vous pouviez m'aider...
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 05h31   #2
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
Checkbox n'est pas une notion SQL, tu t'es trompé de forum...
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 09h24   #3
Xo
Expert Confirmé
 
Avatar de Xo
 
Inscription : janvier 2005
Messages : 2 701
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2005
Messages : 2 701
Points : 3 237
Points : 3 237
Envoyer un message via Skype™ à Xo
déplacé !
__________________
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau

"Expliquer empêche de comprendre si cela dispense de chercher"

Quiz Oracle : venez tester vos connaissances !

La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Xo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 09h31   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Et le problème est ?

La requête ne fonctionne pas ?
Je pense pas qu'on puisse faire des echo dans une chaîne directement comme ça, il vaut mieux construire la requête dans une variable $req, et concaténer ensuite tout ce que tu veux mettre dedans à l'aide du point.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 12h19   #5
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
oui excusez moi, en fait je pense que c'est la concaténation qui me pose problème mais j'ai beau tourner dans tous les sens ca marche pas trop;

comment faire pour mettre les valeurs du tableau en concaténation dans une variable SVP
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 12h29   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
C'est pas trop dur à trouver comment on fait une concaténation en PHP (surtout que je t'ai mis sur la voie...).

Ca donnerait un truc comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
 
$req = "INSERT INTO voiture (marque, modele, annee, carross, energie, kms, prix, mensua, dmc, couleur, puiss, garantie, equip, dateCreaAnnonc, idAnnonc) VALUES 
					('$theMarque', '$theModele', '$theAnnee', '$theListeCarross', '$theListeEnergie', '$theKm', '$thePrix', '$theMensua', '$maDateDMCTab', '$theCouleur', '$thePuiss', '$theListeGarantie', '";
if (!empty($tabEquipmt))
{
   foreach($tabEquipmt as $cle => $valeur)
        $req .= $valeur . ", ";
}
$req .= "', '$date', " . ($theMaxIdAnnonc+1) . ")";
mysql_query($req) or die(mysql_error());
J'ai repris ta boucle, mais je pense que tu vas avoir un souci avec elle car quand tu parcours le tableau $tabEquipmnt tu mets toujours une virgule après chaque élément (même le dernier)...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 14h04   #7
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
Merci pour l'élément de la réponse...
le problème est que EasyPHP me trouve une erreur après ton VALUES, dans la parenthèse à la 2ème ligne de ton code...

désolé je débute depuis 6 mois en SQL...

merci de votre aide
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h54   #8
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
up
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h37   #9
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Ah voilà je trouvais plus ce post

Alors fais un echo de ta requête comme ça pour voir ce qui cloche :

Code :
1
2
3
$req .= "', '$date', " . ($theMaxIdAnnonc+1) . ")";
echo $req;
mysql_query($req) or die(mysql_error());

Citation:
désolé je débute depuis 6 mois en SQL...

C'est plus trop débuter là...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h50   #10
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
2 petites questions :

soit j'enlève le ; à la fin de ta 2ème ligne (Values ..... et là ça me trouve une erreur à la ligne du IF

soit je laisse ton ; à la fin de la ligne Values et alors erreur à cette ligne...


même avec le echo que tu m'as dit de rajouter...
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h53   #11
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
à savoir que le $tabEquipmt c'est le résultat de mes CHECKBOX

Code :
1
2
3
 
// vérifions que la variable a été transmise 
$tabEquipmt = (isset($_POST['equipmt']))?$_POST['equipmt']:null;
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h57   #12
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
La requête c'est sur une seule ligne (VALUES et le reste).

Code :
$req = "INSERT INTO voiture (marque, modele, annee, carross, energie, kms, prix, mensua, dmc, couleur, puiss, garantie, equip, dateCreaAnnonc, idAnnonc) VALUES ('$theMarque', '$theModele', '$theAnnee', '$theListeCarross', '$theListeEnergie', '$theKm', '$thePrix', '$theMensua', '$maDateDMCTab', '$theCouleur', '$thePuiss', '$theListeGarantie', '";
Le echo c'est pas ça qui va réparer les bugs, il sert à afficher la requête qui est effectivement exécutée pour voir où est précisement le problème.

Si tu as mis le echo où il faut la requête doit s'afficher. Dis-nous alors la requête affichée.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 18h27   #13
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
merci je t'ai dis que j'étais débutant (cf par rapport à ceux qui masterisent!!!)

en mettant exactement la même syntaxe que toi, j'obtiens ce que je t'ai dis :

Parse error: parse error in c:\program files\easyphp1-8\www\site garage php sql\ajout_ok.php on line 191

et la ligne 191 = la ligne où il y a "VALUES etc etc"
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 18h29   #14
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
car si je mets la requete sur la meme ligne (je mettais sur deux lignes pour éviter les ascenceurs trop longs) ca me donne le meme probleme sur la ligne de la requete
mais en meme temps c'est normal car dans mon INSERT INTO j'ai plus de variables que dans mon VALUES

c'est pour ça que je te parle de ce ; à la fin de la requete
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 18h38   #15
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Je répète :

Citation:
Le echo c'est pas ça qui va réparer les bugs, il sert à afficher la requête qui est effectivement exécutée pour voir où est précisement le problème.

Si tu as mis le echo où il faut la requête doit s'afficher. Dis-nous alors la requête affichée.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 19h02   #16
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
pour éviter une prise de tête inutile sur ce forum, je te donne le code est dis moi STP où faut-il que j'insère ce ECHO :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
if ($yachiffres5 == true){		
 
					//içi on cherche le plus grand indice pour pouvoir lui ajouter +1 dans le insert to suivant
 
					// Création et envoi de la requête
					$query = "SELECT MAX(idAnnonc) FROM voiture";
					$result = mysql_query($query);
 
					//Récupération des résultats
					while ($row = mysql_fetch_row($result)) {
					$theMaxIdAnnonc = $row[0];
					}
 
 
 
 
 
 
					//içi on ajoute le nouveau véhicule dans la table VOITURE
					$theReq("INSERT INTO voiture (marque, modele, annee, carross, energie, kms, prix, mensua, dmc, couleur, puiss, garantie, equip, dateCreaAnnonc, idAnnonc) VALUES ('$theMarque', '$theModele', '$theAnnee', '$theListeCarross', '$theListeEnergie', '$theKm', '$thePrix', '$theMensua', '$maDateDMCTab', '$theCouleur', '$thePuiss', '$theListeGarantie', '";
 
							 if (!empty($tabEquipmt))
							 {
									foreach($tabEquipmt as $cle => $valeur)
										$theReq .= $valeur." - ";
							}
							 $theReq .="', '$date', " . ($theMaxIdAnnonc+1) . ")";
 
							 mysql_query($theReq) or die(mysql_error()));
 
 
 
 
 
 
				}
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 23h07   #17
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Pas de prise de tête j'ai déjà mis le bout de code avec le echo dans mon post de 17h37
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2006, 18h57   #18
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
voilà, j'ai mis ça sur mon code et maintenant j'obtiens :

Parse error: parse error in c:\program files\easyphp1-8\www\site garage php sql\ajout_ok.php on line 200

où la ligne 200 =
Code :
 mysql_query($theReq) or die(mysql_error()));
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2006, 20h04   #19
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 98
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 98
Points : 12
Points : 12
merci à toi JWhite

désolé pour les prises de tête! lol

a bientôt
Skeud007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2006, 12h18   #20
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Une parenthèse de trop .

Code :
mysql_query($theReq) or die(mysql_error());
(parse error = erreur de parenthèse en général)
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h14.


 
 
 
 
Partenaires

Hébergement Web