Page 1 sur 1

Probleme dans mon while

Posté : 29 mai 2009, 14:57
par consequences
bonjour,

voila mon bout de code :
$orders_id=mysql_real_escape_string(htmlspecialchars($_REQUEST['orders_id']));
$modif_orders_status=mysql_real_escape_string(htmlspecialchars($_POST['modif_orders_status']));
$date=date("Y-m-d");


	if($modif_orders_status=="Validée"){
		mysql_query("UPDATE orders SET orders_status='".$modif_orders_status."' WHERE orders_id='".$orders_id."' ");

	}elseif($modif_orders_status=="En cours de préparation"){
		mysql_query("UPDATE orders SET orders_status='".$modif_orders_status."' WHERE orders_id='".$orders_id."' ");
		
	}elseif($modif_orders_status=="Envoyée"){
	
		$maReqQuantiteCommande="SELECT orders_id, products_id, orders_products_quantity FROM orders_products WHERE orders_id='".$orders_id."";
		$rsMaReqQuantiteCommande=mysql_query($maReqQuantiteCommande);	
	
		while($rowMaReqQuantiteCommande=mysql_fetch_array($rsMaReqQuantiteCommande)){
			$maReqStock="SELECT stock_id, stock_quantity FROM stock WHERE products_id='".$rowMaReqQuantiteCommande['products_id']."";
			$rsMaReqStock=mysql_query($maReqStock);
			$rowMaReqStock=mysql_fetch_array($rsMaReqStock);
			$resteEnStock=$rowMaReqStock['stock_quantity']-$rowMaReqQuantiteCommande['orders_products_quantity'];
			
		mysql_query("UPDATE stock SET stock_date='".$date."', stock_quantity='".$resteEnStock."' WHERE products_id='".$rowMaReqQuantiteCommande['products_id']."' ");
		
		}	
		mysql_query("UPDATE orders SET orders_status='".$modif_orders_status."', orders_date_finished='".$date."' WHERE orders_id='".$orders_id."' ");
		
	}

Le problème est une erreur "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL
result resource " que je ne comprend pas vraiment car mes deux requete sont differente avec des
variables differente. Pour le coup j'ai pas de update sur ma table stock mais j'ai bien une update sur
la table orders. Biensur le probleme se produit quand j'entre dans la condition
$modif_orders_status=="Envoyée"

Posté : 29 mai 2009, 15:34
par charabia
Regarde attentivement cette ligne de ton code :
$maReqStock="SELECT stock_id, stock_quantity FROM stock WHERE products_id='".$rowMaReqQuantiteCommande['products_id']."";

Posté : 29 mai 2009, 15:49
par consequences
Ah oui merci je crois que je vois manque une simple cote a la fin pfiouuuu tout se temps pour ca merci beaucoup a toi ;)

Voila plus d'erreur mais je me rend compte que ca ne fonctionne pas lol

erffff

Posté : 29 mai 2009, 17:24
par charabia
Il te faut enlever tous les quotes que tu as mis pour tous les entiers (genre les ID).

Ensuite utilise un OR DIE pour voir si tes requêtes marchent correctement.

Posté : 29 mai 2009, 17:41
par AB
Il te faut enlever tous les quotes que tu as mis pour tous les entiers (genre les ID).
:-k ?

Posté : 03 juin 2009, 09:29
par charabia
Je veux dire par là que les quotes ne sont pas utiles quand il s'agit d'entier.

Posté : 03 juin 2009, 12:30
par Ryle
Non seulement elles ne sont pas utiles, mais si MySQL les supportes et fait des cast implicites des chaines en nombres lorsqu'il en a besoin (et inversement), ce n'est pas le cas des autres bases de données qui refuseront de comparer ou d'insérer des chaines, lorsque le champ est de type numérique :)

Posté : 03 juin 2009, 12:42
par AB
Ah ok pour la portabilité.

Non c'est juste le "il te faut..." qui m'avait interpellé. La tournure de la phrase semblait indiquer que cela pouvait être la source du problème. Or le disfonctionnement ne pouvait pas venir de ça avec mysql :)

Posté : 03 juin 2009, 13:39
par charabia
Oui en fait c'était pas la source du problème lui même, ça m'est venu sur le coup lol