IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Comment je peux mettre les résultat d'une requete dans un fichier


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Points : 77
    Points
    77
    Par défaut [SQL] Comment je peux mettre les résultat d'une requete dans un fichier
    Ma question est comment je peux mettre les resultat de ma requete dans un fichier qui n'est pas encore créer !

  2. #2
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    Ce n'est pas très compliqué, pour autant que tu aies l'accès en écriture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // creation du fichier
    if(!($handle = fopen("resultatSQL", "w+"))) {
    trigger_error("protection en écriture!", E_ERROR);
    die();
    }
    // requete SQL
    $res = mysql_query($requete);
    // recuperation des lignes du resultat
    while($l = mysql_fetch_array($res)) {
        // ecriture dans le fichier
        for($i = 0; $i < count($l); $i++) 
              fwrite($handle, $l[$i++] . " | ");
        // nouvelle ligne
        fwrite($handle, "\n");
    } // fermeture du fichier liberation de l'acces
    fclose($handle);

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Points : 77
    Points
    77
    Par défaut Comment je peux mettre les résultat d'une requete dans un fichier
    voila mon fichier !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <html>
    <body>
    <font color=orange><h3 align=center><u>Résultat</u></h3></font>
    <hr>
    <CENTER>
    <table border=1>
           <tr>
              <th>Nom</th>
              <th>Prenom</th>
              <th>CNE</th>
              <th>Age</th>
              <th>Moyenne</th>
                   </tr>
    <?
    if (mysql_connect("localhost","root","")>0)
    echo"";
    else echo "connexion impossible ";
    if(mysql_select_db("ensas")==true) 
    echo "<br> ";
    else "selection de la base impossible ";
    $choix1=$_POST['choix1'];
    $choix2=$_POST['choix2'];
    $valeur=$_POST['valeur'];
    $requete="SELECT * FROM g_info WHERE $choix1 $choix2 '$valeur'";
    $result=mysql_query($requete);
       do
         {
    ?>
           <tr>
              <td><? echo $enreg['NOM']; ?></td>
              <td><? echo $enreg['PRENOM']; ?></td>
              <td><? echo $enreg['CNE']; ?></td>
              <td><? echo $enreg['Age']; ?></td>
              <td><? echo $enreg['Moyenne']; ?></td>
           </tr>
    <?
        }while($enreg=mysql_fetch_array($result));
     
    ?>
    </table>
    </center>
    </body>
    </html>
    ou j dois mettre ca est dans la meme page ou quoi ?

  4. #4
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <html>
    <body>
    <font color=orange><h3 align=center><u>Résultat</u></h3></font>
    <hr>
    <CENTER>
    <table border=1>
           <tr>
              <th>Nom</th>
              <th>Prenom</th>
              <th>CNE</th>
              <th>Age</th>
              <th>Moyenne</th>
                    </tr>
    <?
    if (mysql_connect("localhost","root","")>0)
    echo"";
    else echo "connexion impossible ";
    if(mysql_select_db("ensas")==true) 
    echo "<br> ";
    else "selection de la base impossible ";
    $choix1=$_POST['choix1'];
    $choix2=$_POST['choix2'];
    $valeur=$_POST['valeur'];
    $requete="SELECT * FROM g_info WHERE $choix1 $choix2 '$valeur'";
    $result=mysql_query($requete);
       do
         {
          // creation du fichier
           if(!($handle = fopen("resultatSQL", "w+"))) {
                trigger_error("protection en écriture!", E_ERROR);
                die();
            }
        // ecriture dans le fichier
        for($i = 0; $i < count($enreg); $i++) 
              fwrite($handle, $enreg[$i++] . " | ");
        // nouvelle ligne
        fwrite($handle, "\n");     // fermeture du fichier liberation de l'acces
      fclose($handle);
    ?>
           <tr>
              <td><? echo $enreg['NOM']; ?></td>
              <td><? echo $enreg['PRENOM']; ?></td>
              <td><? echo $enreg['CNE']; ?></td>
              <td><? echo $enreg['Age']; ?></td>
              <td><? echo $enreg['Moyenne']; ?></td>
           </tr>
    <?
        }while($enreg=mysql_fetch_array($result));
     
    ?>
    </table>
    </center>
    </body>
    </html>
    et voilà!

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Points : 77
    Points
    77
    Par défaut Comment je peux mettre les résultat d'une requete dans un fichier
    Merci, mais svp vous avez mis le resultat de la requete dans un fichier appelé $handle mais est ce que je px consulter ce fichier pour voir le resultat que contient ce dernier? Ma deuxième est ce que je px pas pas sauvegarder un contenu dans un fichier ou seulement il suffit de l'ouvrir en mode ecriture et ecrire dedans.
    voila le script que j'ai fait pour lire le contenu de $handle mais pas de résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $file = "$handle.txt";
    if( $fd= fopen($file, "r")) {
    while( !feof($fd) ) {
    $str.= fgets($fd, 1024);
     
    }
    fclose($fd); 
    echo $str;
    } else {
    die("Ouverture du fichier <b>$file</b> impossible.");
    }
    ?>
    et merci pour votre aide ?

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Points : 77
    Points
    77
    Par défaut Comment je peux mettre les résultat d'une requete dans un fichier
    Ok, pouvez m'eclaircir ce que j'ai mentionner !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <html>
    <body>
    <font color=orange><h3 align=center><u>Résultat</u></h3></font>
    <hr>
    <CENTER>
    <table border=1>
           <tr>
              <th>Nom</th>
              <th>Prenom</th>
              <th>CNE</th>
              <th>Age</th>
              <th>Moyenne</th>
                    </tr>
    <?
    if (mysql_connect("localhost","root","")>0)
    echo"";
    else echo "connexion impossible ";
    if(mysql_select_db("ensas")==true) 
    echo "<br> ";
    else "selection de la base impossible ";
    $choix1=$_POST['choix1'];
    $choix2=$_POST['choix2'];
    $valeur=$_POST['valeur'];
    $requete="SELECT * FROM g_info WHERE $choix1 $choix2 '$valeur'";
    $result=mysql_query($requete);
       do
         {
          // creation du fichier
           if(!($handle = fopen("resultatSQL", "w+"))) {//ici vous avez ouvert le fichier en mode ecriture et lecture en meme temps cad le resultat de la requete est affiché a partir de fichier resultatsql
    //prq je px pas recuperer le contenu de mon fichier resultatsql a partir d'un autre fichier comme je fais pour autre fichier
    //est ce que mon fichier resultatsql est détruit a chaque fermeture            trigger_error("protection en écriture!", E_ERROR);
                die();
            }
        // ecriture dans le fichier
        for($i = 0; $i < count($enreg); $i++) 
              fwrite($handle, $enreg[$i++] . " | ");
        // nouvelle ligne
        fwrite($handle, "\n");     // fermeture du fichier liberation de l'acces
      fclose($handle);
    ?>
           <tr>
              <td><? echo $enreg['NOM']; ?></td>
              <td><? echo $enreg['PRENOM']; ?></td>
              <td><? echo $enreg['CNE']; ?></td>
              <td><? echo $enreg['Age']; ?></td>
              <td><? echo $enreg['Moyenne']; ?></td>
           </tr>
    <?
        }while($enreg=mysql_fetch_array($result));
     
    ?>
    </table>
    </center>
    </body>
    </html>
    Si possible expliquez moi ce que vous avez ecris au dessus;

  7. #7
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut
    le fichier n'est pas détruit à chaque fermeture. mais comme j'ai adaptéà ton code je sais que le fait de le referemer à chaque ligne du résultat peut eventuellement effacer le contenu précédent, j'ai pas vérifier si lors de l'ouverture du fichier resultatSQL le pointeur se met en fin de fichier ou au début.. si tel est le cas il suffit simplement de déplacer les commande fopen et fclose endohors de laboucle dowhile. Si tu veux le relire après ce n'est pas plus difficileque de le révouvrir dans un autre script.
    Ma question est: est-ce que cela fonctionne? Et aussi: est-ce que tu relis le fichier avec un editeur texte ou alors tu le relis directement sur un script? Une autre fonction plus évidente serait de sérialiser le resultat dans un objet avec php 5 _serialize <-> _unserialize. Ainsi tu garanti une sécurité pour l'accèsau resultats. par exemple en lieu et place de fwrite: $resultatSQL = new RESSQL(); puis avant de fermer lefichier file_put_contents("resultatSQL", $resultatSQL->_serialize());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class RESSQL { 
    var $res;
    function RESSQL () { 
      $res = new array();
    }
    function add($ligne) {
      $res[] = $ligne;
    }
     
    }$resultatSQL = new RESSQL(); 
    do{ $resultatSQL->add($ligne); } while($ligne = mysql_fetch_array($resultat);)
    file_put_contents($resultatSQL->_serialize());
     
    // relire le fichier
    $resultatSQL = file_get_contents("resultatSQL");
    print($resultatSQL->_unserialize());
    C'est plus compact que le code précédent. Il faut s'assurer que php5 soit installé! c'est tout.

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    en même temps tu peux serializer aussi en PHP4...

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Points : 77
    Points
    77
    Par défaut Comment je peux mettre les résultat d'une requete dans un fichier
    Merci bcq pour votre aide mais je vx pas travailler avec des classe, revenons a la premiere solution que vous avez donné : je l'ai utiliser comme suit sauf(en rose) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <html>
    <head>
         <title>Recherche</title>
                <STYLE TYPE="text/css">
                      tr.c1{background-color:#FF00FF;}
                      tr.c2{background-color:#DDA0DD;}
                </style>
    </HEAD>
    
    <body>
    <font color=orange><h3 align=center><u>Résultat</u></h3></font>
    <hr>
    <CENTER>
    <table border=1>
           <tr>
              <th>Nom</th>
              <th>Prenom</th>
              <th>CNE</th>
              <th>Age</th>
              <th>Moyenne</th>
                    </tr>
    <?
    if (mysql_connect("localhost","root","")>0)
    echo"";
    else echo "connexion impossible ";
    if(mysql_select_db("ensas")==true) 
    echo "<br> ";
    else "selection de la base impossible ";
    //$choix1=$_POST['choix1'];
    //$choix2=$_POST['choix2'];
    //$valeur=$_POST['valeur'];
    $requete="SELECT * FROM g_info WHERE Age<23";
    $result=mysql_query($requete);
    if (mysql_num_rows($result)>0)
    {
        $i=0;
        $tabStyle[0]="c1";
        $tabStyle[1]="c2";
        while($enreg=mysql_fetch_array($result))
             {
                
                 /* echo '<tr class="'.$tabStyle[++$i%2].'">';
                  echo '<td>'.$enreg['NOM'].'</td>';
                  echo '<td>'.$enreg['PRENOM'].'</td>';
                  echo '<td>'.$enreg['CNE'].'</td>';
                  echo '<td>'.$enreg['Age'].'</td>';
                  echo '<td>'.$enreg['Moyenne'].'</td>';
                  echo '</tr>';*/
                 echo $enreg['NOM']."".$enreg['PRENOM'];
                   
             }
    }
              
         if(!($handle = fopen("resultatSQL.txt", "w+"))) 
                       {
                       trigger_error("protection en écriture!", E_ERROR);
                       die();
                       }
        
          for($i = 0; $i < count($enreg); $i++) //ici j'obtiens un fichier  vide qui contient seulement des'|' par contre si je remplace $enreg[$i++] . " | " par une chaine je recupere cette chaine dans le fichier:(           fwrite($handle, $enreg[$i++] . " | ");
                               fwrite($handle, "\n");
                             
         fclose($handle);
    ?>
    </table>
    </center>
    </body>
    </html>
    pourriez vous m'aidez puisue je suis bloquer dans ce point la !

  10. #10
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut sauvegarde du resultat SQL dans un fichier simple
    il y a une petite erreur: $enreg[$i++] doit etre remplacé par $enreg[$i] tout simplement car le compteur est déjà activé dans la déclaration for(). et il faut absolument intégrer l'écriture du fichier à l'instruction while.
    Synthétiquement cela donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <html>
    <head>
         <title>Recherche</title>
                <STYLE TYPE="text/css">
                      tr.c1{background-color:#FF00FF;}
                      tr.c2{background-color:#DDA0DD;}
                </style>
    </HEAD>
     
    <body>
    <font color=orange><h3 align=center><u>Résultat</u></h3></font>
    <hr>
    <CENTER>
    <table border=1>
           <tr>
              <th>Nom</th>
              <th>Prenom</th>
              <th>CNE</th>
              <th>Age</th>
              <th>Moyenne</th>
                    </tr>
    <?
    if (mysql_connect("localhost","root","")>0)
    echo"";
    else echo "connexion impossible ";
    if(mysql_select_db("ensas")==true) 
    echo "<br> ";
    else "selection de la base impossible ";
    //$choix1=$_POST['choix1'];
    //$choix2=$_POST['choix2'];
    //$valeur=$_POST['valeur'];
    $requete="SELECT * FROM g_info WHERE Age<23";
    $result=mysql_query($requete);
    if (mysql_num_rows($result)>0)
    {
        $i=0;
        $tabStyle[0]="c1";
        $tabStyle[1]="c2";
    // ouverture initiale          
         if(!($handle = fopen("resultatSQL.txt", "w+"))) 
                       {
                       trigger_error("protection en écriture!", E_ERROR);
                       die();
                       }
     
        while($enreg=mysql_fetch_array($result))
             {
     
                 /* echo '<tr class="'.$tabStyle[++$i%2].'">';
                  echo '<td>'.$enreg['NOM'].'</td>';
                  echo '<td>'.$enreg['PRENOM'].'</td>';
                  echo '<td>'.$enreg['CNE'].'</td>';
                  echo '<td>'.$enreg['Age'].'</td>';
                  echo '<td>'.$enreg['Moyenne'].'</td>';
                  echo '</tr>';*/
                 echo $enreg['NOM']."".$enreg['PRENOM'];
        // écriture incrémentée
          for($i = 0; $i < count($enreg); $i++)     
    fwrite($handle, $enreg[$i] . " | ");
                               fwrite($handle, "\n");
     
             }
    // fermeture finale                       
         fclose($handle);
    }
     
    ?>
    </table>
    </center>
    </body>
    </html>

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Points : 77
    Points
    77
    Par défaut Comment je peux mettre les résultat d'une requete dans un fichier
    Merci beaucoup cela a régler mon problèmes, Bravo !
    je savais pas qu'il me falait juste ca sachant que j'ai deja mis enreg[$i] mais le while m'a échappé ! merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/01/2010, 14h02
  2. Réponses: 2
    Dernier message: 07/04/2008, 16h37
  3. Réponses: 3
    Dernier message: 04/07/2006, 16h34
  4. Réponses: 7
    Dernier message: 02/05/2006, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo