IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

formulaire ajt panier [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut formulaire ajt panier
    bonjour à tous,
    j'ai un formulaire qui doit me permettre d'ajouter un element au panier en le stockant dans une base mysql.
    voici mon code html (j'utilise smarty comme moteur de template)
    le code suivant est dans le fichier bacs.tpl (code html),
    et la page bacs.php contient le code source (la partie code php).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="ajt_panier" method="post" action="bacs.php">
    		<td align=center>&nbsp;&nbsp;<input type=text name=qte_a_commander{$tpl_id_bac[id]} size=5>		</td>
    		<td align=center><input type="submit" name=comm_bacc{$tpl_id_bac[id]} value="ajouter au panier">       </td>
    		</form>
    ici bacs.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    session_start();
    $id_bac=$_POST[''];
    $req=&$conn->Execute('insert into panier_bacs values ');
    voici la structure de ma table:
    qte_bac int(5)
    fourniss varchar(25)
    id_bac int(5)
    couleur varchar(25)
    typ_bac varchar(25)
    et la table ref_bacs:
    id int(25) auto_increment
    fournisseur varchar(25)
    typ_de_bac varchar(20)
    nombre int(8)
    couleur varchar(20)

    je voudrais pouvoir insérer suivant la qté saisie au clavier le bac correspondant à l'id.
    si quelqu'un pouvait m'aider?
    merci.

  2. #2
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    voici mon code php, mais j'obtiens l'erreur suivante:
    requete1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    pour toute aide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $req=&$conn->Execute('SELECT max(id) FROM `ref_bacs`');
    $count=$req->fields[0];
    echo "count= ".$count;
     
    $ref_id=$_POST['id'];
     
    for ($i=1;$i<=$count;$i++)
    {  	echo "\$i= ".$i;
     
    	$qte=$_POST['qte_a_commander'.$i];
        echo "qte= ".$qte;
    	$recordSet=&$conn->Execute("select * from ref_bacs where id=$ref_id");
    	if (!$recordSet) print "requete1".$conn->ErrorMsg();
    	else
    	{
    	while (!$recordSet->EOF)
    		{
    		$fourniss[]=$recordSet->fields[1];
    		echo "fourniss= ".$recordSet->fields[1];
    		$typ_bac[]=$recordSet->fields[2];
     
    		$nbre[]=$recordSet->fields[3];
    		$coul[]=$recordSet->fields[4];
    		$req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ($qte,$fourniss,$ref_id,$coul,$typ_bac)");
    		if (!$req) print "requete2".$conn->ErrorMsg();
    		$recordSet->MoveNext();
    		}
     
    	}
     
    }

  3. #3
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Dans le INSERT

    avec des quotes.

    Et si tu insères des valeurs string il faut les entourer aussi par des quotes.

  4. #4
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    ok, je vais essayer, merci.

  5. #5
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    maintenant, ca me met:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Web\Site\modules\gesstock\bacs.php on line 79

    ligne 79:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ($qte,$fourniss['id'],$ref_id,$coul['id'],$typ_bac['id'])");
    		if (!$req) print "requete2".$conn->ErrorMsg();

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ('$qte','$fourniss['id']','$ref_id','$coul['id']','$typ_bac['id']')");

    comme ca plutot me semble mé je peu me tromper

  7. #7
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    j'ai essayé aussi ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $req=&$conn->Execute('SELECT max(id) FROM `ref_bacs`');
    $count=$req->fields[0];
    echo "count=".$count." ";
     
    $ref_id=$_POST['id'];
    echo "ref_id=".$ref_id." ";
    $qte=$_POST['qte_a_commander'.$ref_id];
     
    for ($i=1;$i<=$count;$i++)
    {  	echo "\$i=".$i." ";
     
    	$qte=$_POST['qte_a_commander'.$i];
        echo "qte=".$qte." ";
    	$recordSet=&$conn->Execute("select * from ref_bacs where id=$ref_id");
    	if (!$recordSet) print "requete1".$conn->ErrorMsg();
    	else
    	{
    	while (!$recordSet->EOF)
    		{
    		$fourniss[]=$recordSet->fields[1];
    		echo "fourniss=".$recordSet->fields[1]." ";
    		$typ_bac[]=$recordSet->fields[2];
     
    		$nbre[]=$recordSet->fields[3];
    		$coul[]=$recordSet->fields[4];
    		$req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ($qte,$fourniss[$ref_id],$ref_id,$coul[$ref_id],$typ_bac[$ref_id])");
    		if (!$req) print "requete2".$conn->ErrorMsg();
    		$recordSet->MoveNext();
    		}
     
    	}
     
    }
    mais ca ne marche pas non plus...

  8. #8
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Web\Site\modules\gesstock\bacs.php on line 79

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ('$qte','$fourniss['$ref_id']','$ref_id','$coul['$ref_id'],'$typ_bac['$ref_id']')");

  9. #9
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    je ne comprend pas pourquoi vous mettez 'id' car pour moi ca ne correspond à rien, sauf à la colonne id de ma table mysql.

  10. #10
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    là je viens d'avoir bcp moins d'erreurs en mettant dans la requete 1 '$ref_id'
    au lieu de $ref_id, ca commence à aller mieux.

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    moi jai mi id pasque je croyé que tu l'avais a la base...modifie toute té requete en rajoutan les ' ' autour des variable string
    deja tora moins derreur

  12. #12
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    maintenant ca insère, mais trop de fois le meme enregistrement.
    il ne faudrait enregistrer qu'une seule fois le meme enregistrement, mais avec le champ qté correspondant à la qté souhaitée.

  13. #13
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Oulà c'est la fête du post par là

    On peut pas deviner ce qu'il y a dans tes bases, la syntaxe doit être mieux maintenant, il reste plus qu'à adapter ça comme il faut à ton cas.

    Edit : ah oui c'est vraiment la fête du post

  14. #14
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    c'est de l'algorithimque pure... et là je ne suis pas très balaise en algo
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $req=&$conn->Execute('SELECT max(id) FROM `ref_bacs`');
    $count=$req->fields[0];
    echo "count=".$count." ";
     
    $ref_id=$_POST['id'];
    echo "ref_id=".$ref_id." ";
    $qte=$_POST['qte_a_commander'.$ref_id];
     
    for ($i=1;$i<=$count;$i++)
    {  	echo "\$i=".$i." ";
     
    	$qte=$_POST['qte_a_commander'.$i];
        echo "qte=".$qte." ";
    	$recordSet=&$conn->Execute("select * from ref_bacs where id='$ref_id'");
    	if (!$recordSet) print "requete1".$conn->ErrorMsg();
    	else
    	{
    	while (!$recordSet->EOF)
    		{
    		$fourniss[]=$recordSet->fields[1];
    		echo "fourniss=".$recordSet->fields[1]." ";
    		$typ_bac[]=$recordSet->fields[2];
     
    		$nbre[]=$recordSet->fields[3];
    		$coul[]=$recordSet->fields[4];
    		$req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ('$qte','$fourniss[$ref_id]','$ref_id','$coul[$ref_id]','$typ_bac[$ref_id]')");
    		if (!$req) print "requete2".$conn->ErrorMsg();
    		$recordSet->MoveNext();
    		}
     
    	}
     
    }

  15. #15
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Algorithmique pure = simple réflexion...

    Le problème doit venir du fait que tu ais un while dans un for, regarde ça de plus près pour voir si c'est vraiment ce que tu veux.

  16. #16
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    j'ai mis ça, mais ca n'insere pas le fournisseur, ni la couleur
    ce doit etre $ref_id qui ne passe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $req=&$conn->Execute('SELECT max(id) FROM `ref_bacs`');
    $count=$req->fields[0];
    echo "count=".$count." ";
     
    $ref_id=$_POST['id'];
    //echo "ref_id=".$ref_id." ";
    $qte=$_POST['qte_a_commander'.$ref_id];
     
    for ($i=1;$i<=$count;$i++)
    {  	//echo "\$i=".$i." ";
     
    	$qte=$_POST['qte_a_commander'.$i];
        echo "qte=".$qte." ";
    	$recordSet=&$conn->Execute("select * from ref_bacs where id='$ref_id'");
    	if (!$recordSet) print "requete1".$conn->ErrorMsg();
    	else
    	{
    	while (!$recordSet->EOF)
    		{
    		$fourniss[]=$recordSet->fields[1];
    		//echo "fourniss=".$recordSet->fields[1]." ";
    		$typ_bac[]=$recordSet->fields[2];
     
    		$nbre[]=$recordSet->fields[3];
    		$coul[]=$recordSet->fields[4];
    		echo "ref_id=".$ref_id." ";
    		if ($qte!="")
    			{
    			$req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ('$qte','$fourniss[$ref_id]','$ref_id','$coul[$ref_id]','$typ_bac[$ref_id]')");
    			if (!$req) print "requete2".$conn->ErrorMsg();
    			}
    		$recordSet->MoveNext();	
    		}
     
    	}
     
    }

  17. #17
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    Citation Envoyé par JWhite
    Algorithmique pure = simple réflexion...

    Le problème doit venir du fait que tu ais un while dans un for, regarde ça de plus près pour voir si c'est vraiment ce que tu veux.
    que devrais-je mettre à la place ?

  18. #18
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    en fait, mon for est là parceque je veux balayer de 1 au nombre max du champ id de la table ref_bacs qui est en auto-increment, et le while, c'est parce que j'ai appris comme ça pour les requetes à plusieurs résultats... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $recordSet=&$conn->Execute("select * from ref_bacs where id='$ref_id'");
    	if (!$recordSet) print "requete1".$conn->ErrorMsg();
    	else
    	{
    	while (!$recordSet->EOF)
    		{
    		$fourniss[]=$recordSet->fields[1];
    		//echo "fourniss=".$recordSet->fields[1]." ";
    		$typ_bac[]=$recordSet->fields[2];
     
    		$nbre[]=$recordSet->fields[3];
    		$coul[]=$recordSet->fields[4];
    		echo "ref_id=".$ref_id." ";
    		if ($qte!="")
    			{
    			$req=&$conn->Execute("insert into panier_bacs (qte_bac, fourniss, id_bac, couleur, typ_bac) values ('$qte','$fourniss[$ref_id]','$ref_id','$coul[$ref_id]','$typ_bac[$ref_id]')");
    			if (!$req) print "requete2".$conn->ErrorMsg();
    			}
    		$recordSet->MoveNext();	
    		}

  19. #19
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    là, dans la version actuelle, ca n'insère qu'une seule ligne (c'est ce que je veux) mais ca n'insère que la quantité, et l'id du bac. il faudrait que ca insère le nom du fournisseur, et la couleur du bac en plus.

  20. #20
    Membre très actif Avatar de harlock59
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 262
    Par défaut
    donc j'en conclus que ce qui ne va pas, ce sont les : '$fourniss[$ref_id]'
    dans le insert.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Envoi formulaire + Panier par Mail
    Par Le Druide 91 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/03/2015, 10h49
  2. Ajouter réponse formulaire au panier d'achat
    Par AProd dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/10/2012, 10h27
  3. formulaire pour valider un panier
    Par shgeoffrey dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2008, 22h22
  4. Réponses: 1
    Dernier message: 08/06/2008, 14h55
  5. Formulaire panier en PHP
    Par Shyboy dans le forum Langage
    Réponses: 7
    Dernier message: 08/05/2006, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo