Rechercher : dans
Par :

[SQL] condition IF si la requête revient vide

Dernière réponse le 31 mar 2008 à 16:06:06 chantaussel, le 31 mar 2008 à 14:43:20 
 Signaler ce message aux modérateurs

Bonjour,

Je fais une requête SQL sur une bdd et je voudrais exécuter une instruction si la requête revient vide (IF) et une autre instruction si elle contient des données (ELSE). Il m'exécute bien ce qu'il y a dans le ELSE, mais le IF ne fonctionne pas. C'est surement tout bête mais je n'y arrive pas...

J'ai essayé:

$reponse = mysql_query("SELECT * FROM table WHERE numero='2'");
if ($reponse == NULL) {
	--fais ci--
}
else {
	--fais ça--
}



J'ai aussi essayé

if ($reponse == "")


et ça marche pas non plus...

Merci d'avance
Quelques bases en javascript, débute en php/mySQL
J'essaie de mettre en ligne mon arbre généalogique.
Configuration: Windows XP
Firefox 2.0.0.13

Meilleures réponses pour « [SQL] condition IF si la requête revient vide » dans :
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
Langage C++ - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...

1

giheller, le 31 mar 2008 à 14:47:05

Bonjour,

if (!$reponse) {
// retour vide
}
else {
// ya quelquechose
}
JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

2

chantaussel, le 31 mar 2008 à 15:06:57

Merci giheller, mais ça marche toujours pas, je mets mon script ci dessous pour plus de détails:

$sosa = $_GET['i'];
$counter = 1;

mysql_connect("localhost", "mon_site", "pass");
mysql_select_db("ma_bdd");
$reponse = mysql_query("SELECT * FROM table WHERE sosa='$sosa'");

if (!$reponse) {
	$leaf[$counter][0] = $sosa;
}
else {
	$donnees = mysql_fetch_array($reponse);
	$leaf[$counter][0] = $donnees['sosa'];
}

echo $leaf[1][0];



Ca parait surement bizarre comme code, mais je voudrais ensuite le répéter avec une boucle (c'est pour ça qu'il y a un $counter au début..)

Lorsque la variable que je récupère au début avec GET apparait dans le champ "sosa" il m'affiche bien ce que je veux avec le echo.
Mais lorsque je teste avec une valeur qui n'existe pas dans le champ "sosa" il ne m'affiche rien. Alors que dans ce cas je voudrais qu'il affecte une valeur "par défaut" ($leaf[$counter][0] = $sosa;)
Quelques bases en javascript, débute en php/mySQL
J'essaie de mettre en ligne mon arbre généalogique.

Répondre à chantaussel

3

sly-bzh, le 31 mar 2008 à 15:19:01

Si je comprend bien, si tu n'as pas d'entrée dans ta base correspondant à $sosa, tu veux faire

$leaf[$counter][0] = $sosa;
et si $sosa est déja dans ta base tu veux faire
$donnees = mysql_fetch_array($reponse);
$leaf[$counter][0] = $donnees['sosa'];

Si j'ai bien compris, je te propose ça :

$sosa = $_GET['i'];
$counter = 1;

mysql_connect("localhost", "mon_site", "pass");
mysql_select_db("ma_bdd");
$reponse = mysql_query("SELECT * FROM table WHERE sosa='$sosa'");
$test = mysql_fetch_array($reponse);
if ($test) {
    $donnees = mysql_fetch_array($reponse);
    $leaf[$counter][0] = $donnees['sosa'];

}
else {
    $leaf[$counter][0] = $sosa;
}

echo $leaf[1][0];
Proverbes breton : 
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh

4

giheller, le 31 mar 2008 à 15:19:23
  • +1

On va tracer


$sosa = $_GET['i'];
$counter = 1;
echo "sosa => ".$sosa;

mysql_connect("localhost", "mon_site", "pass");
mysql_select_db("ma_bdd");
$query = "SELECT * FROM table WHERE sosa='".$sosa."'";
$reponse=mysql_query($query);
// Vérification du résultat
// Ceci montre la requête envoyée à MySQL ainsi que l'erreur. Utile pour déboguer.
if (!$reponse) {
$message = "Requête invalide : " . mysql_error() . "\n";
$message .= "Requête complète : " . $query;
die($message);
}
$nblignes=mysql_num_rows($reponse);

for ($i=0;$i<$nblignes;$i++){

$ligne = mysql_fetch_row($reponse);
echo "<pre>";print_r($ligne); echo "</pre>;
}

--
JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

5

chantaussel, le 31 mar 2008 à 15:44:11

Merci sly-bzh ça marche nickel!
Giheller, j'ai pas le niveau pour comprendre tout ce que tu as mis, alors je vais m'orienter vers le plus simple! Merci quand même!

Bon en fait, si je comprend bien ce que nous renvoie MySQL ($reponse) n'est pas NULL, même si la requête est vide, ce qui est nul c'est le tableau ($test ou $donnees) créé à partir de $reponse.
Ok, c'est pas évident mais ça me parait clair maintenant!

Merci beaucoup :)
Quelques bases en javascript, débute en php/mySQL
J'essaie de mettre en ligne mon arbre généalogique.

Répondre à chantaussel

6

giheller, le 31 mar 2008 à 15:47:52

Gardes ceci , cela te permettra de voir ce qui est dans un tableau
echo "<pre>";print_r($ligne); echo "</pre>"; // ici le tableau $ligne JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

7

chantaussel, le 31 mar 2008 à 15:52:57
  • +1

Et peut même faire un chouia plus court, car c'est finalement pas la peine de passer par $test ;)

$sosa = $_GET['i'];
$counter = 1;

mysql_connect("localhost", "mon_site", "pass");
mysql_select_db("ma_bdd");
$reponse = mysql_query("SELECT * FROM table WHERE sosa='$sosa'");
$donnees = mysql_fetch_array($reponse);

if ($donnees) {
    $leaf[$counter][0] = $donnees['sosa'];
}

else {
    $leaf[$counter][0] = $sosa;
}

echo $leaf[1][0];

Quelques bases en javascript, débute en php/mySQL
J'essaie de mettre en ligne mon arbre généalogique.

Répondre à chantaussel

8

 sly-bzh, le 31 mar 2008 à 16:06:06

Content d'avoir pu aider
Et effectivement, pas besoin de passer par $test (en fait j'avoue ne pas avoir lu ce que tu mettais dans ton if{} et else{} j'ai juste fait un copier/coller...) Proverbes breton : 
Si les mouettes ont pied, il est temps de virer
Il vaut mieux être saoul que con, ça dure moins longtemps

Répondre à sly-bzh
Collection CommentÇaMarche.net