Problème utlisation avec Empty

Jerem45
Invité n'ayant pas de compte PHPfrance

26 mai 2010, 08:56

Bonjour, j'ai un projet en php ( Seulement du php ) à réaliser pour le bac malheureusement je suis bloqué.


Voici mon code :
<?php
//Création d'une variable de session
session_start();
// Affectation des valeurs saisies dans le formulaire dans des variables PHP
if (isset($_POST['QantiteB']))
{
$quantiteB = $_POST['QuantiteB'];
}
if (isset($_POST['QuantiteD']))
{
$quantiteD = $_POST['QuantiteD'];
}
if (isset($_POST['QuantiteG']))
{
$quantiteG = $_POST['QuantiteG'];
}
if (isset($_POST['QuantiteM']))
{
$quantiteM = $_POST['QuantiteM'];
}
if (isset($_POST['QuantiteP']))
{
$quantiteP = $_POST['QuantiteP'];
}
if (isset($_POST['QuantiteMassif']))
{
$quantiteMasif = $_POST['QuantiteMassif'];
}
if (isset($_POST['QuantitePied']))
{
$quantitePied = $_POST['QuantitePied'];
}
if (isset($_POST['QuantiteV']))
{
$quantiteV = $_POST['QuantiteV'];
}
if (isset($_POST['QuantiteR']))
{
$quantiteR = $_POST['QuantiteR'];
}
// connexion au serveur MYSQL
$db=mysql_connect("localhost","root","benjam") or die("erreur de connexion au serveur".mysql_error());

// Ouverture de la base de données baseLafleur1
mysql_select_db("baseLafleur1") or die ("erreur de connexion à la base baseLafleur1");

// requete d'insertion des valeurs dans la table composer
$requete="INSERT INTO composer(numProd, quantite)VALUES('b01','$quantiteB')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('b02','$quantiteD')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('b03','$quantiteG')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('m01','$quantiteM')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('m02','$quantiteP')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('m03','$quantiteMassif')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('r01','$quantitePied')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('r02','$quantiteV')";
$requete="INSERT INTO composer(numProd, quantite)VALUES('r03','$quantiteR')";
//Exécution des requête
mysql_query($requete) or die ("erreur dans la requete");
// Affichage d'un message de contrôle
echo "<h3> Votre commande a été enregistré avec succés! </h3>";
// fermeture de la base
mysql_close();
?>
Je sais le code est vraiment pour débutant ^^
Pour le contexte : J'ai un formulaire commande avec 9 produit. Le client choisie la quantité et c'est affecter dans les variables $quantite(lettre du produit) mais ce que je voudrais faire c'est insérer dans la table composer la reférence du produit + la quantité de celui ci seulement si la quantité a été rempli dans le formulaire auparavant. Merci de bien vouloir m'aider je ne sais plus comment faire :(

Eléphant du PHP | 86 Messages

26 mai 2010, 11:21

Salut,

Bon déjà, vu ton code, seule la dernière requête va être exécutée puisque tu réaffectes une nouvelle valeur à ta $requete avant de l'exécuter.
Pour tester si la quantité à été remplie :
if(!empty($quantite))
{
    $requete = "..."; //ta requête pour cette quantité
    mysql_query($requete);
}
Le !empty signifie NOT empty donc littéralement "non vide" (empty te renvoie un booléen).
Evite aussi les fautes d'orthographe, c'est mal vu pour le bac (enregistrée) dans ton echo.

A+

Jerem45
Invité n'ayant pas de compte PHPfrance

26 mai 2010, 13:04

Merci de prendre le temps de me répondre :)

Pour ce que tu m'a dis, Cela fonctionne si je veux remplir la base de données même si le champ est vide?
Explication :

Dans mon formulaire, j'ai plusieurs produit. Exemple

Banane => $quantiteB
Orange => $quantiteO
Pomme => $quantiteP

Ce que je voudrais c'est que si le client choisis seulement 4 orange, seul la requête insert into correspondant à l'orange fonctionne mais pas les autres. C'est ça que je ne comprend pas comment faire avec empty. :(

Eléphant du PHP | 86 Messages

26 mai 2010, 13:15

Le morceau de code que je t'ai donné est un exemple à adapter à ton script.
Voilà à quoi il correspond :
Si la quantité n'est pas vide (!empty)
Alors on exécute la requete propre à cette quantité
Il suffit de faire le test sur chaque quantité, à toi de mettre en place une boucle ou d'écrire autant de if qu'il y a de quantités.

