Ma question est comment je peux mettre les resultat de ma requete dans un fichier qui n'est pas encore créer !
Ma question est comment je peux mettre les resultat de ma requete dans un fichier qui n'est pas encore créer !
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);
voila mon fichier !
ou j dois mettre ca est dans la meme page ou quoi ?
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>
et voilà!
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>![]()
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 :et merci pour votre aide ?
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."); } ?>
Ok, pouvez m'eclaircir ce que j'ai mentionner !
Si possible expliquez moi ce que vous avez ecris au dessus;
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>
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());C'est plus compact que le code précédent. Il faut s'assurer que php5 soit installé! c'est tout.
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());
![]()
en même temps tu peux serializer aussi en PHP4...
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) :
pourriez vous m'aidez puisue je suis bloquer dans ce point la !
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>
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>![]()
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager