[PHP] execution fichier .sql

execution fichier .sql [PHP] - PHP - Programmation

Marsh Posté le 13-10-2003 à 17:32:40    

Code :
  1. // Ouverture du fichier contenant les requètes SQL  
  2. $file = fopen($chemin, "r" );
  3. //Tant que l'on est pas a la fin du fichier  
  4. while(!feof($file))
  5. {
  6. $sql = "" ;
  7. $buffer = fgets($file, 2);
  8. while($buffer != ";" )
  9. {
  10. $sql = $sql.$buffer;
  11. $buffer = fgets($file, 2);
  12. }
  13. $req = mysql_query($sql) or die("Erreur avec la requête $sql" ) ;
  14. }
  15. fclose($file);


 
Problème : la boucle ne se termine pas ! Pourquoi?
Il exécute bien les requêtes sql du fichier mais il ne ve pas s'arréter à la fin du fichier txt.....  :pfff:


---------------
MOD : Mon PC silencieux  |  Topic Miranda IM
Reply

Marsh Posté le 13-10-2003 à 17:32:40   

Reply

Marsh Posté le 13-10-2003 à 18:12:34    

gothico a écrit :

Code :
  1. // Ouverture du fichier contenant les requètes SQL  
  2. $file = fopen($chemin, "r" );
  3. //Tant que l'on est pas a la fin du fichier  
  4. while(!feof($file))
  5. {
  6. $sql = "" ;
  7. $buffer = fgets($file, 2);
  8. while($buffer != ";" )
  9. {
  10. $sql = $sql.$buffer;
  11. $buffer = fgets($file, 2);
  12. }
  13. $req = mysql_query($sql) or die("Erreur avec la requête $sql" ) ;
  14. }
  15. fclose($file);


 
Problème : la boucle ne se termine pas ! Pourquoi?
Il exécute bien les requêtes sql du fichier mais il ne ve pas s'arréter à la fin du fichier txt.....  :pfff:  

c quelle boucle qui ne s'arrete pas ?Parce que la deuxieme boucle me semble une boucle infini car tu n'as pas marqué while($buffer != ";" && !feof($file))  
 
Je crois que ca viens de la. [:spamafote]


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 18:26:48    

de toutes façons, c'est une mauvaise utilisation de feof

Reply

Marsh Posté le 13-10-2003 à 18:32:06    

Taz a écrit :

de toutes façons, c'est une mauvaise utilisation de feof

c a dire ?


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 18:37:02    

ben tu lis la doc ou fait une recherche sur le forum. dans tous ce qui est C et dérivés (donc PHP, C++, etc), il ne faut jamais utiliser feof pour détecter la fin de fichier puisque cette fonction est faite pour caractériser une erreur comme étant EOF

Reply

Marsh Posté le 13-10-2003 à 18:44:06    

Taz a écrit :

ben tu lis la doc ou fait une recherche sur le forum. dans tous ce qui est C et dérivés (donc PHP, C++, etc), il ne faut jamais utiliser feof pour détecter la fin de fichier puisque cette fonction est faite pour caractériser une erreur comme étant EOF

ben en cours j'ai appris que feof c'etait pour detecter la fin d'un fichier  :heink:  
et puis dans la doc,il est bien dis que c'est pour savoir si c'est la fin du fichier:
http://fr3.php.net/manual/fr/function.feof.php


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 18:51:52    

ben non, ton cours et faux, et la documentation est incomplète. n'utilise jamais feof, test le retour des tes fonctions de lecture

Reply

Marsh Posté le 13-10-2003 à 18:55:27    

Taz a écrit :

ben non, ton cours et faux, et la documentation est incomplète. n'utilise jamais feof, test le retour des tes fonctions de lecture

mon prof a quand meme un bac +11 ,il sait ce qu'il dit  :sarcastic:  
 
sinon explique ce que j'ai mis en gras,car je vois pas ce que tu veux dire.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 19:05:24    

ton prof peut avoir fait 100ans d'études et se tromper
http://fr2.php.net/manual/en/function.fgets.php
 
feof est une fonction de caractérisation, pas de détection. on est pas en pascal. dans les langages à sémantique C, le drapeau eof est positionné uniquement à la première tentative de lecture infructueuse, ce qui provoque une erreur. libre à toi ensuite de caractérisé cette erreur qui peut être EOF

Reply

Marsh Posté le 13-10-2003 à 19:06:34    

forummp3 a écrit :

mon prof a quand meme un bac +11 ,il sait ce qu'il dit  :sarcastic:

BAC+11 en quoi ? Lettres modernes ? [:ddr555]

Reply

Marsh Posté le 13-10-2003 à 19:06:34   

Reply

Marsh Posté le 13-10-2003 à 19:08:45    

Taz a écrit :

ton prof peut avoir fait 100ans d'études et se tromper
http://fr2.php.net/manual/en/function.fgets.php
 
feof est une fonction de caractérisation, pas de détection. on est pas en pascal. dans les langages à sémantique C, le drapeau eof est positionné uniquement à la première tentative de lecture infructueuse, ce qui provoque une erreur. libre à toi ensuite de caractérisé cette erreur qui peut être EOF

j'ai jamais fait de pascal,je fais du C.


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 19:09:00    

*Syl* a écrit :

BAC+11 en quoi ? Lettres modernes ? [:ddr555]  

informatique [:spamafote]


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 19:56:11    

forummp3 a écrit :

mon prof a quand meme un bac +11 ,il sait ce qu'il dit  :sarcastic:  


attention, un diplôme ne dispense en aucune manière de la connerie, ce n'est pas une insinuation mais une vérité en général.
 
C'est pas parce que ton prof à bac+11 qu'il a les bonnes habitudes hein.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 13-10-2003 à 21:03:11    

De toutes manières, il y a une chose que tous les étudiants en info devraient se foutre dans la tête :
 
L'info est en constante évolution et évolue en particulier bcp plus vite que les programmes de cours. Ce que le prof a appris il y a 11 ans est différent de ce que l'on apprend maintenant par exemple (même si les bases n'ont pas réellement évoluées).
 
Bref, un expert en php par exemple n'a surement pas 11 ans d'expé derrière lui.

Reply

Marsh Posté le 13-10-2003 à 21:17:27    

sauf que ceci est inhérant au C depuis toujours

Reply

Marsh Posté le 13-10-2003 à 21:24:23    

bon ben alors ca veux peut etre dire qu'il veux nous aprendre une facon "facile" de lire dans un fichier,car peut etre que votre solution est plus compliqué,ou bien ne fait pas partit du programme de bts (he oui,faut pas oublier qu'a la fin de l'année ya un examen  sur le programme officiel et non sur les conseils de taz).
C'est un peu comme si l'on m'aprennais le html en bts et qu'il y en ai un qui arrive et qui me dit que mon code n'est pas w3c compliant.Ca veux pas dire que le prof est a la ramasse ou quoi que ce soit mais que c'est tout simplement pas dans le programme et que c trop "pointu" .
voila [:spamafote]


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 13-10-2003 à 21:30:12    

je vois pas en quoi  
 
while(fgets())
{} est plus compliqué qu'un while !feof buggé qui peut potentiellement oublié des caractères ...
 
c'est pas une histoire de « faire plaisir à taz » ou pas faire comme le prof : si t'as un prof qui à un putain d'accent d'afrique du nord, tu vas te mettre à parler comme lui parce qu'il prononce comme ça...  
 
le prof est à la ramasse .| si t'es pas capable de comprendre ça : certains sont des chercheurs, d'autres ne font que de la modélisation, d'autres encore des pédagogues, mais la plus part ne savent pas coder, ne savent pas lire une doc
 
si t'apprends pour faire plaisir au prof, t'es pas sorti... si tu comptes tirer toutes tes connaissances de ton prof, non plus. alors fait plutot la remarque à ton professeur et regarde sa réaction.

Reply

Marsh Posté le 13-10-2003 à 21:33:52    

forummp3 a écrit :

bon ben alors ca veux peut etre dire qu'il veux nous aprendre une facon "facile" de lire dans un fichier,car peut etre que votre solution est plus compliqué,ou bien ne fait pas partit du programme de bts (he oui,faut pas oublier qu'a la fin de l'année ya un examen  sur le programme officiel et non sur les conseils de taz).
C'est un peu comme si l'on m'aprennais le html en bts et qu'il y en ai un qui arrive et qui me dit que mon code n'est pas w3c compliant.Ca veux pas dire que le prof est a la ramasse ou quoi que ce soit mais que c'est tout simplement pas dans le programme et que c trop "pointu" .
voila [:spamafote]


 
Ben si, ça veut dire qu'il est à la ramasse. Encore que des mecs en entreprise n'ai pas le temps de se soucier des normes et soient obligés par exemple de travailler dans l'urgence en collaboration avec des mecs pour qui HTML rime avec WYSIWYG, ça peut se comprendre.
Mais un prof qui apprendrait le HTML 'hors normes', serait comme un prof de lettre qui t'apprendrait à écire en faisant des fautes de grammaire ou d'orthographe.

Reply

Marsh Posté le 13-10-2003 à 21:35:37    

amen

Reply

Marsh Posté le 13-10-2003 à 23:13:36    

En DUT, on avait eu a faire un programme en C++ avec un compilateur qui n'était pas conforme ausx normes du language. Résultat ceux qui ont fait comme c'était indiqué dans les court ont fait un programme juste mais qui ne compilait même pas avec les compilateur qu'on avait le droit d'utiliser et ceux qui ont ffait un programme qui marchait été juste ceux qui avait enus comptes du compilateur en question.
 
Ce que j'en ai retiré, c'est que c'est bien beau de faire comme le prof le dit, mais que quand tu seras dans une société, c'est pas ça qui te donera raison face au client. L'escuse du "mais c'est le compilateur qui est défaillant" ne tiendra pas face a un client. (ni face au patron d'ailleur)

Reply

Marsh Posté le 13-10-2003 à 23:48:28    

n'importe quoi ...

Reply

Marsh Posté le 14-10-2003 à 00:33:29    

Taz : T'as peut être eu la chance de ne jamais tombé sur des compilateurs un peu laxiste voire je m'enfoutistes par rapports aux normes mais c'est pas le ccas de tout le monde. Quand aux prof, ceux que j'ai eu ont essayé de nous donner des bases solides, mais dans le cas dont j'ai parlé, le prof n'avait jamais regardé si le compilateur qui était a notre disposition ce comportait bien ccomme il ce qu'il pensait. Ca ne veut en rien dire que le prof était nul ou qu'a lépoque j'étais incapable de taper du code sur un PC. Ca veut juste dire qu'entre ce qu'attendait le prof et ce qu'était affiché a l'écran, il falait choisir. A l'époque j'ai choisis d'être conforme à la machine ce qui m'a couté quelques points mais au moins, je voyais à l'écran le résultat qu'était demandé et pas une liste de messages d'erreur et de warning.
Maintenant, si tu veux me prendre pour un mytho qui essayes de ce faire passé pour un martir, alors libre a toi de le penser, moi je sais ce que j'ai vécus.

Reply

Marsh Posté le 14-10-2003 à 00:37:55    

vous me faites bien rire avec vos histoires d'être conforme à la machine ou de faire plaisir à votre compilateur.
 
 
le cas présent, l'erreur que je signale -> sa solution n'implique aucune erreur d'interprétation et le comportement résultant est cette fois correcte.
 
bon, je vous note tous dans mes signets pour la prochaine fois ou postez un "fgets déconne, j'arrive à lire la dernirèe ligne" ou des trucs dans ce genre. à bon entendeur salut

Reply

Marsh Posté le 14-10-2003 à 01:14:52    

Dit moi donc a quel moment j'ai dit que ta solution était pas la bonne.
J'apportes un exemple pour qu'il ccomprenne qu'il faut savoir ne pas faire exactement comme les profs le disent et toi tout ce que tu trouves d'intéressant, c'est te foutre de moi.
Et entre nous, je me demandes bien lequel de nous deux sera le premier à demander de l'aide sur ce forum pour un problème a la con en PHP.
D'aillieur, je me demandes depuis combien de temps je l'ai plus fait, faudrait que je vérifies. ;)

Reply

Marsh Posté le 14-10-2003 à 07:31:04    

je fais pas de PHP :o

Reply

Marsh Posté le 14-10-2003 à 09:55:20    

:heink:  
He ben, ca discute fort sur ma question :D
 
En tout ka, mon pb est résolu, merci   [:ddr555]  
 
 
---------------------------
string  fgets ( resource   handle , int   length )
fgets retourne la chaîne lue jusqu'à la longueur length - 1 octet, ou bien la fin du fichier, ou encore un retour chariot (le premier des trois qui sera rencontré).  
 
Si une erreur survient, fgets retourne FALSE .  
 
Erreur courante :  
 
Les programmeurs habitués à la programmation 'C' noteront que fgets ne se comporte pas comme son équivalent C lors de la rencontre de la fin du fichier.


Message édité par gothico le 14-10-2003 à 09:57:01

---------------
MOD : Mon PC silencieux  |  Topic Miranda IM
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed