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 :

problème if, else .. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut problème if, else ..
    Voici mon code me permettant de visualiser les appels par rapport à une date rentrée dans une formulaire. J'aimerais afficher un script alert du genre : aucun résultat vérifiez le format souhaité etc quand la requête n'a pas d'enregistrement...

    Je ne vois pas où le placer, j'ai essayé mais ce script alert vient dès que je vais sur la 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
     
     
    // si clic sur rechercherDateAppel et champ fonctionDateAppel rempli
                        if(isset($_POST['rechercherDateAppel']) AND isset($_POST['fonctionDateAppel'])){
                                $fonctionDateAppel=$_POST['fonctionDateAppel'];?><br /><?php
                                $afficheDateAppel = $bdd->query("SELECT numAppel,heureAppel,raisonAppel,dureeAppel,
                                                                suiteAppel,nomPrenomAppelant,commentaire, 
                                                                DAY(dateAppel) AS jour, MONTH(dateAppel) AS mois, YEAR(dateAppel) AS annee
                                                                FROM appels WHERE dateAppel='".$fonctionDateAppel."'
                                                                ORDER BY numAppel DESC")
                                                                or die(print_r($afficheDateAppel->errorInfo()));?><br /><?php
                            while ($donnees = $afficheDateAppel->fetch())
                            {
                                $afficheFonctionDateAppel = array (
                                '<tr>Appel datant du '.$donnees['jour'] . '/' . $donnees['mois'] . '/' . $donnees['annee'].'',
                                'Numéro de l\'appel : '.$donnees['numAppel'].'',
                                'Heure de l\'appel : '.$donnees['heureAppel'].'',
                                'Raison de l\'appel : '.$donnees['raisonAppel'].'',
                                'Durée de l\'appel : '.$donnees['dureeAppel'].'',
                                'Suite de l\'appel : '.$donnees['suiteAppel'].'',
                                'Collaborateur : '.$donnees['nomPrenomAppelant'].'',
                                'Commentaire : '.$donnees['commentaire'].'</tr>');?><br /><?php
                            foreach($afficheFonctionDateAppel as $element)
                            {
                                echo $element . '<br />';
     
                            }    
                            }
                                $afficheDateAppel->closeCursor(); // Termine le traitement de la requête
                            }

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    or die(print_r($afficheDateAppel->errorInfo()))
    T'aurais rien pu faire de plus horrible ?

    Pour connaitre le nombre de lignes retournées par une requête MySQL, utilise PDOStatement::rowCount.

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    décidément...

    as tu lu la doc des objets PDOStatement?

    il te suffit de tester la méthode rowCount()
    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
    if(isset($_POST['rechercherDateAppel']) AND isset($_POST['fonctionDateAppel'])){
                                $fonctionDateAppel=$_POST['fonctionDateAppel'];?><br /><?php
                                $afficheDateAppel = $bdd->query("SELECT numAppel,heureAppel,raisonAppel,dureeAppel,
                                                                suiteAppel,nomPrenomAppelant,commentaire, 
                                                                DAY(dateAppel) AS jour, MONTH(dateAppel) AS mois, YEAR(dateAppel) AS annee
                                                                FROM appels WHERE dateAppel='".$fonctionDateAppel."'
                                                                ORDER BY numAppel DESC")
                                                                or die(print_r($afficheDateAppel->errorInfo()));?><br /><?php
    if($afficheDateAppel->rowCount()==0)
    {
      echo'aucun résultat<br/>';
    }
    else
    {
    while ($donnees = $afficheDateAppel->fetch())
                            {
                                $afficheFonctionDateAppel = array (
                                '<tr>Appel datant du '.$donnees['jour'] . '/' . $donnees['mois'] . '/' . $donnees['annee'].'',
                                'Numéro de l\'appel : '.$donnees['numAppel'].'',
                                'Heure de l\'appel : '.$donnees['heureAppel'].'',
                                'Raison de l\'appel : '.$donnees['raisonAppel'].'',
                                'Durée de l\'appel : '.$donnees['dureeAppel'].'',
                                'Suite de l\'appel : '.$donnees['suiteAppel'].'',
                                'Collaborateur : '.$donnees['nomPrenomAppelant'].'',
                                'Commentaire : '.$donnees['commentaire'].'</tr>');?><br /><?php
                            foreach($afficheFonctionDateAppel as $element)
                            {
                                echo $element . '<br />';
     
                            }    
    }

    tu devrais éviter de mixer html et php même si c'est pensé pour être fait car la façon dont tu le fait et l'indentation engendrée risque de générer des erreurs et une difficulté de relecture par toi ou d'autre plus tard...

    il vaut mieux un
    pour ce genre de truc et pas faire une sortie de bloc php

    le "or die" ne doit être réserver que tant que tu développe, il vaut mieux utiliser un système de messages qui ne donne que les infos techniques si besoin et n'arrête pas ton script violemment... pourquoi pas un enregistrement du problème dans une table log en bd par exemple et un simple message d'erreur pour l'utilisateur... à toi de voir


  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    tu devrais éviter de mixer html et php même si c'est pensé pour être fait car la façon dont tu le fait et l'indentation engendrée risque de générer des erreurs et une difficulté de relecture par toi ou d'autre plus tard...
    Tu peux mixer les deux si tu utiliser intelligement la syntaxe alternative. Par intelligement j'entends bien sûr qu'il faut faire les traitements AVANT l'affichage et surtout pas pendant !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    Merci ,ça fonctionne !

    Par contre, pour les requêtes SQL avec SELECT j'ai lu sur le net qu'il était préférable d'utiliser fetchColumn() plutôt que rowCount() ! les 2 fonctionnent

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    les 2 n'ont rien à voir... fetchColumn sert à ne retourner qu'une seule colonne de la ligne, il ne te retourne pas le nombre de ligne ni ne permet de faire ce que tu veux...

  7. #7
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    En fait la solution la plus portable est d'effectuer une requête COUNT(*) et d'aller cherche le résultat avec fetch column.

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

Discussions similaires

  1. Problème avec Else without If
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/11/2011, 17h48
  2. Probléme dans ELSE !
    Par onlinematchs dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2011, 23h27
  3. Problèmes avec des else if
    Par Kr00pS dans le forum C
    Réponses: 2
    Dernier message: 15/04/2006, 11h04

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