Partage
  • Partager sur Facebook
  • Partager sur Twitter

Deux requêtes en une

Sujet résolu
    3 mai 2011 à 22:53:35

    Bonsoir,

    Je viens à vous, parce que je viens de rencontrer un soucis.
    En effet, depuis hier j'essaye de faire un truc en PDO (afficher si les soldats/véhicules sont opérationnels ou pas ...). Or, je n'ai pas trouvé comment faire ça en une requête ...
    J'ai une table "soins" avec dedans comme colonne (id, iduser, type).
    type 1 = Les soldats.
    type 2 = Les véhicules.

    Je n'ai pas trouvé d'autre solution que de faire deux requêtes ...

    Les requêtes :
    <?php
    $requete1 = $bdd->prepare("SELECT type FROM soins WHERE iduser= :iduser AND type=1");
    $requete1->execute(array(
    		'iduser' => $_SESSION['id']));
    $donnees1 = $requete1->fetch(PDO::FETCH_OBJ);
    
    $requete2 = $bdd->prepare("SELECT type FROM soins WHERE iduser= :iduser AND type=2");
    $requete2->execute(array(
    		'iduser' => $_SESSION['id']));
    $donnees2 = $requete2->fetch(PDO::FETCH_OBJ);
    


    L'affichage :
    <?php
    if (empty($donnees1)) {
    	echo '<span class="vert">Vos soldats sont op&eacute;rationnels.</span><br />'; 
    } else {
    	echo '<span class="orange">Vos soldats sont bless&eacute;s.</span><br />';
    }
    if (empty($donnees2)) {
    	echo '<span class="vert">Vos v&eacute;hicules sont fonctionnels.</span><br />';
    } else {
    	echo '<span class="orange">Vos v&eacute;hicules sont endommag&eacute;s.</span><br />';
    }
    


    Si vous pouvez m'aider :).

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2011 à 23:47:11

      select max(case type when 1 then 1 else 0 end), max(case type when 2 then 1 else 0 end)
      from soins
      where iduser = :iduser
      and type in (1, 2)
      


      Première colonne = 1 => type 1
      Deuxième colonne = 1 => type 2
      • Partager sur Facebook
      • Partager sur Twitter
        3 mai 2011 à 23:52:14

        Merci.

        Et j'affiche ça comment ?
        • Partager sur Facebook
        • Partager sur Twitter
          6 mai 2011 à 0:50:59

          Up ...

          Personne pour m'éclairer ?
          • Partager sur Facebook
          • Partager sur Twitter
            6 mai 2011 à 8:20:00

            Plus simple : SELECT type FROM soins WHERE iduser= :iduser AND type IN (1,2)
            • Partager sur Facebook
            • Partager sur Twitter
              6 mai 2011 à 10:02:28

              Salut,

              Merci à pythonneries pour ses réponses.
              Je mets également le code PHP qu'il m'a donné en Privé, si ça peut servir à des personnes ...

              <?php
              $ligne = $machin->fetch(/*le sql va ici*/)  // $machin est le "prepared statement"
              if ($ligne === false) {
                // pas de type 1 ni de type 2 pour l'utilisateur, ou iduser n'est pas une bonne valeur
              } else {
                if ($ligne[0] == 1) {
                   // on a du type 1
                }
                if ($ligne[1] == 1) {
                   // on a du type 2
                }
              }
              
              • Partager sur Facebook
              • Partager sur Twitter

              Deux requêtes en une

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown