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 :roll:

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];}
?>]