IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Récupération éventuelle d'une variable pour faire des tests


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut [SQL] Récupération éventuelle d'une variable pour faire des tests
    Bonjour

    Voici mon problème :

    Je créer une fonction de recherche :

    Si on trouve dans la base de données quelque chose qui correspond à la variable récupéré dans le formulaire, on récupère le résultat de la requête et on l'affiche sous forme de tableau.

    Le problème que je rencontre c'est que quans rien ne correspond au données de la base mon tabeau s'affiche quand même avec des lignes vide au lieu du message que j'avais prévu d'afficher pour ce cas.

    Je voulais savoir si, quand on fait une requête on pouvait récupérer une variable (de type boolean de préférence) pour pouvoir faire des tests

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
    //On se connecte à MySQL
    mysql_connect("localhost", "root", "") or die('Connexion impossible');
    //On sélectionne la base
    mysql_select_db("repertoire") or die('Base introuvable');
     
    $sql = "SELECT Nom, Prenom, Telephone, Fonction, Diminutif, NomCellule, Bureau, Lieu FROM PERSONNES INNER JOIN CELLULES ON RefCellule = IdCellule INNER JOIN SERVICES ON RefService = IdServce WHERE NOM LIKE '".$_POST['recherche']."%' ORDER BY Nom ASC";
     
    $reponse = mysql_query($sql);
     
    if ($reponse != TRUE)
    {
    ?>	
     
    <font face="Arial" color="#0x003399" size="2"><b>Aucune personne trouvée dont le nom débute par :<?php echo $_POST['recherche'] ?></b></font>
            </td>
        </tr>
      </table>
    </div>
     
    	<?php
    	}
    	else
    	{
    	?>
     
           </td>
        </tr>
      </table>
    </div>
    <table width="100%" cellspacing="0" cellpadding="4" bordercolor="0x003399" border="1" height="75">
      <tr>
        <td align="center" height="16"><font size="2" face="Arial" color="0x003399"><b>Nom</b></font></td>
        <td align="center" height="16"><font face="Arial" size="2" color="0x003399"><b>Prénom</b></font></td>
        <td align="center" height="16"><font face="Arial" size="2" color="0x003399"><b>Téléphone</b></font></td>
        <td align="center" height="16"><font face="Arial" size="2" color="0x003399"><b>Fonction</b></font>
    	<td align="center" height="16"><font face="Arial" size="2" color="0x003399"><b>Service</b></font>	
    	<td align="center" height="16"><font face="Arial" size="2" color="0x003399"><b>Cellule</b></font>
        <td align="center" height="16"><font face="Arial" size="2" color="0x003399"><b>Bureau</b></font></td>
        <td align="center" height="16"><font face="Arial" size="2" color="0x003399 "><b>Batiment</b></font></td>
      </tr>
      <tr>  	
     
    <?php
    while ($donnees = mysql_fetch_array($reponse))
    {
    ?>
     
    <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Nom']; ?><font color="#FFFFFF">-</font></font></td>
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Prenom']; ?><font color="#FFFFFF">-</font></font></td>
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Telephone']; ?><font color="#FFFFFF">-</font></font></td>
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Fonction']; ?><font color="#FFFFFF">-</font></font></td>
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Diminutif']; ?><font color="#FFFFFF">-</font></font></td>	
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['NomCellule']; ?><font color="#FFFFFF">-</font></font></td>
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Bureau']; ?><font color="#FFFFFF">-</font></font></td>
        <td align="center" height="39"><font face="Arial" size="2"><?php echo $donnees['Lieu']; ?><font color="#FFFFFF">-</font></font></td>	
    	</tr>
     
    <?php
    	}
    }
    ?>
    Merci d'avance

  2. #2
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    De mémoire, la fonction mysql_num_rows permet de connaître le nombre de ligne retourné par votre requête SQL. Il suffit de tester sa valeur de retour avant d'afficher son tableau. Si la valeur est zéro, alors vous affichez autre chose que votre tableau.

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Tu peux aussi faire ça sinon (moins joli peut-être) :

    au lieu de
    tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(!($donnees = mysql_fetch_array($reponse)))
    et ensuite dans le else tu parcours avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    do... while($donnees = mysql_fetch_array($reponse))

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Salut Alexandre

    Merci pour ta réponse

    J'y avais pas pensé mais c'est pas bête comme astuce.
    Plutôt que de tester vrai où faux on test nombre de ligne = 0 ... ou pas

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Ok

    Le problème est résolue

    Je mes pas tout le code juste les grande ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $sql =" // La même requête que le premier message";
     
    $reponse = mysql_query($sql);
     
    $num = mysql_num_rows;
     
    if ($num == 0)
    {
     
    // Affiche le message pour dire qu'on a rien trouvé
    }
    else
    {
    //le même traitement que dans le premier message
    }
    Voila

    Salut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. Réponses: 3
    Dernier message: 12/06/2014, 17h47
  3. Réponses: 4
    Dernier message: 20/06/2011, 02h01
  4. Remplir une table pour faire des tests
    Par softopus dans le forum Débuter
    Réponses: 3
    Dernier message: 15/02/2010, 20h26
  5. utiliser des morceaux d'une image pour faire des boutons
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 14/12/2005, 00h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo