J'ai un probleme de mise a jour de ma base de donnée [Résolu]

greg3487 17 Messages postés dimanche 20 septembre 2015Date d'inscription 11 février 2016 Dernière intervention - 11 déc. 2015 à 13:43 - Dernière réponse : jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention
- 12 déc. 2015 à 03:05
Bonjour,

j'ai un petit problème de condition, a chaque fois que j'ajoute un produit, le produit passe en t'en que nouveau produit même s'il existe dans la base de donnée.

quelqu'un pourrais me dire se qui cloche et une incohérence entre le var_dump et la barre d'adresse.

barre d'adresse : http://localhost/devoirEMWEB/E_commerce/panier1.php?nom_id=2&prix_id=2&quantite_ajout=4&valide=Valider

resultat des var_dump :

string '3' (length=1)
array (size=6)
0 => string '5669e5c4db8d8' (length=13)
'user_id' => string '5669e5c4db8d8' (length=13)
1 => string '2' (length=1)
'produit_id' => string '2' (length=1)
2 => string '3' (length=1)
'quantite' => string '3' (length=1)
string 'bob' (length=3)




if(isset($_GET['valide']))
{

 $produit_id= intval($_GET['nom_id']);
 $produit_prix = intval($_GET['prix_id']);
 $quantite_ajoute = intval($_GET['quantite_ajout']);

 $result = $mysqli->query("SELECT `Article_ID` FROM boutique WHERE `Article_ID` = '$produit_id'");
 $row = $result->fetch_array();

 if($row[0] <= 0)
 {
  $message = '<p class="error">Le catalogue ne contient pas cette référence. Aucun produit n\'est ajouté a panier.</p>';
 }
 else
 {
  $verif = $mysqli->query("SELECT * FROM panier");
  $row = $verif->fetch_array();
  var_dump($row['quantite'],$row);
  $quantite_total = $quantite_ajoute + $row['quantite'];
  
  if ($produit_id == $row['produit_id']) {
   var_dump('bob');
   $mysqli->query("UPDATE panier
       SET quantite = '$quantite_total'");
  }
  
  else 
  {
   if ($produit_id != $row['produit_id']) {
   $mysqli->query("INSERT INTO panier (user_id, produit_id, quantite))
                              VALUES ('$web_user_id', '$produit_id', '$quantite_ajoute')");
   var_dump('bab');
   $message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
   }
   else
   {
    $message = '<p class="error">L\'ajout du produit dans le panier n\'est pas effectué.</p>';
   }
  }
 }
}
$result = $mysqli->query("SELECT produit_id, quantite FROM panier WHERE user_id = '$web_user_id'");

while ($row = $result->fetch_array())
{
 $produit_id = $row['produit_id'];
 $qantite = $row['quantite'];
}

//-----------------------------------------------------//

if(!empty($produit_id)) {
 $sql = "SELECT  produit_id, Article_nom, Article_prix, quantite
   
   FROM panier
         JOIN boutique
     ON panier.produit_id = boutique.Article_ID
         WHERE panier.user_id = '$web_user_id'";
 $result = $mysqli->query($sql);
 if (!$result) { //en cas d'erreur
  printf("Message d'erreur : %s\n", $mysqli->error);
 }

 //Initialisation des variables de retour
 $total = array();
 $produits = array();

 while ($row = $result->fetch_array()) {
  //-----------------------------------------------------//
  $produit_id = $row['produit_id'];
  $quantite = $row['quantite'];
  $produit_nom = $row['Article_nom'];
  $produit_prix = $row['Article_prix'];
  
  //-----------------------------------------------------//
  $produits[$produit_id]['id'] = $produit_id;
  $produits[$produit_id]['nom'] = $produit_nom;
  $produits[$produit_id]['prix'] = $produit_prix;
  $produits[$produit_id]['nombrecommand'] = $quantite;
  $produits[$produit_id]['sous_total'] = $qantite * $produit_prix;
  $total[] = $qantite * $produit_prix;
  //-----------------------------------------------------//
  $prix_total = array_sum($total);
 }
}
else
{
 echo '<p>Votre panier est vide</p>';
}


merci par avance de vos réponce.
Afficher la suite 

5 réponses

Répondre au sujet
jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention - 11 déc. 2015 à 13:54
+1
Utile
Bonjour,

Pour commencer... ton update... il n'y manquerait pas un WHERE ??
 $mysqli->query("UPDATE panier
       SET quantite = '$quantite_total'");

Par ce que là .. tu UPDATE toute ta table .... sans spécifier le panier en question


Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jordane45
greg3487 17 Messages postés dimanche 20 septembre 2015Date d'inscription 11 février 2016 Dernière intervention - 11 déc. 2015 à 18:17
0
Utile
3
je vient de modifier le code, mais il met a jour que que un seul produit, les autre s'enregistre pas ou se mette pas a jour.

voici mon code modifié.

if(isset($_GET['valide']))
{
	$produit_id= intval($_GET['nom_id']);
	$produit_prix = intval($_GET['prix_id']);
	$quantite_ajoute = intval($_GET['quantite_ajout']);

	$result = $mysqli->query("SELECT * FROM boutique WHERE `Article_ID` = '$produit_id'");
	$row = $result->fetch_array();

	if($row[0] <= 0)
	{
		$message = '<p class="error">Le catalogue ne contient pas cette référence. Aucun produit n\'est ajouté a panier.</p>';
	}
	else
	{
		var_dump($row['Article_ID']);
		$verif = $mysqli->query("SELECT * FROM panier");
		$row = $verif->fetch_array();
		$quantite_total = $quantite_ajoute + $row['quantite'];
		var_dump($row);
		if ($row[] = '0')
		{
			$mysqli->query("INSERT INTO panier (user_id, produit_id, quantite)
            				VALUES ('$web_user_id', '$produit_id', '$quantite_ajoute')");
			
			$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
		}
		elseif ($row[] = '1') {
			$mysqli->query("UPDATE panier 
							SET quantite = '$quantite_total' 
							WHERE user_id = '$web_user_id' 
							AND produit_id = '$produit_id'");
			
			var_dump('bab');
			$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
		}
		else
		{
			$message = '<p class="error">L\'ajout du produit dans le panier n\'est pas effectué.</p>';
		}
	}
}
$result = $mysqli->query("SELECT produit_id, quantite FROM panier WHERE user_id = '$web_user_id'");

while ($row = $result->fetch_array())
{
	$produit_id = $row['produit_id'];
	$qantite = $row['quantite'];
}
jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention - 11 déc. 2015 à 19:07
Que retournes... selon toi cette requête :
$verif = $mysqli->query("SELECT * FROM panier");
$row = $verif->fetch_array();
$quantite_total = $quantite_ajoute + $row['quantite'];


Là encore.... si c'est pour récupérer la quantité d' UN produit particulier.... il te manque un WHERE ... non ?


Ensuite quand tu dis :

mais il met a jour que que un seul produit

.... le code que tu nous montres est sensé mettre à jours plusieurs produits ??
Car visiblement... tu n'en passes qu'un seul via tes variables GET non ?

Au passage....Je t'invite également à passer par la méthode POST au lieu de GET ....


Et pour finir ...
Nous ne pourrons pas t'aider d'avantage tant que nous n'aurons pas:
- La structure de tes tables
- Le formulaire HTML attaché à ce code PHP
- Que tu nous éclaires sur le fonctionnement "souhaité" ... et à contrario.. le fonctionnement "constaté" qui te pose problème.
greg3487 17 Messages postés dimanche 20 septembre 2015Date d'inscription 11 février 2016 Dernière intervention > jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention - 11 déc. 2015 à 21:06
voici mon code, et quand je disais q'il y en a que 1 qui se met a jour, je voulais dire que il y a que les produit déjà enregistré dans la base de donnée du panier, qui se met a jour. Il passe tous par le elseif (le update) au lieu de passer par le if pour mettre un nouveau produit.

base de donnée : user_id => produit_id => quantite

formulaire :

 <?php
	$article = "SELECT Article_ID, Article_nom, Article_prix
				FROM boutique";
	$result = $mysqli->query($article);	
	while ($row = $result->fetch_array())
	{
		$produit_id = $row['Article_ID'];
		$produit_nom = $row['Article_nom'];
		$produit_prix = $row['Article_prix'];
		$produits[$produit_id]['nom'] = $produit_nom;
		$produits[$produit_id]['prix'] = $produit_prix;
	}
	?>
    <ul> 
    	<?php foreach($produits as $produit_id => $produit) 
		{ ?> 
        <li> 
        	<form action="panier5.php" method="GET">
                <div class="article"> 
                    <input type="hidden" name="nom_id" value="<?php echo $produit_id; ?>"><?php echo $produit['nom']; ?>
                    <br /> 
                    <input type="hidden" name="prix_id" value="<?php echo $produit_id; ?>"><?php echo $produit['prix']; ?> euros
                    <br/>
                    <img src="image/product_256.png" alt="<?php echo $produit['nom']; ?>"/> 
                    <br/>
                    <input type="number" name="quantite_ajout" value="0" min="0">
                    <br/>
                    <input type="submit" name="valide"> 
                </div> 
            </form>
        </li> 
    <?php } ?> 
    </ul>
<?php  ?>


code panier qui gere mon formulaire :

if(isset($_GET['valide']))
{

	$produit_id= intval($_GET['nom_id']);
	$produit_prix = intval($_GET['prix_id']);
	$quantite_ajoute = intval($_GET['quantite_ajout']);

	$result = $mysqli->query("SELECT * FROM boutique WHERE `Article_ID` = '$produit_id'");
	$rowtest = $result->fetch_array();
	//var_dump($rowtest);

	if($rowtest[0] <= 0)
	{
		$message = '<p class="error">Le catalogue ne contient pas cette référence. Aucun produit n\'est ajouté a panier.</p>';
	}
	else
	{
		//var_dump($row['Article_ID']);
		$verif = $mysqli->query("SELECT * FROM panier WHERE `produit_id` = '$produit_id'");
		$row = $verif->fetch_array();
		$quantite_total = $quantite_ajoute + $row['quantite'];
		//var_dump($row);
		if ($row[] = '0')
		{
			$mysqli->query("INSERT INTO panier (user_id, produit_id, quantite)
            				VALUES ('$web_user_id', '$produit_id', '$quantite_ajoute')");
			
			$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
		}
		elseif ($row[] = '1') {
			$mysqli->query("UPDATE panier 
						SET quantite = '$quantite_total' 
							WHERE user_id = '$web_user_id' 
							AND produit_id = '$produit_id'");
			
			var_dump('bab');
			$message = '<p class="message">L\'ajout du produit dans le panier est bien effectué.</p>';
		}
		else
		{
			$message = '<p class="error">L\'ajout du produit dans le panier n\'est pas effectué.</p>';
		}
	}
}
$result = $mysqli->query("SELECT produit_id, quantite FROM panier WHERE user_id = '$web_user_id'");

while ($row = $result->fetch_array())
{
	$produit_id = $row['produit_id'];
	$qantite = $row['quantite'];
}
jordane45 20046 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 février 2018 Dernière intervention - 12 déc. 2015 à 03:05
Alors :

Que donnes ton var_dump ?
//var_dump($row);


Ensuite... une comparaison ne se fait pas avec UN SEUL égale... mais avec DEUX ou TROIS selon les besoins !
Donc tes IF, tel que celui là :
if ($row[] = '0') 

Devraient êtres de la forme :
if ($row[] == '0') 


Ensuite.. $row[] .... ajoute un donnée dans l'array $row .....
A mon avis.. tu as oublié de mettre la "key" entre les crochets
un truc du genre
if ($row['quantite'] == '0') 
Commenter la réponse de greg3487

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.