Se connecter / S'enregistrer
Votre question

[Résolu] [PHP] Lire des lignes et séparer les données

Tags :
  • Php
  • chaine
  • Programmation
Dernière réponse : dans Programmation
2 Novembre 2011 14:07:33

Bonjour,
Voilà, j'ai un nouveau problème aujourd'hui. Je voudrais par l’intermédiaire d'un formulaire récupérer des données ligne par ligne. Ces lignes contiennent des valeurs séparer par une virgule: "125.215, 1254.2125, 12548.1254, 180, 25, 1", cela corresponds à des coordonnées sur une carte. Il y a une trentaine ou plus de ligne à traiter. Il faudrait que je récupère de la même manière que celle-ci (voir le code joint) mais en traitant dans des variables chaque lignes...

Citation :
  1. $donnees = "125.215, 1254.2125, 12548.1254, 180, 25, 1";
  2.  
  3. $donnees1 = preg_replace('#(.+)\, (.+)\, (.+)\, (.+)\, (.+)\, (.+)#i', '$1', $donnees);
  4. $donnees2 = preg_replace('#(.+)\, (.+)\, (.+)\, (.+)\, (.+)\, (.+)#i', '$2', $donnees);
  5. $donnees3 = preg_replace('#(.+)\, (.+)\, (.+)\, (.+)\, (.+)\, (.+)#i', '$3', $donnees);
  6. $donnees4 = preg_replace('#(.+)\, (.+)\, (.+)\, (.+)\, (.+)\, (.+)#i', '$4', $donnees);
  7. $donnees5 = preg_replace('#(.+)\, (.+)\, (.+)\, (.+)\, (.+)\, (.+)#i', '$5', $donnees);
  8. $donnees6 = preg_replace('#(.+)\, (.+)\, (.+)\, (.+)\, (.+)\, (.+)#i', '$6', $donnees);

Le but est en fait d'enregistrer toutes les positions dans une base de donnée qui regroupe les champs suivant:
TABLE: id, pos_x, pos_y, pos_z, pos_a, c1, c2

chaque ligne, bien sur, étant une nouvelle entrée dans la base...

J'ai chercher quelques info pour essayer de faire de la même méthode que les fichier texte, je n'ai pas réussi.
Les valeurs sont donnée par un "textarea".

Merci d'avance pour ceux qui comprenne ma demande ^^

Autres pages sur : php lire lignes separer donnees

a c 232 L Programmation
2 Novembre 2011 16:29:26

Salut,

Et tu peux pas faire un explode sur ta valeur en utilisant la virgule comme séparateur ?
2 Novembre 2011 16:40:53

En fait le soucis c'est que la chaine à l'origine se constitue comme celle-ci (sa doit rappeler quelque chose à certains ^^):
Citation :
AddStaticVehicle(409,1154.0563,-1152.7837,23.4562,271.4019,1,1); // COMENTAIRE ICI

Le but étant de récupérer chaque valeur ainsi que le commentaire à la fin, en faisant un "explode", sa me récupère que les valeur entre les deux balises... De plus, il faut malgré tout que je puisse entré du texte comme suit:

Citation :
AddStaticVehicle(409,1154.0563,-1152.7837,23.4562,271.4019,1,1); // COMMENTAIRE
AddStaticVehicle(409,1163.6692,-1152.7638,23.4562,269.4449,1,1); // COMMENTAIRE
AddStaticVehicle(409,1172.9904,-1152.6578,23.4615,269.7497,1,1); // COMMENTAIRE
AddStaticVehicle(409,1182.4790,-1152.8232,23.4832,269.3282,1,1); // COMMENTAIRE
AddStaticVehicle(507,1191.4906,-1152.8169,23.5375,269.6677,42,42); // COMMENTAIRE
AddStaticVehicle(507,1199.2006,-1152.8096,23.4434,268.8136,0,0); // COMMENTAIRE


Le tout devra être traiter par une page php qui contient un formulaire avec un "textarea" qui par la suite enregistrera toutes les valeurs dans une table dont les valeurs seront séparées.

Merci quand même pour ton aide =)
Contenus similaires
a c 232 L Programmation
2 Novembre 2011 18:00:46

Dans ton 1er exemple, tu as ta string avec juste les valeurs séparées par des virgules.
Donc tu as déjà réussi à parser le AddStaticVehicle( et le commentaire, non ?

Tu nous demandes juste comment parser tes valeurs, et avec un explode ça le fait très bien...

Sinon, si tu as toujours AddStaticVehicle(...); suivi d'un commentaire, tu peux faire une expression régulière pour récupérer ce qu'il y a entre les parenthèses, et tu fais un explode dessus. Puis tu récupères ce qu'il y a après la parenthèse fermante, et t'as ton commentaire
2 Novembre 2011 18:26:59

J'ai peut-être trouver une solution, j’édite mon post quand j'ai fini ;)  je sais pas exactement si c'est ce que tu ma dis mais je vais essayer quelque chose :) 

Citation :
  1. $Donnees = nl2br($_POST['nouveau']);
  2. $Alarme = $_POST['ajouter_Alarme'];
  3. $Verrou = $_POST['ajouter_Verrou'];
  4. $Proprietaire_ = $_POST['ajouter_Proprietaire'];
  5. if ($Proprietaire_ != NULL) $Proprietaire = $Proprietaire_; else $Proprietaire = "Aucun";
  6. $Essence = $_POST['ajouter_Essence'];
  7. $Prix = $_POST['ajouter_Prix'];
  8. $Vente = $_POST['ajouter_Vente'];
  9.  
  10. $Donnees = explode('<br />', $Donnees);
  11. $nombre = count($Donnees);
  12. for ($i = 0; $i <= $nombre-1; $i++)
  13. {
  14. $donnees1 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$1', $Donnees[$i]);
  15. $donnees2 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$2', $Donnees[$i]);
  16. $donnees3 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$3', $Donnees[$i]);
  17. $donnees4 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$4', $Donnees[$i]);
  18. $donnees5 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$5', $Donnees[$i]);
  19. $donnees6 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$6', $Donnees[$i]);
  20. $donnees7 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$7', $Donnees[$i]);
  21. $donnees8 = preg_replace('#AddStaticVehicle\((.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\,(.+)\); // (.+)#is', '$8', $Donnees[$i]);
  22.  
  23. echo '<input type="text" name="" value="INSERT INTO `serveur_vehicules` (`id`, `Model`, `Pos_x`, `Pos_y`, `Pos_z`, `Pos_a`, `Couleur_1`, `Couleur_2`, `Plaque`, `Alarme`, `Verrou`, `Proprietaire`, `Essence`, `Prix`, `Status_de_vente`, `Commentaire`) VALUES (NULL, \''.$donnees1.'\', \''.$donnees2.'\', \''.$donnees3.'\', \''.$donnees4.'\', \''.$donnees5.'\', \''.$donnees6.'\', \''.$donnees7.'\', \''.$Plaque.'\', \''.$Alarme.'\', \''.$Verrou.'\', \''.$Proprietaire.'\', \''.$Essence.'\', \''.$Prix.'\', \''.$Vente.'\', \''.$donnees8.'\');" size="300" />';
  24. }


Voilà j'ai trouvé (j'ai mis la source pour ceux qui ont besoin) ! Merci beaucoup ! Je me suis servis du "explode" et de mes infos à moi ^^ Ne t'inquiete pas pour le "input" à la fin c'était juste pour vérifier que le code m'afficher bien toute les valeur... Il y'a juste quelque chose qui m'embete un peut, c'est le fait que je traite les retour à la ligne par "nl2br()" et par le "<br />" mais c'est pas grave sa fonctionne quand même lol.

Merci encore ! :hello: 
Contenus similaires
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS