|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Bonjour,
Suite à mon dernier poste (cf : http://www.developpez.net/forums/d11...er-sous-shell/) j'arrive à récupérer dans un fichier le nom de la machine et une valeur. Exemple : Machine1 = valeur Machine2 = valeur Machine3 = valeur ..... J'aimerai exploiter ce fichier en "PHP" dans le but d'insérer les valeurs du fichier dans une base de données MySQL. Voici pour le moment mon script : Code :
Comment dois-je faire ? Par avance merci |
||
|
|
00
|
|
|
#2 | ||||
|
Membre chevronné
![]() Taoufiq BenDéveloppeur Web Inscription : mai 2009 Messages : 461 ![]() |
Code :
Code :
|
||||
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Bonjour et merci pour ta réponse,
J'ai modifié mon script comme cela : Code :
PHP Notice: Undefined offset: 11 in /home/index2.php on line 11 PHP Notice: Undefined offset: 1 in /home/index2.php on line 12 PHP Notice: Undefined offset: 1 in /home/index2.php on line 12 |
||
|
|
00
|
|
|
#4 | ||
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
Si il y a, comme dans cet exemple, 11 éléments dans un tableau, les index vont de 0 à 10 inclus.
Il faut donc commencer à count($ar)-1 et finir à 0. D'où le code suivant qui devrait mieux fonctionner : Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Merci pour ta réponse,
j'ai modifié le script comme ceci : Code :
PHP Notice: Undefined offset: 1 in /home/index2.php on line 12 Par contre le fichier "monfichier" peut contenir des centaines de lignes. |
||
|
|
00
|
|
|
#6 | |
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
Citation:
peut être y a t-il une ligne sans espace entre Machine et sa valeur ? Ou un retour à la ligne de trop à la fin de ton fichier ? Il ne faut pas qu'il y ait de ligne "vide", je pense. Si la règle un couple "Machine valeur" par ligne est respectée, alors il n'y aura pas de problème je pense. |
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Est-ce que le signe "=" entre machine et valeur peut poser problème ?
Je viens de vérifier mon fichier et j'ai bien pour chaque ligne : Machine = valeur Machine = valeur ... j'ai essayé d'insérer manuellement une machine avec la commande suivante : mysql> insert into matable VALUES ('Machine','valeur'); Et tout fonctionne correctement... |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
En effet, ça pose problème, car le code ci-dessous découpe la chaine de caractères à chaque espace rencontré.
Utiliser la ligne ci-dessous en veillant bien à que chaque ligne soit struturée de la même façon dans le fichier. |
|
|
00
|
|
|
#9 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
j'ai modifié le code comme cela :
Code :
PHP Notice: Undefined offset: 1 in /home/index2.php on line 12 La ligne 12 correspond à : Code :
$sql = "INSERT INTO matable VALUES('" . $ar_data[0] . "','" . $ar_data[1] . "')"; |
||
|
|
00
|
|
|
#10 | ||
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
comme je l'ai dit plus haut, oui.
Il faut bien vérifier que chaque ligne du fichier respecte la règle : Machine[espace]=[espace]valeurEt qu'il n'y ait pas de ligne "vide". Pour débugger, un ptit affichage de ce que le tableau contient s'impose Code :
|
||
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Je pense avoir trouvé !
J'ai oublié d'insérer dans mon script la ligne ci-dessous Lorsque j'exécute mon script j'ai toujours le message d'erreur mais mes données sont bien intégrées dans ma base de données. Par contre dans ma base de données il y a des insertions de ligne vide entre chaque serveur. Comment faire pour ne plus en avoir ? dans mon fichier j'ai aucun espace entre chaque ligne |
|
|
00
|
|
|
#12 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Citation:
Voici le résultat du script ci-dessus : Citation:
Je ne sais pas si cela est important mais machine1/2/3/... correspond au nom des différentes machines et peut être en MAJUSCULE, minuscule, et peut contenir un nombre de caractère différent. |
||||
|
|
00
|
|
|
#13 | ||
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
Tant que le nom de la machine ne contient pas " = ", tout va bien.
Il y a bien une ligne "vide" dans le fichier. l'index [10] ne contient rien. Il faut enlever la ligne vide. Puis un ptit test (code ci-dessous) sur la chaine pour régler les prochaines lignes vides inopinées Code :
Si on veut "chipoter", on peut boucler comme cela : for ($i = (count($ar)-2); $i >= 0; $i--) |
||
|
|
00
|
|
|
#14 | ||
![]() ![]() |
Bonjour,
il subsiste un problème de passage intempestif à la ligne (voir à partir de [1]) C'est dû au nl2br() : malgré le <br /> ajouté, un "truc" invisible reste (une tabulation verticale "\x0B" ?? ...) Pour résoudre ca : trim($ar[$i]) Code :
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
||
|
|
00
|
|
|
#15 | ||
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Merci pour vos réponses !
ça fonctionne bien avec "trim" mais j'ai toujours ce message d'erreur : PHP Notice: Undefined variable: sql in /home/index2.php on line 15 La ligne 15 correspond à : Je ne sais pas si ce message d'erreur est impactant ou non. Voici mon code : Code :
|
||
|
|
00
|
|
|
#16 | ||
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
soit tu le mets dans le "if" des "trim" ... soit tu tests si la ligne en cours de lecture est vide :
Code :
|
||
|
|
00
|
|
|
#17 |
|
Nouveau Membre du Club
![]() Inscription : août 2011 Messages : 30 ![]() |
Super ! ça fonctionne correctement !
Encore merci à vous pour votre patience. Bonne soirée |
|
|
00
|
|
|
#18 | |||||
![]() ![]() |
Exact :
Code :
Citation:
A cause de ca : Code :
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
|||||
|
|
00
|
|
|
#19 |
|
Membre éclairé
![]() Cyril Ingénieur développement logiciels Inscription : avril 2007 Messages : 205 ![]() |
ça roule ! j'avais pas fait attention à ce "truc" ajouté par le nl2br
|
|
|
00
|
|
|
#20 | ||
|
Invité de passage
![]() sébastien en formation DL Inscription : septembre 2010 Messages : 1 ![]() |
Bonjour à toutes et à tous,
voilà, j'ai fait un script PHP pour extraire des données d'un fichier et les insérer dans plusieurs tables, le problème est que j'ai des données manquante dans une table, et si j'essaie de modifier la partie concernant cette table il y en a trop, ça concerne ma table 'réaliser', voici le script: Code :
D'avance merci PS: j'ai mi en pièce jointe le fichier appelé pour remplir la base. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com