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 10/02/2011, 16h17   #1
Invité de passage
 
Dimitri
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Dimitri

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
Par défaut Condition sur requête

Bonjour à tous,

je suis actuellement en stage pour ma 2ème année de BTS Info de gestion, et je fais appel à vos connaissances en php car je suis assez débutant dans ce langage.
Mon problème est que j'aimerai poser une condition sur le résultat d'une requête, seulement la condition ne fonctionne qu'à moitié.

J'explique le problème :
Lorsque la requête ne retourne aucune ligne, affichage d'un alert(), jusque là ça fonctionne.
Seulement, lorsque la condition est vrai (retourne 1 ou plusieurs lignes) je voudrais attribuer des valeurs à des variables avec
Code :
1
2
3
while ($row = oci_fetch_row($stid)) {
    $ip = $row[1];
}
Mais c'est là qu'est le problème... $ip ne reçoit rien, alors que sans la condition mon code fonctionne

Voici le code plus complet, ainsi vous aurez peut être plus de chance de cerner le problème.

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
 
$queryIP = "select * from ut_materiel u, ut_localisation t
			where u.id_local = t.id_local
			and id_ip = '" . $_POST['Tb_IP'] . "'";	
 
$stid = oci_parse($conn, $queryIP);
if (!$stid) {
	$e = oci_error($conn);
	echo htmlentities($e['message']);
	exit;
}
 
$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) {
	$e = oci_error($stid);
	echo htmlentities($e['message']);
	exit;
}
 
oci_fetch_array($stid);
if (oci_num_rows($stid) >0) {
	while ($row = oci_fetch_row($stid)) {
		$ip = $row[1];
		$mac = $row[2];
		$switch = $row[3];
		$numPort = $row[4];
		$pile = $row[11];
		$bat = $row[13];
		$etage = $row[14];
		$piece = $row[15];
		$prise = $row[16];
	}
	echo 'IP : '.$ip;
Si ça peut vous aider également, il s'agit d'une base Oracle 10.2g et de php5.3.5.

Voilà je vous remercie de votre aide.

Ekow
Ekow19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 16h34   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Enlève
Code :
oci_fetch_array($stid);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 16h40   #3
Invité de passage
 
Dimitri
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Dimitri

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
C'est bien comme ça que j'avais fait au début, seulement quand je l'enlève je ne rentre même pas dans le if, pourtant ma requête est bonne et me retourne bien 1 résultat sous SQL*Plus
Ekow19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 16h47   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
oci_num_rows, je cite, ne retourne pas le nombre de lignes sélectionnées.
Retire donc également cette condition.
Elle ne sert a rien de toute facon puisque tu n'as pas le cas "else".
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h16   #5
Invité de passage
 
Dimitri
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Dimitri

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
Le else est en dessous, je ne l'ai pas mis puisque je pensais qu'il n'était pas utile, lui fonctionne parfaitement.

j'ai essayé avec :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
if (oci_fetch_row($stid) != false) {
	while ($row = oci_fetch_row($stid)) {
		$ip = $row[1];
		$mac = $row[2];
		$switch = $row[3];
		$numPort = $row[4];
		$pile = $row[11];
		$bat = $row[13];
		$etage = $row[14];
		$piece = $row[15];
		$prise = $row[16];
	}
	echo 'IP : '.$ip;
        ....
} else {
    echo "<script> alert(\"IP inexistante dans la base !\"); </script>";
}
Ekow19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 19h07   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Ca ne peut pas marcher comme ça, tu perds la premiere ligne.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 09h57   #7
Invité de passage
 
Dimitri
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Dimitri

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
Merci, mais oui en effet il semble que le while ne soit pas pris en compte puisque tout ce qui suit fonctionne...

Alors pourquoi est ce qu'il n'est pas pris ? C'est ça que je me demande et qui me chagrine
Ekow19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 10h12   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while ($row = oci_fetch_row($stid)) {
		$ip = $row[1];
		$mac = $row[2];
		$switch = $row[3];
		$numPort = $row[4];
		$pile = $row[11];
		$bat = $row[13];
		$etage = $row[14];
		$piece = $row[15];
		$prise = $row[16];
                echo 'IP : '.$ip;
	}
if (!isset($ip)) {
    echo "<script> alert(\"IP inexistante dans la base !\"); </script>";
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2011, 10h19   #9
Invité de passage
 
Dimitri
Inscription : février 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Dimitri

Informations forums :
Inscription : février 2011
Messages : 9
Points : 2
Points : 2
Pourquoi j'y avais pas pensé...

Merci beaucoup en tout cas, problème résolu
Ekow19 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 11h56.


 
 
 
 
Partenaires

Hébergement Web