Pb de Requete sql!!!

cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009 - 11 avril 2006 à 14:26
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 11 avril 2006 à 17:04
J ai un problème avec cette requete et je voi vraiment pas pourkoi, dc est ce ke qq1 aurai une idée plz !!!




while ($qte_ajou > 0)
{
$req tep_db_query("select orders_products_id from " . TABLE_ORDERS_PRODUCTS . " group by orders_products_id having orders_products_id ( select min(distinct orders_products_id) from " . TABLE_ORDERS_PRODUCTS . " where products_id='" . (int)$products_id . "' and prix_unit_moy is null)");
$contenu=tep_db_fetch_array(tep_db_query("select orders_products_id as opi, products_quantity as pqt form " . TABLE_ORDERS_PRODUCTS . " where opi = '" . (int)$req ."' ")) ;
if($qte_ajou>(int)$contenu['pqt'])
{
tep_db_query("update " . TABLE_ORDERS_PRODUCTS . " set prix_unit_moy '" . $HTTP_POST_VARS['prix_unit'] . "' where orders_products_id '" . (int)$contenu['opi'] . "'");
$qte_ajou= $qte_ajou - (int)$contenu['pqt'];
}
else break;
}
}

15 réponses

cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 14:27
J oubliais les tep_db_query sont les fonctions mysql_query et mysql_fetch_array


Merci d avance !


Pbreaker
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
11 avril 2006 à 14:29
Salut!
- parle français
- achète-toi un clavier qui possède une touche <enter>
- fais afficher ta requête
- fais afficher les erreurs mysql

Une fois toutes ces infos en poches redis nous et on sera plus à même de t'aider!

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 14:37
J'espere que t'est servi cette fois:

while ($qte_ajou > 0)
{ $req tep_db_query("select orders_products_id from " . TABLE_ORDERS_PRODUCTS . " group by orders_products_id having orders_products_id ( select min(distinct orders_products_id) from " . TABLE_ORDERS_PRODUCTS . " where products_id='" . (int)$products_id . "' and prix_unit_moy is null)");

$contenu=tep_db_fetch_array(tep_db_query("select orders_products_id as opi, products_quantity as pqt form " . TABLE_ORDERS_PRODUCTS . " where opi = '" . (int)$req ."' ")) ;
if($qte_ajou>(int)$contenu['pqt'])
{ tep_db_query("update " . TABLE_ORDERS_PRODUCTS . " set prix_unit_moy '" . $HTTP_POST_VARS['prix_unit'] . "' where orders_products_id '" . (int)$contenu['opi'] . "'");
$qte_ajou= $qte_ajou - (int)$contenu['pqt'];
}
else break;

}

Merci

Pbreaker
0
cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 14:41
Ceci est l erreur afficher

1064 - You have an error in your SQL syntax near 'select min(distinct orders_products_id) from orders_products where products_id='' at line 1


select orders_products_id from orders_products group by orders_products_id having orders_products_id = ( select min(distinct orders_products_id) from orders_products where products_id='310' and prix_unit_moy is null)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
11 avril 2006 à 14:41
Salut!
C'est mieux, merci!

Alors, qu'est ce qui cloche?
1) essaie de faire afficher la requête pour voir si elle correspond vraiment à ce que tu veux:
echo "select orders_products_id from " . TABLE_ORDERS_PRODUCTS . " group by
orders_products_id having orders_products_id = ( select min(distinct
orders_products_id) from " . TABLE_ORDERS_PRODUCTS . " where
products_id='" . (int)$products_id . "' and prix_unit_moy is null)";

et echo "select orders_products_id as opi, products_quantity as pqt form " . TABLE_ORDERS_PRODUCTS . " where opi = '" . (int)$req ."' ";

Des fois on remarque que y'a une variable qui joue pas, ou un truc dans le genre.

Ensuite, si y'a une erreur, essaye un:
echo mysql_error();
Ca t'affichera l'erreur MySQL et on pourra mieux cibler! :)

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 avril 2006 à 14:42
Salut,

t'as quelle version de mysql ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 14:55
Je suis installé chez VERIO il sont tt le tps updaté il doivent avoir la derniere version de mysql
Pour les mysql error il sont integré dans les fonctions tep_db_xxxx, donc ce n'est pas un problème de catch d'erreur.
Mais il me semble que mysql accepte pas cette requete a cause du min. Elle fonctionne sous oracl, donc coté syntaxe elle semble correcte.
donc pour vous expliquer ce que je veux atteindre : je dois recuperer les champs products_quantity pour un certain products_id et où le produit moyen est null, commencant par la commande la plus ancienne, apres je dois commencer a modifier ce prix moyen et ceci par commande jusqu' ce que la quantité que j ai ajouté a mon stock soit nule.
J ai essayer avec une autre solution qui est la suivante mais ca ne marche pas non plus
$contenu tep_db_query("select products_quantity as qte, orders_id as oid, prix_unit_moy as pm, orders_products_id as opid, products_id from " . TABLE_ORDERS_PRODUCTS . " where products_id '" . (int)$products_id . "' and prix_unit_moy is null order by products_quantity asc");


$prunit = (int)$HTTP_POST_VARS['prix_unit'];
while ($ctn = tep_db_fetch_array($contenu)) {
$this->ctn[] = array('qte' => $ctn['qte'],
'oid' => $ctn['oid'],
'opid' => $ctn['opid']);
}



for($k=0;$k<sizeof($ctn);$k++)
{ $id = (int)$ctn['oid'][$k] ;
if ($ctn['qte'][$k] <$qte_ajou )
{


tep_db_query("update " . TABLE_ORDERS_PRODUCTS . " set prix_unit_moy '" . $prunit . "' where orders_id '" . $id . "' ");
$qte_ajou = $qte_ajou - $var;
}



Je galère depuis 15 jours dessus donc je suis un peu trop perdu

Merci
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 avril 2006 à 15:05
"il doivent avoir la derniere version de mysql"

C'est pas une réponse ça...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 15:11
Je suis a la version MySql 3.23.58
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 avril 2006 à 15:15
Elle ne supporte pas ce type de requêtes, donc voilà, ton problème vient de là :-)

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
11 avril 2006 à 15:15
Sauf que MySQL 5 ca existe hein :p

Les requètes imbriqués ca marche pas sous Mysql 3 je crois ... !
0
cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 15:16
Merci !!!! ca me sauve la vie
non serieu ya pas de solution?
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
11 avril 2006 à 15:45
Bah tu fais 2 requètes distinctes...
0
cs_pbreaker Messages postés 34 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 9 février 2009
11 avril 2006 à 15:49
Ben j ai essayé aussi mais ca ne marche pas non plus!!!
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 avril 2006 à 17:04
Avec un LEFT JOIN (ou RIGHT, bref avec un JOIN) y'a souvent moyen de contourner ce genre de couilles.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous