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 16/01/2007, 14h29   #1
Membre habitué
 
Inscription : mai 2006
Messages : 382
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2006
Messages : 382
Points : 118
Points : 118
Par défaut [SQL] Utilisation de "if"

bonjour a tous

voila j'ai du code qui me permet d'afficher les personnes qui fete leur anniversaire aujourd'hui mais le probleme c'est que s'il n'y a aucune personne dans la base qui fete son anniversaire aujourd'hui, il ne m'affiche rien. Alors qu'il devrait m'afficher une petite phrase. Je pense que mon if n'est pas bon ou que la requete sql n'est pas bonne. En faite, s'il ne trouve pas de personne dans la base qui fete son anniversaire, la requete sql ne renvoie rien mais je ne sais pas comment faire pour resoudre ce pb

voici le code de ma page :

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<html><head><title>Bienvenue sur l'Intranet de Super Diet Production.</title></head>

<body >
<?
$date = date("d-m-Y") ;
$heure = date("H:i") ;
?>

<div align="center">
  <center>
  <table border="0" bordercolor="#000000" width="897" height="661" >
    <tr>
      <td width="151" height="145"><img src="photos/coccinelle.jpg" width="206" height="165"></td>
      <td width="338" height="145" align="center"><i>Super Diet est une société leader dans les métiers de la santé au naturel et des compléments alimentaires. Super Diet exporte dans plus de 20 pays sur tous les continents. Depuis 40 ans, Super Diet fonctionne dans le plus grand respect des principes éthiques hérités de ses fondateurs.</i></td>
      <td width="392" height="145"><img border="0" src="photos/baniere.png" width="394" height="164"></td>
    </tr>
    <tr>
      <td width="897" height="57" colspan="3" align="center"><img src="photos/coccinelle1.jpg"><i><b><u><? print ("Nous sommes le $date et il est $heure") ; ?></u></b></i><img src="photos/coccinelle1.jpg"></td>
    </tr>
    <tr>
      <td width="146" height="435" valign="top" align="center"><BR><b><font color="#FF0000">-- Identification -- </font></b><br><form method="post" action="verif.php">
        Login : <input type="text" name="log">
        Password : <input type="password" name="mdp">
        <input type="submit" name="envoie" value="OK"><input type="reset" name="annuler" value="annuler">
        </form><br>
    <p align="center">
    <a href="webmaster.html">Espace privé</a>
    </p>
    </td>
      <td width="735" height="435" colspan="2" valign="top" align="center"><BR><b><font color="#FF0000">--- Anniversaire ---</font></b>
      <table border="1" bordercolorlight="#FF0000" bordercolordark="#FF0000">
      <TR>
      <td width="510" height="133"><p align="center"><img src="photos/anniversaire.gif" width="70" height="57"></p>
<?php
$Jour = date("d"); // permet d'afficher le numéro du jour en cours
$MoisTexte = date("n");    
switch ($MoisTexte) {    
case 1:    
$MoisTexte = "janvier"; // permet d'afficher le mois en cours    
break;    
case 2:    
$MoisTexte = "février";    
break;    
case 3:    
$MoisTexte = "mars";    
break;    
case 4:    
$MoisTexte = "avril";    
break;    
case 5:    
$MoisTexte = "mai";    
break;    
case 6:    
$MoisTexte = "juin";    
break;    
case 7:    
$MoisTexte = "juillet";    
break;    
case 8:    
$MoisTexte = "août";    
break;    
case 9:    
$MoisTexte = "septembre";    
break;    
case 10:    
$MoisTexte = "octobre";    
break;    
case 11:    
$MoisTexte = "novembre";    
break;    
case 12:    
$MoisTexte = "décembre";    
break;    
}    
$AnneeHeureMinutes = date("Y H:i:s");       
$date = $Jour . $MoisTexte . $AnneeHeureMinutes; // permet l'écriture de année et de heure en cours    
 
$Annee=date('Y') ; // permet d'afficher l'année en cours

?>
<?
$link = mysql_connect("localhost", "root", "")or die (mysql_error());
mysql_select_db("intranet")or die (mysql_error()) ;

$reponse = mysql_query("SELECT Nom_pers, Prenom_pers, Jour_naissance, Mois_naissance FROM personnel WHERE Jour_naissance LIKE '%$Jour%' OR Mois_naissance LIKE '%$MoisTexte%' ") ;
print "<p align='center'>";
print "Nous sommes le $Jour $MoisTexte $Annee et c'est l'anniversaire de : " ;
print "</p>" ;

while ($donnees = mysql_fetch_array($reponse))
{
$journaiss=$donnees['Jour_naissance'] ; //jour de naissance de la personne

$moisnaiss=$donnees['Mois_naissance'] ; //mois de naissance de la personne

$nom=$donnees['Nom_pers'] ;

$prenom=$donnees['Prenom_pers'] ;

if (($journaiss == $Jour) && ($moisnaiss == $MoisTexte))

{
        print "<p align='center'>";
        print "<b>";
        echo "$nom $prenom" ; // permet d'afficher tous les noms correspondant au jour et au mois de naissance
        print "&nbsp;" ;
        print "</b>" ;
        print "</p>" ;    
}
    else
            {
            echo "personne!!!" ;
            }
}
mysql_close() ;
?>
</td>
      </table>
      <BR>
      <font color ="#FF0000"><b>--- Trombinoscope ---</b></font>
      <form method="post" action="trombinoscope.php">
      <input type="submit" name="envoie" value="Visualiser le trombinoscope">
      </form>
    <BR>
    <font color="#FF0000"><b>--- Chiffres du mois ---</b></font><br><br>
    <a href="Page.htm">VOIR LES CHIFFRES</a>
  </center>
</div>
</body>
</html>
merci d'avance, si quelqu'un a des idees....

salutations.
leclone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 14h37   #2
Membre éclairé
 
Avatar de johweb
 
Inscription : décembre 2003
Messages : 332
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : décembre 2003
Messages : 332
Points : 316
Points : 316
Il ne te réponds rien car ta requête ne te retourne aucun enregistrement...
Construit plutôt du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
...ton code...
$reponse = mysql_query("SELECT Nom_pers, Prenom_pers, Jour_naissance, Mois_naissance FROM personnel WHERE ((Jour_naissance LIKE '%$Jour%') AND (Mois_naissance LIKE '%$MoisTexte%')) ;") ;
 
print "<p align='center'>";
print "Nous sommes le $Jour $MoisTexte $Annee et c'est l'anniversaire de : " ;
print "</p>" ;
 
if(mysql_num_rows($reponse)!=0)){
//Affichage nom prénom
}else{
//personne
}
johweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 14h43   #3
Membre habitué
 
Inscription : mai 2006
Messages : 382
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2006
Messages : 382
Points : 118
Points : 118
j'ai essayer ce que tu m'a dis et ça ne marche pas.

si une personne est née le 16 janvier, ça marche sinon ça ne marche pas; il ne m'affiche rien

je ne sais pas pourquoi, il me fait ça

ciao
leclone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 15h29   #4
Membre habitué
 
Inscription : mai 2006
Messages : 382
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2006
Messages : 382
Points : 118
Points : 118
il ne veux tjs pas faire le else dans le if, je ne sais pas pourquoi il ne va pas jusqu'au bout

si quelqu'un a des idees...., merci d'avance

ciao
leclone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2007, 15h46   #5
Membre éclairé
 
Avatar de johweb
 
Inscription : décembre 2003
Messages : 332
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : décembre 2003
Messages : 332
Points : 316
Points : 316
Peux-tu nous montrer ton code modifié, svp ?
johweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h26   #6
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Code php :
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
$link = mysql_connect("localhost", "root", "")or die (mysql_error());
mysql_select_db("intranet")or die (mysql_error()) ;
 
$reponse = mysql_query("SELECT Nom_pers, Prenom_pers, Jour_naissance, Mois_naissance FROM personnel WHERE Jour_naissance LIKE '%$Jour%' OR Mois_naissance LIKE '%$MoisTexte%' ") ;
 
print "<p align='center'>";
print "Nous sommes le $Jour $MoisTexte $Annee et c'est l'anniversaire de : " ;
print "</p>" ;
 
 
If {$reponse}{
 
while ($donnees = mysql_fetch_array($reponse))
{
if (($donnees['Jour_naissance'] == $Jour) && ($donnees['Mois_naissance'] == $MoisTexte))
 
{
		print "<p align='center'>";
		print "<b>";
		echo "$donnees['Nom_pers'] $donnees['Prenom_pers']" ; // permet d'afficher tous les noms correspondant au jour et au mois de naissance
		print "&nbsp;" ;
		print "</b>" ;
		print "</p>" ;	
}
}
 
}
 
else
			{
			echo "personne!!!" ;
			}
mysql_close() ;

ton 'personne' etait dans la boucle du cas ou il y avait des enregistrements si ils n y en avaient pas tu faisais rien ... j'en ai profité pour optimiser
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h27   #7
Membre actif
 
Inscription : novembre 2006
Messages : 194
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 194
Points : 197
Points : 197
bonjour,
ton probleme est du au fait que ton if est mal placé, car pour l'interpreter il faut déjà qu'il y ait un resultat:
Code :
1
2
 
while ($donnees = mysql_fetch_array($reponse))
et meme le if ne sert strictement à rien étant donnée que les conditions pour y entrer sont les conditions de ta requete sql.

pour tester s'il y a des enregistrements ou pas vaut mieux utiliser mysql_num_rows:
Code :
1
2
3
4
5
6
7
 
if (mysql_num_rows ($result) > 0)
{
  while ...
}
else
  echo "Personne...";
EDIT: post croisé mais pour la solution de RideKick, je crois que mysql_query () retourne une ressource valide même si le select ne retourne aucune ligne, donc ca n'aura pas le résultat souhaité
coca25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h33   #8
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Citation:
Envoyé par JWhite
Multipost...
http://www.developpez.net/forums/sho...d.php?t=264728
Si tu suis pas tes topics ça va être compliqué...
Arfffffff !

