Page 1 sur 2

probleme avec ma base oracle 8i

Posté : 22 sept. 2005, 17:56
par elastikkman
J' ai trois fichiers html le premier sert a entrer le le nom , mot de passe et nom de la base .
Le suivant execute la connexion et possède une fonction de recherche de personne par un numero d'identifiant tous ce passe bien jusqu'au dernier fichier ou il est écrit en erreur :
Warning: Supplied argument is not a valid OCI8-Connection resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 13

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 14

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 16
La connexion a la base de données s'effectue dans le deuxieme fichier et la requete est effectuée dans le troisieme quelqu' un a une idée :
<?php 
$ipp=$_POST['ipp'];


/* lien vers la base de données */

putenv("ORACLE_HOME=c:\oracle\ora81");


// page2.php

//echo 'Bienvenue sur la page numéro 3<br />';

// connection a la base de données

$connect= ociplogon($user,$passwd,$database);

if (!$connect) { echo "L'utilisateur $user n'a pu se connecter a la base";
}else
{ echo "<BR>User : <B>$user</B> Connecte a la base <B>$host</B> version : <BR>";
echo OCIServerVersion($connect);}

/* essai avec dautre exemples

$sql = "select PAT_NOM_USUEL from PATIENT";
$stmt = ociparse($connect,$sql);
ociexecute($stmt);
while (ocifetchinto($stmt,&$ligne,OCI_ASSOC))
{
echo "<BR> Nom : " . $ligne["PAT_NOM_USUEL" ] . "<BR>";
}
ocilogoff($connect);
 
 fin d'essai */


//$sql = "select * from PATIENT WHERE PAT_IPP ='$ipp'"; /* doit  etre réalisé après ds requete :) */
/*
$sql = "select * from PATIENT WHERE PAT_IPP ='1'";
$stmt = ociparse($connect,$sql);
ociexecute($stmt);

while (ocifetchinto($stmt,&$ligne,OCI_ASSOC))
{
echo "<BR> Nom : " . $ligne["PAT_NOM_USUEL" ] . "<BR>";
}*/
?>

<form name="form1" method="post" action="./requete_sql.php">
  <p align="center"><strong>Rechercher un patient</strong></p>
  <p align="center"><img src="31725497.brest19.jpg" width="355" height="205"></p>
  <p>&nbsp;</p>
  <table align="center" width="419" border="1">
    <tr>
      <td width="409"><div align="center">Entrer le num&eacute;ro d' IPP : 
          <input type="text" name="ipp" value="<?php echo "$ipp"; ?>">
          <input type="hidden" name="connect" value="<?php echo "$connect"; ?>">
		  <input name="valider" type="submit" id="valider" value="valider">
</div></td>
    </tr>
  </table>
</form>
et le fichier 3 :
<?php
putenv("ORACLE_HOME=c:\oracle\ora81");

$sql = "select * from PATIENT WHERE PAT_IPP ='1'";
$stmt = ociparse($connect,$sql);
ociexecute($stmt);

while (ocifetchinto($stmt,&$ligne,OCI_ASSOC))
{
echo "<BR> Nom : " . $ligne["PAT_NOM_USUEL" ] . "<BR>";
}
?>
<form name="form1" method="post" action="">
<table align="center" width="591" border="1">
  <tr>
    <td width="253" height="29">pat_date_c</td>
    <td width="322">
      <input type="text" name="pat_date_c" value="<?php echo  $ligne["PAT_DATE_C" ]; ?>">

   </td>
  </tr>
  <tr>
    <td height="29">pat_util_c</td>
    <td><input type="text" name="pat_util_c" value="<?php echo  $ligne["PAT_UTIL_C" ]; ?>"></td>
  </tr>
  <tr>
    <td>nom du patient</td>
    <td><input type="text" name="pat_nom" value="<?php echo  $ligne["PAT_NOM" ]; ?>"></td>
  </tr>
  <tr>
    <td>nom usuel du patient </td>
    <td><input type="text" name="pat_nom_usuel" value="<?php echo  $ligne["PAT_NOM_USUEL" ]; ?>"></td>
  </tr>
  <tr>
    <td>pr&eacute;nom du patient </td>
    <td><input type="text" name="pat_prenom" value="<?php echo  $ligne["PAT_PRENOM" ]; ?>"></td>
  </tr>
  <tr>
    <td>pat_alias</td>
    <td><input type="text" name="pat_alias" value="<?php echo  $ligne["PAT_ALIAS" ]; ?>"></td>
  </tr>
  <tr>
    <td>date de naissance du patient</td>
    <td><input type="text" name="pat_date_naiss" value="<?php echo  $ligne["PAT_DATE_NAISS" ]; ?>"></td>
  </tr>
  <tr>
    <td>situation familiale du patient</td>
    <td><input type="text" name="pat_sit_fam" value="<?php echo  $ligne["PAT_SIT_FAM" ]; ?>"></td>
  </tr>
  <tr>
    <td>sexe du patient </td>
    <td><input type="text" name="pat_sexe" value="<?php echo  $ligne["PAT_SEXE" ]; ?>"></td>
  </tr>
  <tr>
    <td>pat_prefixe</td>
    <td><input type="text" name="pat_prefixe" value="<?php echo  $ligne["PAT_PREFIXE" ]; ?>"></td>
  </tr>
  <tr>
    <td>pat_rang_naiss</td>
    <td><input type="text" name="pat_rang_naiss" value="<?php echo  $ligne["PAT_RANG_NAISS" ]; ?>"></td>
  </tr>
  <tr>
    <td>num&eacute;ro de s&eacute;curit&eacute; sociale</td>
    <td><input type="text" name="pat_no_ss"></td>
  </tr>
  <tr>
    <td>date de d&eacute;ces du patient </td>
    <td><input type="text" name="pat_date_deces"></td>
  </tr>
  <tr>
    <td>adresse 1 du patient </td>
    <td><input type="text" name="pat_adr1"></td>
  </tr>
  <tr>
    <td>adresse 2 du patient </td>
    <td><input type="text" name="pat_adr2"></td>
  </tr>
  <tr>
    <td>num&eacute;ro de t&eacute;l&eacute;phone 1 du patient</td>
    <td><input type="text" name="pat_tel1"></td>
  </tr>
  <tr>
    <td>num&eacute;ro de t&eacute;l&eacute;phone 2 du patient </td>
    <td><input type="text" name="pat_tel2"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
 </form>

Posté : 22 sept. 2005, 18:08
par Cyrano
Dans le premier fichier, tu as ceci:
$connect= ociplogon($user,$passwd,$database); 
Mais les variables utilisées n'apparaissent nulle par avant et je ne vois pas non plus d'include de fichier de configuration quelconque...

Posté : 23 sept. 2005, 09:38
par elastikkman
En fait les variables $user , $passwd et $database sont utilisées dans le fichier index que je n'ai pas inclus car la connection à la base fonctionne dans le fichier connect.php de méme que la requète si elle est effectuée dans ce méme fichier, cependant la valeur de la variable $ipp doit être prise en compte c'est pourquoi j'ai besoin de l'ajouter dans un 3eme fichier et pouvoir ainsi effectuer un requete en fonction de la variable $ipp. En plus le fait de faire un include affiche l'ensemble des deux pages dans une seule fenêtre et je veux afficher le tableau du 3eme séparément du reste c' est pourquoi je n'en ai pas mis a moins que tu connaisse une maniere d'inclure un fichier sans qu' il ne soit visible tout de suite mais seulement après avoir appuyé sur le bouton dont l' action est d' ouvrir la fenètre avec le tableau.

Posté : 23 sept. 2005, 11:27
par elastikkman
je pense qu'il faut que je passe par des variables globales un truc comme ça par ce que quand j' arrive à me connecter à la base je pense que ce n' est que temporaire donc je ne sais pas si l'ensemblr de ma requete doit etre effectuée dans le meme fichier où si je peux concerver ma valeur $connect afin d' établir la connection dans le fichier suivant .

Posté : 23 sept. 2005, 16:52
par elastikkman
En fait jarrive a faire passer les valeurs de $connect et $ipp c' est après que ça ce gate malgré quelques modifications j' ai toujours les messages d'erreur :
cest rempliResource id #312
Warning: Supplied argument is not a valid OCI8-Connection resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 17

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 18

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 19

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 23
<?php
putenv("ORACLE_HOME=c:\oracle\ora81");
	if(isset($connect)){echo "cest rempli";}else{echo "cest vide";}
	
	echo  "$connect";
	echo  "$ipp";
	
$sql = "select * from PATIENT WHERE PAT_IPP = $ipp";
17 $stmt = ociparse($connect,$sql);
18 ociexecute($stmt);
19 while (OCIFetch($stmt)){
echo OCIResult($stmt, "PAT_NOM_USUEL");
}

23 OCIFreeStatement($stmt);
/*while (ocifetchinto($stmt,&$ligne,OCI_ASSOC))
{
echo "<BR> Nom : " . $ligne["PAT_NOM_USUEL" ] . "<BR>";
}*/
?>

Posté : 23 sept. 2005, 17:02
par Cyrano
Fais toi un fichier avec les valeurs de ces variables et ajoutes un include_once() de ce fichier avant la ligne de connexion.

Posté : 26 sept. 2005, 15:29
par elastikkman
bon Cyrano , j' ai créé un fichier save.php qui contient mes variables de connexion et aussi servant aux requetes cependant il me met toujours les memes erreur c'est la variable $stmt qu' il n'a pas l'air d' apprécier. Par contre les autres variables comme $connect et $ipp sont bien remplies toujours est -il que je ne sais pas si c'est la bonne valeur qui ce situe dans la variable $connect mais j'ai toujours ces erreurs:

Warning: Supplied argument is not a valid OCI8-Connection resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 19



Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 22

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 23

Warning: Supplied argument is not a valid OCI8-Statement resource in c:\program files\easyphp\www\projet5\requete_sql.php on line 27


mon code de mon fichier save.php :
<?php

// connection a la base de données


global $connect;
global $stmt;
global $sql;
global $ipp;

$sql = "select * from PATIENT WHERE PAT_IPP = '$ipp'";
//$stmt = ociparse($connect,$sql);

echo"<BR> save.php : <BR>$connect</BR>";
echo"<BR> save.php : <BR>$stmt</BR>";
echo"<BR> save.php : <BR>$sql</BR>";
echo"<BR> save.php : <BR>$ipp</BR>";
?>
Et les autres fichiers par ce que la connexion a la base s'effectue dans le fichier connect.php
<?php putenv("ORACLE_HOME=c:\oracle\ora81");

// sauvegarde des valeurs

include_once("save.php");

$connect= OCILogon($user,$passwd,$database);

echo  $connect;
if (!$connect) { echo "L'utilisateur $user n'a pas pu se connecter à la base";
}else
{ echo "<BR>User : <B>$user</B> Connecté à la base <B>$database</B> version : <BR>";
echo OCIServerVersion($connect);}
?>
mais la requete s'effectue dans le fichier requete_sql.php et normalement la déconnexion de la base doit se faire également ici mais bon il faut également que le reste marche :).
<?php
include_once("save.php");

putenv("ORACLE_HOME=c:\oracle\ora81");
	if(isset($connect)){echo "cest rempli";}else{echo "cest vide";}
	
	echo  "<BR>$connect</BR>";
	echo  "<BR>$ipp</BR>";
	

$stmt = OCIParse($connect,$sql);
echo  "<BR>$stmt</BR>";

OCIExecute($stmt);
while (OCIFetch($stmt)){
echo OCIResult($stmt, "PAT_NOM_USUEL");
}

OCIFreeStatement($stmt);
OCILogOff($connect);
?>

Posté : 26 sept. 2005, 21:47
par Cyrano
Mouais, bon, finalement, je sais pas vraiment ce qui fontionne et ce qui ne fonctionne pas : l'erreur indique les lignes de quel fichier au juste ?

Posté : 27 sept. 2005, 09:38
par elastikkman
Il indique les lignes du troisieme exemple de code : c'est le fichier requete_sql.php à partir de $stmt = OCIParse($connect,$sql); ligne 19.
Autrement il indique les lignes 22 , 23 et 27 par contre il n'indique pas d'erreur à la ligne 24 qui contient pourtant la variable $stmt.

Posté : 27 sept. 2005, 09:44
par Cyrano
Écris le nom de la fonction ociparse() tout en minuscule, ça peut suffire des fois

Posté : 27 sept. 2005, 10:18
par elastikkman
Malheureusement ça ne change pas grand chose j'ai toujours les même erreurs j'ai meme essayé en mettant ociexecute et ocifetch en minuscule et toujours rien :( . En plus je suis presque sur que c' est une petite erreur a la c.. du genre que tu fais en C et que tu passes une semaine à chercher !!

Posté : 27 sept. 2005, 10:21
par Cyrano
Je viens de réaliser un truc : Où est donc l'instruction oci_connect() ??

Posté : 27 sept. 2005, 10:33
par elastikkman
ociLogOn() est dans le fichier connect.php , pourquoi ça ne marche pas 'il ne sont pas dans le meme fichier la connexion à la base et la requete pourtant c'est $connect qui récupère la valeur de la connexion à la base.

Posté : 27 sept. 2005, 10:35
par Cyrano
Commence en mettant le instructions de connexion dans la même page et quand ça fonctionnera, tu sépareras certaines parties dans un fichier de connexion externe. Enfin c'est ce que je ferais pour essayer de trouver.

Posté : 27 sept. 2005, 10:53
par elastikkman
J'ai remarqué un autre défaut apperemment quand je clique pour me connecter à la base il ne retient que le nom d'utilisateur et le mot de passe par contre le nom de la base a disparu