Page 1 sur 1

affichage requete + condition if

Posté : 24 août 2005, 15:43
par Justone
Bonjour a tous,

Voici mon code :
<? 
        //On se connecte a la base oracle 
        $connect = ocilogon("xxx", "xxx", "xxx"); 
         
        //On parse la requête à effectuer sans oublier de lui passer la chaine de connexion en paramêtre 
        $stmt = ociparse($connect, "ma_requete"); 
        //On execute la requête en lui passant l'option OCI_DEFAULT 
        ociexecute($stmt,OCI_DEFAULT); 
         
        //On parcourt les résultats et on affiche les champs 
        while (ocifetch($stmt)) { 
            $result = ociresult($stmt,1); 
        } 
         
        //On se deconnecte de la base oracle 
        ocilogoff($connect); 
        ?> 

<html> 
<head> 
<title>Recherche du numéro de commande grâce au numéro de facture</title> 
</head> 

<body> 
<h1>Resultat</h1> 

Voici le résultat demandé. 
    <? 
    if ($stmt!="") { 
    ?> 
    <p>Le numéro de commande est : <? echo $result; ?></p> 
    <? } 
      else { 
    ?> 
    <p>Votre numéro de facture ne correspondant à aucun numéro de commande.</p> 
    <? } 
    ?> 
</body> 
</html>  
J'a deux problèmes et j'aurais besion de votre aide.

Le premier est que le numéro de commande ne s'affiche pas. Je n'arrive pas à enregistrer le résultat dans $result et ensuite l'afficher.

Le second est que meme lorsque je ne tape rien dans le formulaire appelant cette page ma condition if ($stmt!="") ne marche car jamais ne s'affiche 'Votre numéro de facture ne correspondant à aucun numéro de commande'

Merci pour votre aide...

Posté : 24 août 2005, 17:35
par Justone
Personne pour m'aider svp??

Posté : 24 août 2005, 17:37
par Cyrano
Où sont initialisées les variables ?

Posté : 24 août 2005, 17:59
par Justone
quels variables?

Posté : 24 août 2005, 18:13
par Cyrano
Celle là en particulier :
<?
    if ($stmt!="") {
    ?>

Re: affichage requete + condition if

Posté : 24 août 2005, 18:28
par Justone
<? 
//On parse la requête à effectuer sans oublier de lui passer la chaine de connexion en paramêtre 
$stmt = ociparse($connect, "ma_requete"); 
//On execute la requête en lui passant l'option OCI_DEFAULT 
ociexecute($stmt,OCI_DEFAULT); 
//On parcourt les résultats et on affiche les champs 
while (ocifetch($stmt)) { 
  $result = ociresult($stmt,1); 
} 

Posté : 24 août 2005, 18:31
par Cyrano
OUi, regarde ce qui est écrit dans le manul :
ociparse() analyse la requête query sur la connexion conn, et retourne TRUE si la requête query est valide, et FALSE, si ce n'est pas le cas. query peut être n'importe quelle requête SQL.
Or toi, tu vérifie si la variable contient quelque chose ou est vide...
La bonne formulation serait donc:
<?
    if (false !== $stmt) {
    ?>

Posté : 24 août 2005, 18:45
par Justone
Ah oui bien vu Cyrano!

Mais ca ne marche tjs pas :cry:
J'ai toujours le meme probleme

Posté : 24 août 2005, 19:05
par Cyrano
De toutes façon, tu ne fais pas le test sur la bonne fonction: ociparse analyse la requête mais ne l'exécute pas. Il faudrait que tu définisses une variable avec la ligne suivante (ociexecute()) et que tu fasses le test dessus pour afficher ton message. Mais tu n'exécute cette ligne que si la première ne retourne pas FALSE. Je ne connais pas bien les commandes avec oracle, mais le code devrait ressembler à quelque chose dans ce goût là:
<?
//On se connecte a la base oracle
$connect = ocilogon("xxx", "xxx", "xxx");

//On parse la requête à effectuer sans oublier de lui passer la chaine de connexion en paramêtre
$stmt = ociparse($connect, "ma_requete");
if(false !== $stmt)
{
    //On execute la requête en lui passant l'option OCI_DEFAULT
    $execution = ociexecute($stmt,OCI_DEFAULT);

    //On parcourt les résultats et on affiche les champs
    while (ocifetch($execution))
    {
        $result = ociresult($execution,1);
    }
}
//On se deconnecte de la base oracle
ocilogoff($connect);
?>

<html>
<head>
<title>Recherche du numéro de commande grâce au numéro de facture</title>
</head>

<body>
<h1>Resultat</h1>

Voici le résultat demandé.
<?php
if ($stmt && $execution)
{
?>
  <p>Le numéro de commande est : <? echo $result; ?></p>
<?php
}
else
{
?>
  <p>Votre numéro de facture ne correspondant à aucun numéro de commande.</p>
<?php
}
?>
</body>
</html>
Sous réserves.