Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité régulier
    Inscrit en
    juillet 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 15
    Points : 5
    Points
    5

    Par défaut multi requete sql

    Bonjour,

    Voilà je voudrais faire un état comptable dans feuille php connecté à une base oracle. Mon problème est le suivant, je voudrais structuré mon code afin d'avoir la meilleur visibilité, créer ma connexion sur ma base oracle (là pas de problème ca marche), puis faire toutes mes requetes (sachant qu'une requete ne remonte qu'un total à chaque fois), puis lancé mon execution, sans avoir a faire un while xxx

    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
    <?php
    $dbstr ="(DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = ip))
        )
        (CONNECT_DATA =
          (SID = sid)
        )
      )" ;
     
    $conn = oci_connect( "user", "mdp",$dbstr); 
     
     
    if ($conn === false) 
    die("Connexion impossible : " . oci_error()); 
     
    $query1= "select sum(sd) from user.balance_cpt where ex='2011' and compte in ('2082','2083','2084')";
     
    $statement = oci_parse ($conn, $query1);
    oci_execute ($statement);
     
    while ($row = oci_fetch_array ($statement, OCI_BOTH)) 
     
    $data1=$row[0];
     
    $query2= "select sum(sc) from h5103.bb_balance_cpt where ex='2011' and compte in ('28082','28083','28084')";
    $statement2 = oci_parse ($conn, $query2);
    oci_execute ($statement2);
     
    while ($row2 = oci_fetch_array ($statement2, OCI_BOTH))    
     
    $data2=$row2[0];

    moi je voudrais faire comme cela

    1 - code de connexion
    2- toute mes requetes
    3- execution et recupération des donnés en une fois si possible.

    Merci d'avance pour votre aide.

  2. #2
    Expert Confirmé Sénior
    Avatar de Benjamin Delespierre
    Profil pro Benjamin Delespierre
    Développeur Web
    Inscrit en
    février 2010
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Nom : Benjamin Delespierre
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : février 2010
    Messages : 3 932
    Points : 7 812
    Points
    7 812

    Par défaut

    Pourquoi pas oci_fetch_all ?

  3. #3
    Invité régulier
    Inscrit en
    juillet 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 15
    Points : 5
    Points
    5

    Par défaut J'ai trouvé mais j'ai une nouvelle question

    Bonjour,

    Désolé pour ma réponse tardive, en tout cas merci pour ta réponse, mais j'ai trouvé un début de réponse à ma question. En fait je passe par une fonction qui me permet d'executer d'un coup toute mes requete :

    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
     
     
    function Get($cpt)
    {
     
    $dbstr ="(DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = IP))
        )
        (CONNECT_DATA =
          (SID = SID)
        )
      )" ;
     
    $conn = oci_connect( "USER", "MDPj",$dbstr); 
     
    $query1 = oci_parse ( $conn , "select sum(sd) from table where ex='2011' and compte=$cpt" ); 
    oci_execute ( $query1 ); 
    $q = oci_fetch_array ( $query1 , OCI_BOTH ) ;     
     
     
    //echo $q[0];
    echo ''.number_format($q["0"],2, ',', ' ').'' ;
     
     
    }  
     
    Get(2088);
     
     
    echo "<br />";
    Get(215);
    Par contre maintenant je voudrais faire à certains moment dans mon tableau, les additions de mes fonctions exemple :

    Code :
    1
    2
     
    echo get(215)+get(2088);
    Mais là ca m'affiche les deux resultat cote à cote. j'ai même tenté de les stocks dans une variable dans la fonction et hors de la fonction ! Je dois peut etre type ma valeur de sortie de la fonction, mais là je caller !

    Merci d'avance pour le coup de main.

  4. #4
    Invité régulier
    Inscrit en
    juillet 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 15
    Points : 5
    Points
    5

    Par défaut c'est bon

    En fait il faut utiliser la fonction return et non echo dans le corps de la fonction et don il faut faire l'echo en dehors afin de pouvoir faire la somme et voilà.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •