Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2006, 09h55   #1
Futur Membre du Club
 
Inscription : mai 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 34
Points : 17
Points : 17
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 :
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
mougeole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 10h56   #2
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 121
Points : 1 121
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.
__________________
Alexandre T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 11h06   #3
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Tu peux aussi faire ça sinon (moins joli peut-être) :

au lieu de
tu mets
Code :
1
2
 
if(!($donnees = mysql_fetch_array($reponse)))
et ensuite dans le else tu parcours avec un
Code :
do... while($donnees = mysql_fetch_array($reponse))
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 11h08   #4
Futur Membre du Club
 
Inscription : mai 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 34
Points : 17
Points : 17
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
mougeole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 13h56   #5
Futur Membre du Club
 
Inscription : mai 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 34
Points : 17
Points : 17
Ok

Le problème est résolue

Je mes pas tout le code juste les grande ligne :

Code :
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
mougeole est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h12.


 
 
 
 
Partenaires

Hébergement Web