Je viens de relire ton code correctement et le meilleur conseil que je puisse te donner c'est de le refaire !

Tu cree une requete qui va te chercher les noms des gens dont le jour de naissance est $ jour OU le mois est $mois alors que tu pourrais directement prendre le gars qui est né aujourd'hui avec un ET .

Ensuite une fois la requete créé tu cherche le gars qui est née Aujourd'hui ce que tu aurais pu faire deja dans la requete precedente !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h34   #9
Membre habitué
 
Inscription : mai 2006
Messages : 382
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2006
Messages : 382
Points : 118
Points : 118
slt RideKick

j'ai essai ce que tu m'a dit, ça marche si et seulement si une personne dans la base de donnees fête son anniversaire aujourd'hui. Si personne est né le 17 janvier ça ne marche pas car il ne veux pas m'afficher le else

re voici le code de ma page :
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
<?
$link = mysql_connect("localhost", "root", "")or die (mysql_error());
mysql_select_db("intranet")or die (mysql_error()) ;
 
$reponse = mysql_query("SELECT Nom_pers, Prenom_pers, Jour_naissance, Mois_naissance FROM personnel WHERE Jour_naissance LIKE '%$Jour%' OR Mois_naissance LIKE '%$MoisTexte%' ") ;
 
print "<p align='center'>";
print "Nous sommes le $Jour $MoisTexte $Annee et c'est l'anniversaire de : " ;
print "</p>" ;
 
If ($reponse)
{
 
while ($donnees = mysql_fetch_array($reponse))
{
$journaiss=$donnees['Jour_naissance'] ; //jour de naissance de la personne
 
$moisnaiss=$donnees['Mois_naissance'] ; //mois de naissance de la personne
 
$nom=$donnees['Nom_pers'] ;
 
$prenom=$donnees['Prenom_pers'] ;
 
if (($donnees['Jour_naissance'] == $Jour) && ($donnees['Mois_naissance'] == $MoisTexte))
 
{
		print "<p align='center'>";
		print "<b>";
		echo "$nom $prenom" ; // permet d'afficher tous les noms correspondant au jour et au mois de naissance
		print "&nbsp;" ;
		print "</b>" ;
		print "</p>" ;	
}
}
 
}
 
else
			{
			echo "personne!!!" ;
			}
 
 
mysql_close() ;
?>
cela fait maintenant 3 jours que je suis sur ca et ça ne veux tjs pas marcher

ciao
leclone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h38   #10
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Citation:
Envoyé par leclone
slt RideKick

j'ai essai ce que tu m'a dit, ça marche si et seulement si une personne dans la base de donnees fête son anniversaire aujourd'hui.
Code :
1
2
3
4
<?
print "Nous sommes le $Jour $MoisTexte $Annee et c'est l'anniversaire de : " ;
 
?>
c'est un peu ce que tu demande dans ton code , moi j'ai juste replacé la condition if .......

Je t'ai deja conseillé de replancher sur ton code , mais a voir ce que tu me dis je te conseil de replancher sur ce que tu veux vraiment !
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h41   #11
Membre habitué
 
Inscription : mai 2006
Messages : 382
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2006
Messages : 382
Points : 118
Points : 118
ca fait environ 3 fois que je recommence le code depuis le debut et j'arrive tjs au meme resultat à savoir ce qu'il y a au dessus

je ne sais pas comment faire autrement

merci

salutations.
leclone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h49   #12
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
Citation:
Envoyé par leclone
ca fait environ 3 fois que je recommence le code depuis le debut et j'arrive tjs au meme resultat à savoir ce qu'il y a au dessus

je ne sais pas comment faire autrement

merci

salutations.
et tu veux faire quoi exactement ?
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2007, 10h49   #13
Membre habitué
 
Inscription : mai 2006
Messages : 382
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2006
Messages : 382
Points : 118
Points : 118
c bon j'ai reussi a trouver la solution

merci a RideKick et a coca25

voici le resultat final :

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
if (mysql_num_rows($reponse) > 0)
 
{
 
while ($donnees = mysql_fetch_array($reponse))
{
$journaiss=$donnees['Jour_naissance'] ; //jour de naissance de la personne
 
$moisnaiss=$donnees['Mois_naissance'] ; //mois de naissance de la personne
 
$nom=$donnees['Nom_pers'] ;
 
$prenom=$donnees['Prenom_pers'] ;
 
if (($donnees['Jour_naissance'] == $Jour) && ($donnees['Mois_naissance'] == $MoisTexte))
 
{
		print "<p align='center'>";
		print "<b>";
		echo "$nom $prenom" ; // permet d'afficher tous les noms correspondant au jour et au mois de naissance
		print "&nbsp;" ;
		print "</b>" ;
		print "</p>" ;	
}
}
 
}
 
else
			{
			echo "personne!!!" ;
			}
 
 
mysql_close() ;
?>
encore merci, il y avait juste une mauvaise position du if et il fallait que j'utilise mysql_num_rows

ciao
leclone 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 19h54.


 
 
 
 
Partenaires

Hébergement Web