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] Utilisation de "if" [Débutant(e)]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    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 : 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
    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.

  2. #2
    Membre chevronné Avatar de johweb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Par défaut
    Il ne te réponds rien car ta requête ne te retourne aucun enregistrement...
    Construit plutôt du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Par défaut
    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

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Par défaut
    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

  5. #5
    Membre chevronné Avatar de johweb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Par défaut
    Peux-tu nous montrer ton code modifié, svp ?

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Code php : 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
    $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

    Mon profil Viadeo

  7. #7
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    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

    Mon profil Viadeo

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Par défaut
    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 : 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
    <?
    $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

  10. #10
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    Mon profil Viadeo

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Par défaut
    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.

  12. #12
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    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

    Mon profil Viadeo

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Par défaut
    c bon j'ai reussi a trouver la solution

    merci a RideKick et a coca25

    voici le resultat final :

    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
    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

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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