[PHP] If avec variable SQL

Bonjour,

je ne sais pas si mon titre est clair , mais en gros je voudrais savoir deja si c est possible et apres comment ^^

donc je souhaite développer une page PhP regroupant plusieur info venant de differente table SQL

voici mon code commenté

[quote]<?php
mysql_connect("localhost", "root", ""); //log de connexion a serveur SQL
mysql_select_db("GLPI"); //choix de la BDD
$reponse = mysql_query("SELECT * FROM glpi_computers ORDER BY domain")or die(mysql_error()); //choix de la table

while ($donnees = mysql_fetch_array($reponse) ) //$donnees recupere toute les info de la table
{
?>
<p>
<strong>Nom du Poste</strong> : <?php echo $donnees['name']; // affiche le nom du poste ?><br />
<strong> OS </strong> : <?php
if ($donnees['OS'] == 0) //recupere l ID de l OS installé sur le poste
{
echo Windows_2000 ; // si ID=0 c est win2000 etc....
}
?><br />

<?php echo $donnees['os'];?>

</p>

<?php
}

mysql_close(); // Déconnexion de MySQL
?>
/quote
Configuration: Windows 2000
Firefox 3.0.10

12 réponses

  1. bonjour

    $donnees['os'] et $donnees['OS'] sont deux variables différentes

    au passage, echo "Windows_2000"; et non pas echo Windows_2000;
    (sauf si tu as effectivement défini une constante avec define ("Windows_2000","Windows_2000");
    1. j ai envoyé le message non complet, mauvais clique entre envoyer et prévu

      donc en fait mon code fonctionne mais pas comme je le souhaiterais ce qui veut dire que j ai une erreur

      car en resultat j ai ca

      Nom du Poste : test
      OS : Windows_2000
      1

      Nom du Poste : TESTLGLPI
      OS : Windows_2000
      1

      ce qui n est pas logique quand je lui demande d afficher la variable il me dit qu elle vaut "1" alors qu il prend bien le IF qui est pour une valeur de zero

      dans ma BDD l ID OS est de "1" ce qui veut dire qu il m affiche la bonne valeur mais pour le If cela reste un mystere car lorsque je met ==1 cela ne m affiche plus rien

      le IF n est qu un test car par la suitre le voudrais que cette variable soit utiliser pour recupéré le Nom grace a une autre Table
      1. essaye =="1"
        peut être c'est enregistré en tant que chaîne dans votre BD
        1. non cela ne change rien, ce que je n arrive pas a comprendre c est pourquoi la variable $donnees me donne bien 1 quand elle s affiche avec un simple echo alors qu elle n est pas "==1" dans la condition IF

          si sa peut aidée j explique le lien avec la BDD

          donc j ai une BDD avec tout plein de table , rien de plus normale en fait

          4 table m interresse ,

          la 1er qui répertorie les PC du parc ( ID name os serial location domain network model etc ...)
          sur celle ci je ne m intéresse juste au nom et domaine
          -le nom est donné en charactere donc pas de souci
          -le domaine et donnée par un chiffre qui renvoie sur l ID d une autre table ou sont renseigné les different domaine
          -c est exactement le meme chose pour les OS

          et c est la même chose pour ce qui est des logiciel ID poste a tels ou tels ID software d installé et je doit mettre tout ceci en commum pour avoir un beau tableau ou l ont poura simplement tout ceci

          j espère avoir été assé clair

          merci pour votre aide

          1. Ha mais quel boulet je fait, une aprem de prise de tete pour une erreur toute simple , c été bien les MAJ.

            une simple relecture par un autre suffit a le voir, merci beaucoup

            peut on faire une requete SQL vers une autre table a l intérieure du "if" ?
            1. peut on faire une requete SQL vers une autre table a l intérieure du "if"
              Bien sûr que oui. Tu fais des requêtes où tu veux, quand tu veux, où es-tu allé chercher qu'il y avait des restrictions ?
          2. ba je debute en PhP donc je posait la question vu que je vais testé mais comme cela ne va pas marché du 1er coup bien évidement la je suis sur que c est possible et que l erreur viens de moi
            1. Si tu as encore l'exemple sous la main et qu'il n'est pas trop long, mets-le ici, on verra peut-être ce qui n'allait pas.
          3. Un conseil sinon: évite les SELECT *, mets plutôt les champs de ton choix (question de performance et de bonnes habitudes de programmation).
            1. Un conseil sinon: évite les SELECT *, mets plutôt les champs de ton choix (question de performance et de bonnes habitudes de programmation).
              1. <?php
                mysql_connect("localhost", "root", ""); //log de connexion a serveur SQL
                mysql_select_db("GLPI"); //choix de la BDD
                $reponse = mysql_query("SELECT * FROM glpi_computers ORDER BY domain")or die(mysql_error()); //choix de la table

                while ($donnees = mysql_fetch_array($reponse) ) //$donnees recupere toute les info de la table
                {
                ?>
                <p>
                <strong>Nom du Poste</strong> : <?php echo $donnees['name']; // affiche le nom du poste ?><br />
                <strong> OS </strong> : <?php $osid = $donnees['os']; //donne a $os l ID de l'OS du poste ?>
                <?php
                if ($osid > 0 )
                {
                $os = mysql_query("SELECT name FROM glpi_dropdown_os") or die(mysql_error()); // recherhe dans la table des OS
                while( $donneesos = mysql_fetch_array($os) )
                {
                echo $donneesos['name']; // affiche le nom de l OS
                }
                }
                ?><strong><?php echo $osid; ?><br /></strong>
                <strong>Domaine</strong> : <?php $domaineid = $donnees['domain']; // fait de meme avec le nom de domaine
                echo $domaineid; ?>

                </p>

                <?php

                }

                mysql_close(); // Déconnexion de MySQL
                ?>

                voici ce que ca donne
                https://imageshack.com/