If /elseif

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 13:15

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 13:54

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?>
Modifié en dernier par ouckileou le 04 juil. 2005, 13:56, modifié 1 fois.

Mammouth du PHP | 1353 Messages

04 juil. 2005, 13:59

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

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 14:01

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 14:10

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()

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

04 juil. 2005, 14:13

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 .
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 14:21

ok, j'ai compris où était mon erreur, mais ma structure conditionnelle ne semble pas marcher: elle ne me retourne pas la bonne valeur

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 14:32

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?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

04 juil. 2005, 15:04

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 ?

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 15:18

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

04 juil. 2005, 15:19

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]
Modifié en dernier par mere-teresa le 04 juil. 2005, 16:02, modifié 1 fois.

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 15:41

apparemment switch n'aime pas les > ...

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

04 juil. 2005, 15:54

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 !
Modifié en dernier par mere-teresa le 04 juil. 2005, 16:01, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 juil. 2005, 15:56

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

lf
Invité n'ayant pas de compte PHPfrance

04 juil. 2005, 16:04

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