Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 08/12/2006, 10h49   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
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 !
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 18h35   #2
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
Ce n'est pas très compliqué, pour autant que tu aies l'accès en écriture.
Code :
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);
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 22h14   #3
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
Par défaut Comment je peux mettre les résultat d'une requete dans un fichier

voila mon fichier !
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
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 ?
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 23h01   #4
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
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
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à!
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 23h27   #5
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
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 :
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 ?
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 16h19   #6
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
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 :
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;
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 12h33   #7
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
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 :
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.
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 12h42   #8
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
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 : 216
Points : 219
Points : 219
en même temps tu peux serializer aussi en PHP4...
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 16h15   #9
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
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 :
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 !
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 20h51   #10
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
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 :
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>
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 21h44   #11
Membre du Club
 
Inscription : novembre 2006
Messages : 304
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : novembre 2006
Messages : 304
Points : 44
Points : 44
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
Maria1505 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h09.


 
 
 
 
Partenaires

Hébergement Web