Page 1 sur 2
If /elseif
Posté : 04 juil. 2005, 13:15
par lf
Bonjour,
Je voudrais pouvoir utiliser sur une même page le résultat d'une requête MySQL retourné par un script dans un autre script comprenant une structure conditionnelle if / elseif... Mais je crains de ne pas savoir le faire.
Au cas où ce que j'écris soit vraiment délirant, je vous envoie ma tentative de scritp: vous comprendrez peut-être mieux ce que j'essaie de faire.
<?php $mysql_link = mysql_connect('localhost','XX','X');
$requete = 'SELECT cp_cycleLESC_Qt FROM cycleLESC;';
$result = mysql_unbuffered_query('CP', $requete);
if ($result < 24) {
$mysql_link1 = mysql_connect('localhost','XX','X');
$requete1 = 'SELECT cp_prod_pu FROM produits WHERE cp_prod_id=1;';
$result1 = mysql_db_query('CP', $requete1);
$valeur_aff1 = mysql_fetch_array($result1);
echo $valeur_aff1[cp_prod_pu];}
elseif ($result?>
24 and <48) {
$mysql_link2 = mysql_connect('localhost','XX','X');
$requete2 = 'SELECT cp_prod_pu1 FROM produits WHERE cp_prod_id=1;';
$result2 = mysql_db_query('CP', $requete2);
$valeur_aff2 = mysql_fetch_array($result2);
echo $valeur_aff2[cp_prod_pu1];}
elseif ($result > 48 and < 72) {
$mysql_link3 = mysql_connect('localhost','XX','X');
$requete3 = 'SELECT cp_prod_pu2 FROM produits WHERE cp_prod_id=1;';
$result3 = mysql_db_query('CP', $requete3);
$valeur_aff3 = mysql_fetch_array($result3);
echo $valeur_aff3[cp_prod_pu2];}
elseif ($result > 72) {
$mysql_link4 = mysql_connect('localhost','XX','X');
$requete4 = 'SELECT cp_prod_pu3 FROM produits WHERE cp_prod_id=1;';
$result4 = mysql_db_query('CP', $requete4);
$valeur_aff4 = mysql_fetch_array($result4);
echo $valeur_aff4[cp_prod_pu3];}
?>
Merci d'avance
Posté : 04 juil. 2005, 13:54
par ouckileou
quand tu postes du code, met le entre balises [ PHP], c'est un peu moins dégueu à lire, et ça prend pas les smileys
<?php $mysql_link = mysql_connect('localhost','XX','X');
$requete = 'SELECT cp_cycleLESC_Qt FROM cycleLESC;';
$result = mysql_unbuffered_query('CP', $requete);
if ($result < 24) {
$mysql_link1 = mysql_connect('localhost','XX','X');
$requete1 = 'SELECT cp_prod_pu FROM produits WHERE cp_prod_id=1;';
$result1 = mysql_db_query('CP', $requete1);
$valeur_aff1 = mysql_fetch_array($result1);
echo $valeur_aff1[cp_prod_pu];}
elseif ($result?>
24 and <48 {
$mysql_link2 = mysql_connect('localhost','XX','X');
$requete2 = 'SELECT cp_prod_pu1 FROM produits WHERE cp_prod_id=1;';
$result2 = mysql_db_query('CP', $requete2);
$valeur_aff2 = mysql_fetch_array($result2);
echo $valeur_aff2[cp_prod_pu1];}
elseif ($result > 48 and < 72) {
$mysql_link3 = mysql_connect('localhost','XX','X');
$requete3 = 'SELECT cp_prod_pu2 FROM produits WHERE cp_prod_id=1;';
$result3 = mysql_db_query('CP', $requete3);
$valeur_aff3 = mysql_fetch_array($result3);
echo $valeur_aff3[cp_prod_pu2];}
elseif ($result > 72) {
$mysql_link4 = mysql_connect('localhost','XX','X');
$requete4 = 'SELECT cp_prod_pu3 FROM produits WHERE cp_prod_id=1;';
$result4 = mysql_db_query('CP', $requete4);
$valeur_aff4 = mysql_fetch_array($result4);
echo $valeur_aff4[cp_prod_pu3];}
?>
sinon c'est normal que y'ait une balise PHP fermée ici :
elseif ($result?>
Posté : 04 juil. 2005, 13:59
par guilt92
j avais aussi réecris le code mais j ai été devancé par toi ouckileou donc suppression...
A part ca je suis d accord c'est sur que si on ferme la balise php par le ?> dans le code ca cause des problemes
Posté : 04 juil. 2005, 14:01
par lf
oui je sais, c'est pas du joli. Et en plus, comme je travaillais sur NVu

, il a pris la liberté de me massacrer certaines balises.
Après avoir corrigé quelques erreurs de code, comme celle des intervalles, apache m'affiche ça:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Library/Apache2/htdocs/AGpLESC2.php on line 185
et pareil si j'essaye mysql_unbuffured_query
Posté : 04 juil. 2005, 14:10
par ouckileou
quand on à ça :
Code : Tout sélectionner
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource
c'est généralement qu'il y a un problème au niveau de la requête
alors on débugue, et pour ça
- on affiche le code SQL exécuté et on l'envoie directement dans phpMyAdmin
- ou on affiche les erreurs sql avec mysql_error()
Posté : 04 juil. 2005, 14:13
par mere-teresa
Ooooh comme c'est rigolo :
http://www.nexen.net/docs/php/annotee/f ... -query.php
8.78.16 mysql_db_query()
Envoie une requête MySQL à un serveur MySQL
[ Exemples avec mysql_db_query ] PHP 3, PHP 4, PHP 5
Description
resource mysql_db_query ( string database , string query , resource link_identifier )
Cette fonction est obsolète, et abandonnée depuis PHP 4.0.6. Ne l'utilisez plus (ou pas !). Alternative recommandée : mysql_select_db et mysql_query .
Posté : 04 juil. 2005, 14:21
par lf
ok, j'ai compris où était mon erreur, mais ma structure conditionnelle ne semble pas marcher: elle ne me retourne pas la bonne valeur
Posté : 04 juil. 2005, 14:32
par lf
et puis, avec mysql_query et mysql_db_select, je me retrouve avec le même message.
Avec db_query au moins je n'ai pas de message d'erreur. Je crois que mon script n'arrive pas à dire à if... qu'il doit trouver sa valeur dans la première requête. Non?
Posté : 04 juil. 2005, 15:04
par mere-teresa
As-tu essayé de faire echo $requete1; ?
Pour vérifier ce que contenait ta requête ?
As-tu fais des
echo "je suis dans le if" et echo "je suis dans le else" pour voir comment s'exécutait ton script ?
Posté : 04 juil. 2005, 15:18
par lf
c'est bien ce que je craignais: ça me retourne une valeur correspondant à la condition if alors que ça devrait me retourner une valeur correspondant au 2ème elseif
et le echo $requete1; me revoit ma requête SELECT...
normal?

Posté : 04 juil. 2005, 15:19
par mere-teresa
Oui c'est normal, tu as fait une erreur dans ton script. L'ordi ne fait que ce que tu lui dis de faire 
http://www.phpfrance.com/forums/voir_sujet-5351.php
- Pour vérifier :
à chaque étape tu mets :
echo "je suis dans le if" ou echo "je suis dans le else"
=> tu verras jusqu'où ton script fonctionne.
- Dans ton cas, tu devrais même, avant le if/else faire un echo $result.
Tu t'apercevrais sans doute que tu as un Resource id#6, càd un pointeur vers les résultats et non pas une valeur...
- Ensuite, pourquoi n'utilises-tu pas une structure de type switch ?
Le manuel PHP : switch
[/color]
Posté : 04 juil. 2005, 15:41
par lf
apparemment switch n'aime pas les > ...
Posté : 04 juil. 2005, 15:54
par mere-teresa
apparemment switch n'aime pas les > ...
J'en apprends tous les jours
enfin, je n'aurais jamais eu l'idée d'essayer, je ne sais pas ....mais bon !
Posté : 04 juil. 2005, 15:56
par ouckileou
il manque des bouts au thread là ? parceque je comprends pas tout
tu peux faire voir ton switch qui n'aime pas les <
parcequ'on peut tester des intervalles dans un switch sans problème
Posté : 04 juil. 2005, 16:04
par lf
voilà le script:
[
<?php
$mysql_link = mysql_connect('localhost','XX','X');
$requete = 'SELECT cp_cycleLESC_Qt FROM cycleLESC;';
$result = mysql_db_query('CP', $requete);
switch ($result) {
case<24:
$mysql_link1 = mysql_connect('localhost','XX','X');
$requete1 = 'SELECT cp_prod_pu FROM produits WHERE cp_prod_id=1;';
$result1 = mysql_db_query('CP', $requete1);
$valeur_aff1 = mysql_fetch_array($result1);
echo $valeur_aff1[cp_prod_pu];}
case>24 and <48) {
$mysql_link1 = mysql_connect('localhost','XX','X');
$requete2 = 'SELECT cp_prod_pu1 FROM produits WHERE cp_prod_id=1;';
$result2 = mysql_db_query('CP', $requete2);
$valeur_aff2 = mysql_fetch_array($result2);
echo $valeur_aff2[cp_prod_pu1];}
case> 48 and <72) {
$mysql_link1 = mysql_connect('localhost','XX','X');
$requete3 = 'SELECT cp_prod_pu2 FROM produits WHERE cp_prod_id=1;';
$result3 = mysql_db_query('CP', $requete3);
$valeur_aff3 = mysql_fetch_array($result3);
echo $valeur_aff3[cp_prod_pu2];}
case > 72) {
$mysql_link1 = mysql_connect('localhost','XX','X');
$requete4 = 'SELECT cp_prod_pu3 FROM produits WHERE cp_prod_id=1;';
$result4 = mysql_db_query('CP', $requete4);
$valeur_aff4 = mysql_fetch_array($result4);
echo $valeur_aff4[cp_prod_pu3];}
?>]