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

Messages postés
17
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
11 février 2016
-
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 

2 réponses

Meilleure réponse
Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
312
1
Merci
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


Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 140 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
17
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
11 février 2016
0
Merci
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
Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
312 -
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
Messages postés
17
Date d'inscription
dimanche 20 septembre 2015
Statut
Membre
Dernière intervention
11 février 2016
> jordane45
Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
-
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
Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
312 -
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