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 :

Savoir si un résultat de requête est vide


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut Savoir si un résultat de requête est vide
    Bonjour.
    J'exécute une requête SELECT sur une base oracle depuis PHP.
    Comment fait-on pour savoir si le résultat est vide?
    J'ai bien essayé la fonction oci_num_rows mais elle ne fonctionne pas avec une requête SELECT.
    Merci.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Si la tableau retourné par ton Query est supérieur à 0, alors la requête n'est pas vide .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Bonjour et merci pour ta réponse.
    Tu pourrais m'écrire le code pour être plus explicite?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,

    oci_num_rows

    A+.

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonsoir,

    oci_num_rows

    A+.
    Justement il a dit dans son premier post que cela ne fonctionne pas.

    @JCD21 as-tu vraiment essayé cette fonction sur un fetch_array ?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut


    Peut-on voir ton code qui ne fonctionne pas avec oci_num_rows?

    A+.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Voici le code qui ne marche pas (ça indique que le login n'est pas dans la base alors qu'il y est)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $cursor=oci_parse($connexion,"SELECT * FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'");
    		oci_execute($cursor);
    		if(oci_num_rows($cursor)>0) echo "déjà dans la base"; else echo "pas dans la base";
    		oci_free_statement($cursor);
    et voici ce qu'on peut lire dans la documentation:
    Note:
    Cette fonction ne retourne pas le nombre de lignes sélectionnées. Pour les commandes de type SELECT, cette fonction va retourner le nombre de ligne qui ont été lues dans le buffer avec oci_fetch*().
    Sinon, j'ai une autre méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $cursor=oci_parse($connexion,"SELECT COUNT(*) AS NBRESULTATS FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'");
    		oci_execute($cursor);
    		if (oci_fetch_object($cursor)->NBRESULTATS>0) $messageerreurs.="Le login existe déjà. Choisissez-en un autre.<br>";
    		oci_free_statement($cursor);
    Mais c'est peut-être inefficace?

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Première chose :

    Pourquoi utiliser le * , alors que visiblement du ne retourne qu'un seul éléments.

    D'après la doc ton code devrais être ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    $cursor=oci_parse($connexion,"SELECT UTILISATEUR_LOGIN FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'");
    		oci_execute($cursor);
                    $result = oci_fetch_object($cursor);
    		if (oci_num_rows($result)>0) $messageerreurs.="Le login existe déjà. Choisissez-en un autre.<br>";
    		oci_free_statement($cursor);

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Bonjour.
    J'ai bien tapé ton code mais ça ne marche pas: il ne reconnaît pas un login qui est déjà dans la base.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par JCD21 Voir le message
    Bonjour.
    J'ai bien tapé ton code mais ça ne marche pas: il ne reconnaît pas un login qui est déjà dans la base.
    C'est evident !
    Tu dois changer selon tes données : Nom de la BD, USER, MDP

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bon recommençon depuis le début.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "SELECT UTILISATEUR_LOGIN FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'"
     
    echo $sql ;
    Cela donne quoi ?

  12. #12
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    tu peu faire une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from ...
    et tu récupères la valeur dans variable et tu fait une condition si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty(variable){...}else {...}

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/11/2022, 11h32
  2. Réponses: 3
    Dernier message: 05/05/2008, 09h57
  3. [SQL] Déterminer si le résultat d'une requête est vide ou non
    Par khamett dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/01/2008, 21h53
  4. [AJAX] Résultat de requête Ajax vide sous IE, mais pas sous FF
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2007, 16h18
  5. [Crystal Report] Champs affichés même si la requête est vide
    Par navis84 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/02/2005, 16h18

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