Jerem45
Invité n'ayant pas de compte PHPfrance

26 mai 2010, 13:23

A d'accord je viens de comprendre merci beaucoup de ton aide :D

Jerem45
Invité n'ayant pas de compte PHPfrance

29 mai 2010, 17:08

D'après le navigateur mon code ne contient aucune erreur et quand je fais ma commande, ca me dit qu'elle a réussi avec succès cependant ma table composer ne se rempli pas dans ma base de données je comprends pas pourquoi :(

<?php
//Création d'une variable de session
session_start();
// Affectation des valeurs saisies dans le formulaire dans des variables PHP
if (isset($_POST['QantiteB']))
{
          $quantiteB = $_POST['QuantiteB'];
}
if (isset($_POST['QuantiteD']))
{
          $quantiteD = $_POST['QuantiteD'];
}
if (isset($_POST['QuantiteG']))
{
          $quantiteG = $_POST['QuantiteG'];
}
if (isset($_POST['QuantiteM']))
{
          $quantiteM = $_POST['QuantiteM'];
}
if (isset($_POST['QuantiteP']))
{
          $quantiteP = $_POST['QuantiteP'];
}
if (isset($_POST['QuantiteMassif']))
{
          $quantiteMasif = $_POST['QuantiteMassif'];
}
if (isset($_POST['QuantitePied']))
{
          $quantitePied = $_POST['QuantitePied'];
}
if (isset($_POST['QuantiteV']))
{
          $quantiteV = $_POST['QuantiteV'];
}
if (isset($_POST['QuantiteR']))
{
          $quantiteR = $_POST['QuantiteR'];
}
// connexion au serveur MYSQL
$db=mysql_connect("localhost","root","16102000") or die("erreur de connexion au serveur".mysql_error());
// Ouverture de la base de données baseLafleur1
mysql_select_db("baseLafleur1") or die ("erreur de connexion à la base baseLafleur1");
// requete d'insertion des valeurs dans la table composer
if(!empty($quantiteB))
{
    $requeteB = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','b01','$quantiteB')";
    mysql_query($requeteB);
}
if(!empty($quantiteD))
{
    $requeteD = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','b02','$quantiteD')";
    mysql_query($requeteD);
}
if(!empty($quantiteG))
{
    $requeteG = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','b03','$quantiteG')";
    mysql_query($requeteG);
}
if(!empty($quantiteM))
{
    $requeteM = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','m01','$quantiteM')";
    mysql_query($requeteM);
}
if(!empty($quantiteP))
{
    $requeteP = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','m02','$quantiteP')";
    mysql_query($requeteP);
}
if(!empty($quantiteMassif))
{
    $requeteMassif = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','m03','$quantiteMassif')";
    mysql_query($requeteMassif);
}
if(!empty($quantitePied))
{
    $requetePied = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','r01','$quantitePied')";
    mysql_query($requetePied);
}
if(!empty($quantiteV))
{
    $requeteV = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','r02','$quantiteV')";
    mysql_query($requeteV);
}
if(!empty($quantiteR))
{
    $requeteR = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','r03','$quantiteR')";
    mysql_query($requeteR);
}
echo "<h3> Votre commande a été enregistrée avec succés! </h3>";
// fermeture de la base
mysql_close();
?>
Quelqu'un peut m'aider s'il vous plait?

ViPHP
ViPHP | 1136 Messages

29 mai 2010, 19:44

Salut ,

Juste pour info :

Tu peux faire tes insertions multiples en une seule resquete ...

Exemple :
INSERT into matable (
  colA,
  colB,
  colC
) VALUES (
  valColA1,
  valColB1,
  valColC1
),
(
  valColA2,
  valColB2,
  valColC2
);

VALUES (
NULL , 'aaa', 'pirmax', '', '', 'gratuit', '0', '0', '0', ''
), (
NULL , 'aaazzz', 'pirmax', '', '', 'gratuit', '0', '0', '0', ''
);
Tu peux donc construire ta requete pendant tes tests , et l'exécuter une seule fois , ce qui te simplifie aussi la vie pour débugger , car une seule requete à vérifier :) .

Good luck ,

Ch.

Ch.

Jerem45
Invité n'ayant pas de compte PHPfrance

30 mai 2010, 13:39

Merci de ta réponse mais je dois laisser cela comme sa. Mais le seul soucis c'est que mon insertion ne fonctionne pas dans la base de données et je ne vois pas où est l'erreur ;(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2010, 16:09

Ben demande à MySQL : mysql_error()

C'est lui le mieux placé pour te dire si quelque chose ne va pas dans ta requête ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Jerem45
Invité n'ayant pas de compte PHPfrance

06 juin 2010, 17:54

Bonjour, j'ai regardé et le soucis au niveau des insertions est dans la requete D, le mysql erro me dit bien que c'est la D mais je vois pas ou ce trouve l'erreur :(


<?php
//Création d'une variable de session
session_start();
// Affectation des valeurs saisies dans le formulaire dans des variables PHP
if (isset($_POST['QantiteB']))
{
          $quantiteB = $_POST['QuantiteB'];
}
if (isset($_POST['QuantiteD']))
{
          $quantiteD = $_POST['QuantiteD'];
}
if (isset($_POST['QuantiteG']))
{
          $quantiteG = $_POST['QuantiteG'];
}
if (isset($_POST['QuantiteM']))
{
          $quantiteM = $_POST['QuantiteM'];
}
if (isset($_POST['QuantiteP']))
{
          $quantiteP = $_POST['QuantiteP'];
}
if (isset($_POST['QuantiteMassif']))
{
          $quantiteMasif = $_POST['QuantiteMassif'];
}
if (isset($_POST['QuantitePied']))
{
          $quantitePied = $_POST['QuantitePied'];
}
if (isset($_POST['QuantiteV']))
{
          $quantiteV = $_POST['QuantiteV'];
}
if (isset($_POST['QuantiteR']))
{
          $quantiteR = $_POST['QuantiteR'];
}
if (isset($_POST['date']))
{
          $date = $_POST['date'];
}
if (isset($_POST['Numclient']))
{
          $Numclient = $_POST['Numclient'];
}
// connexion au serveur MYSQL
$db=mysql_connect("localhost","root","16102000") or die("erreur de connexion au serveur".mysql_error());
// Ouverture de la base de données baseLafleur1
mysql_select_db("baseLafleur1") or die ("erreur de connexion à la base baseLafleur1");
// requete d'insertion des valeurs dans la table composer
$requeteDate = "INSERT INTO COMMANDE(numCmde, dateCmde, numCli)VALUES('','$date','$Numclient')";
mysql_query($requeteDate)or die ("erreur dans la requete de la date");
if(!empty($quantiteB))
{
    $requeteB = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','b01','$quantiteB')";
    mysql_query($requeteB)or die ("erreur dans la requete B");
}
if(!empty($quantiteD))
{
    $requeteD = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','b02','$quantiteD')";
    mysql_query($requeteD)or die ("erreur dans la requete D");
}
if(!empty($quantiteG))
{
    $requeteG = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','b03','$quantiteG')";
    mysql_query($requeteG)or die ("erreur dans la requete G");
}
if(!empty($quantiteM))
{
    $requeteM = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','m01','$quantiteM')";
    mysql_query($requeteM)or die ("erreur dans la requete M");
}
if(!empty($quantiteP))
{
    $requeteP = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','m02','$quantiteP')";
    mysql_query($requeteP)or die ("erreur dans la requete P");
}
if(!empty($quantiteMassif))
{
    $requeteMassif = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','m03','$quantiteMassif')";
    mysql_query($requeteMassif)or die ("erreur dans la requete Massif");
}
if(!empty($quantitePied))
{
    $requetePied = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','r01','$quantitePied')";
    mysql_query($requetePied)or die ("erreur dans la requete Pied");
}
if(!empty($quantiteV))
{
    $requeteV = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','r02','$quantiteV')";
    mysql_query($requeteV)or die ("erreur dans la requete v");
}
if(!empty($quantiteR))
{
    $requeteR = "INSERT INTO composer(numCmde, numProd, quantite)VALUES('','r03','$quantiteR')";
    mysql_query($requeteR)or die ("erreur dans la requete r");
}
echo "<h3> Votre commande a été enregistrée avec succés! </h3>";
// fermeture de la base
mysql_close();
?>

Jerem45
Invité n'ayant pas de compte PHPfrance

06 juin 2010, 18:09

A non j'ai trouvé merci, mais le soucis c'est que la 1ère requeteB et requèteMassif elles ne fonctionnent pas. Mais les autres si

ViPHP
ViPHP | 1996 Messages

06 juin 2010, 18:59

Quand tu essayes de débugger, écris plutôt :
mysql_query($requeteD) or die  ("erreur dans la requete D : ".mysql_error());
Ca devrait t'aider.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr