Requête sql, comment faite vous ?


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 0:32

Bonjour,

Quelle est votre façon d'écrire cette requête (Select id de telle table dont l'id est égal à cette id):
Code: Tout sélectionner
$query3 = mysql_query("SELECT id FROM `COMPLEMENT_INFO` WHERE id = '".$monid."'");
while($complement = mysql_fetch_array($query3))
{
   echo $complement['id'];
}

ou
Code: Tout sélectionner
$query3 = mysql_query("SELECT id FROM `COMPLEMENT_INFO` WHERE id = '".$monid."'");
$lid="";

while($complement = mysql_fetch_array($query3))
{
   $lid = $complement['id'];
   $lid.="$id";
echo ''.$lid.'';
}

ou encore d'autres façons ?
Quelle est la plus simple et la plus rapide pour appeler le résultat dans et en dehors du while?


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 0:45

pourquoi faire un while si tu as un seul id à récupérer?
Code: Tout sélectionner
$query3 = mysql_query("SELECT id FROM `COMPLEMENT_INFO` WHERE id = '".$monid."'");
$complement = mysql_fetch_array($query3)
$lid = $complement['id']; ou $lid = $complement[0]['id']; (je sais plus comment ça récupère)

mic54800
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 20 Juil 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 0:46

Re tryan !

Donc moi j'utilise ce code qui pour moi est .. très bien =) :

Code: Tout sélectionner
<?php
$query3 = mysql_query("SELECT id FROM `COMPLEMENT_INFO` WHERE id = '".$monid."'");
while($complement = mysql_fetch_array($query3))
{
    echo $complement['id'];
}
?>


et :

Code: Tout sélectionner
<?php
$query3 = mysql_query("SELECT id FROM `COMPLEMENT_INFO` WHERE id = '".$monid."'");
while($complement = mysql_fetch_array($query3))
{
    $lid[] = $complement['id'];
}

for($i=0; $i<count($lid); $i++)
{
    echo $lid[$i];
}
?>


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 0:58

mic54800 a écrit:...


Je comprends pas trop l'intérêt de faire 2 boucles ... à part perdre un peu de temps.

EDIT: et encore moins dans le code que tu as édité car il te suffisait d'initialisé ton $i à l'extérieur du while et de faire un $i++ avant la fin du while.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:03

screuscreu a écrit:pourquoi faire un while si tu as un seul id à récupérer?

Pas besoin de while pour 1 résultat ?
Quelle est la tête de la requête alors ?
Et si à l'inverse une requête est effectué avant celle ci pour obtenir le résultat de plusieurs id .. quelle serait alors la tête de la requête ?
Merki

tonguide
WRInaute passionné
WRInaute passionné
 
Messages: 1407
Inscription: 28 Nov 2003

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:05

Code: Tout sélectionner
$query = ....;

list($id) = mysql_fetch_row($query);

echo $id;

mic54800
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 20 Juil 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:06

C'est sur que c'est un peu louche mais je me suis déjà servi de ce genre de boucle.
En fait, dans un fichier inclu en début de chaque page, j'avais une requete qui me séléctionnait les catégories du site (par exemple : Scooters, Motos, Quads, Buggys ...) et étant donné que j'avais besoin à plusieurs endroits dans la page de ces données, je n'avais plus qu'à faire une petite boucle avec mon for() au lieu de retaper la requete à chaque fois.
C'est un peu tordu je peux le reconaitre mais perso, ça peut servir et surtout, ça évite toujours de se retrouver avec 5 fois la même requete dans une page.


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:09

tryan a écrit:
screuscreu a écrit:pourquoi faire un while si tu as un seul id à récupérer?

Pas besoin de while pour 1 résultat ?
Quelle est la tête de la requête alors ?
Et si à l'inverse une requête est effectué avant celle ci pour obtenir le résultat de plusieurs id .. quelle serait alors la tête de la requête ?
Merki

Pour la première question c'est le code que j'ai mis dans ma première réponse.
Pour la 2ème :

Code: Tout sélectionner
<?php
$query3 = mysql_query("SELECT id FROM `COMPLEMENT_INFO` WHERE status="Actve");
while($complement = mysql_fetch_array($query3))
{
    $lid[] = $complement['id'];
}

$query4 = mysql_query("SELECT name, coucou, tralala FROM `PRODUITS` WHERE id IN (" . implode(', ',$lid) . "));
while($complement = mysql_fetch_array($query4))
{
  // tes données
}

?>


OU directement (et mieux) :
Code: Tout sélectionner
<?php

$query4 = mysql_query("
SELECT
     name,
     coucou,
     tralala
FROM
     `PRODUITS`
WHERE
     id IN (
          SELECT
               id
          FROM
               `COMPLEMENT_INFO`
          WHERE
               status="Actve"
     )
);
while($complement = mysql_fetch_array($query4))
{
  // tes données
}

?>


En espérant ne pas avoir fait d'erreurs grossières.

EDIT : indentation comme j'aime
Dernière édition par screuscreu le Mar Fév 10, 2009 1:11, édité 1 fois.


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:10

tonguide a écrit:
Code: Tout sélectionner
$query = ....;

list($id) = mysql_fetch_row($query);

echo $id;

La je ne pige pas cette partie list($id) .. que vient faire le list() ici ?


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:15

tryan a écrit:
tonguide a écrit:
Code: Tout sélectionner
$query = ....;

list($id) = mysql_fetch_row($query);

echo $id;

La je ne pige pas cette partie list($id) .. que vient faire le list() ici ?


C'est une façon de nommer des variables en sortie de requète (entre autre).
Voir exemple qui sort de la doc php :
Code: Tout sélectionner
<table>
<tr>
  <th>Nom de l'employé</th>
  <th>Salaire</th>
</tr>

<?php

$resultat = mysql_query ("SELECT id, nom, salaire FROM employes",$conn);
while (list ($id, $nom, $salaire) = mysql_fetch_row ($resultat)) {
    echo " <tr>\n".
           "  <td><a href=\"info.php?id=$id\">$nom</a></td>\n".
           "  <td>$salaire</td>\n".
           " </tr>\n";
}

?>
</table>


En gros rien à voir avec ton problème.

tonguide
WRInaute passionné
WRInaute passionné
 
Messages: 1407
Inscription: 28 Nov 2003

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:16

Euh, faut lire la doc PHP.

Un exemple fournit sur la doc en question :

<?php

$info = array('coffee', 'brown', 'caffeine');

// Liste toutes les variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
?>

Si tu prends notre cas, ton "$info" ressemble à

$info = array('id' => 'valeur');

Donc si tu veux recup "valeur", tu fais comme dans l'exemple

list($nom_de_ta_variable) = $info;

Sauf que dans ton cas, le $info c'est mysql_feth_row($query);


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:18

tonguide a écrit:Euh, faut lire la doc PHP.

Un exemple fournit sur la doc en question :

<?php

$info = array('coffee', 'brown', 'caffeine');

// Liste toutes les variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
?>

Si tu prends notre cas, ton "$info" ressemble à

$info = array('id' => 'valeur');

Donc si tu veux recup "valeur", tu fais comme dans l'exemple

list($nom_de_ta_variable) = $info;

Sauf que dans ton cas, le $info c'est mysql_feth_row($query);


Oui parce que tu es en feth_row et que monsieur utilise array ;)
Donc lui il commence à se perdre !!!

Si tu as des question envoi moi un MP on ira plus vite sur msn/gtalk/skype/aim ou autre ... suis assez connecté;)

tonguide
WRInaute passionné
WRInaute passionné
 
Messages: 1407
Inscription: 28 Nov 2003

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 1:23

Si tu le dis, qu'il utilise mysql_fetch_row ou mysql_fetch_array, ça marchera (tu peux tester si tu ne me crois pas).
A la différence que mysql_fetch_row est plus optimisé, et c'est justement ce qu'il a demandé.


blman
WRInaute accro
WRInaute accro
 
Messages: 3077
Inscription: 5 Sep 2003

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 9:59

Quand tu ne veux sélectionner qu'1 seul enregistrement en BDD, n'oublie pas non plus d'utiliser "LIMIT 1" à la fin de ta requête SQL. Ca évite que le script parcours toute la base de données et ça gagne du temps.

tonguide
WRInaute passionné
WRInaute passionné
 
Messages: 1407
Inscription: 28 Nov 2003

Re: Requête sql, comment faite vous ?

Message le Mar Fév 10, 2009 12:33

Si tu cherches sur un ID en primary key, c'est moins optimisé de rajouté "LIMIT 1" qui ajoute une instruction inutile (un ID étant sensé être unique, si c'est pas le cas, effectivement, il faut l'ajouter).

Requête sql, comment faite vous ?

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités