Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
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/2011, 11h55   #1
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
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.
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h06   #2
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
Si la tableau retourné par ton Query est supérieur à 0, alors la requête n'est pas vide .
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 13h34   #3
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
Bonjour et merci pour ta réponse.
Tu pourrais m'écrire le code pour être plus explicite?
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 13h49   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonsoir,

oci_num_rows

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 14h26   #5
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
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 ?
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 14h36   #6
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270


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

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h32   #7
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
Voici le code qui ne marche pas (ça indique que le login n'est pas dans la base alors qu'il y est)
Code :
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:
Citation:
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 :
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?
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h43   #8
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
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 :
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);
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 11h21   #9
Membre du Club
 
Inscription : mars 2008
Messages : 227
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 227
Points : 44
Points : 44
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.
JCD21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 01h01   #10
Invité régulier
 
Femme
Étudiant
Inscription : avril 2011
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 10
Points : 6
Points : 6
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
princesse_sissi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 09h03   #11
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
Bon recommençon depuis le début.

Code :
1
2
3
4
 
$sql = "SELECT UTILISATEUR_LOGIN FROM RELUTILISATEURS WHERE UTILISATEUR_LOGIN='".$login."'"
 
echo $sql ;
Cela donne quoi ?
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 12h24   #12
Membre du Club
 
Homme
Analyse système
Inscription : mars 2011
Messages : 406
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Analyse système

Informations forums :
Inscription : mars 2011
Messages : 406
Points : 67
Points : 67
tu peu faire une requete
Code :
select count(*) from ...
et tu récupères la valeur dans variable et tu fait une condition si
Code :
if(!empty(variable){...}else {...}
benhsaien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h11.


 
 
 
 
Partenaires

Hébergement Web