Formulaire PHP - PHP - Programmation
Marsh Posté le 15-01-2015 à 14:37:14
Tu pouvais conserver l'autre topic : c'était pas la peine d'en faire un nouveau
Marsh Posté le 15-01-2015 à 14:43:51
Je suis Désoler vu que c'est une autre question je me suis dis que je pouvais faire autre topic
tu n'aurais pas une petite suggestion pour moi rufo ?
Marsh Posté le 15-01-2015 à 15:53:40
Si, te mettre sérieusement à apprendre la programmation (ici, php + html).
Tu commences par mettre en oeuvre la structure de données que je t'ai proposée (ou une autre structure qui te conviendra plus, c'est toi qui voit), tu parses ton fichier comme je te l'ai indiqué dans l'autre topic et tu rempli la structure de données.
Ensuite, tu affiches le contenu de la structure de données comme tu le souhaites :
1) dans le cas d'un premier affichage, dans un seul textarea
2) dans un 2ème affichage suite à modif, chaque ligne dans un input de type "text" (ça sera plus adapté qu'un textarea ) avec un bouton "modifier" (un input type "submit" avec une value qui contiendra l'ID de l'info dans la structure de données + le nom du champ (ip, user...).
Ex : l'attribut "name" de ton input type submit peut être un truc du genre "ip_0", "user_0"... Ca désignera le premier ip et le premier user de ton fichier. "ip_1", "user_1", les 2ème ip et user du fichier. Le "_", c'est pour pourvoir facilement extraire l'ID et le nom du champ via un explode()
Côté php, tu traiteras le formulaire : en fonction de l'ID et du nom du champ concerné, tu iras modifier au bon endroit dans la structure de données. Ensuite, plus qu'à enregistrer le contenu de la structure dans le fichier et procéder éventuellement à un nouvel affichage dans ta page web.
Marsh Posté le 15-01-2015 à 16:07:08
apprendre c'est ce que je suis entraine de faire comme je l'ai indiquer dans l'autre topic je suis NOVICE DEBUTANT donc demander de l'aide fait partie de l'apprentissage surtout en DEV
Maintenant pour t'es explications je te remercie vraiment mais ceci ne m'aide vraiment pas vu mon niveau
Marsh Posté le 15-01-2015 à 16:24:44
Je pense que pour l'instant, ton principal pb n'est pas tellement lié au langage de dév, mais plutôt à la conception de l'algorithme (les différentes actions/traitement à effectuer, dans quel ordre et de quelle manière), donc à un pb de logique (ie de raisonnement).
Dans le précédent topic, je t'ai donné la structure de données à utiliser pour stocker les données de ton fichier dans une variable de type tableau associatif (cf donc de php) :
Code :
|
Via file() tu charge ton fichier dans un tableau.
Via une boucle foreach(), tu parses chaque ligne de ton fichier pour stocker son contenu dans la structure de données. Je t'ai indiqué que preg_match() (pour les expressions régulières) et explode() t'aideraient pour le parsing.
Dans mon post juste au-dessus, je 'ai expliqué dans les grandes lignes comment faire un formulaire pour avoir une ligne par champ input type text et comment nommer tes boutons input type submit puis comment, côté php traiter ce que contenant le formulaire.
Je t'ai donc laissé pas mal de piste à suivre, Google est ton ami pour en apprendre plus sur tout les termes clés que je t'ai donnés (fonctions php, types de input en html, regexp...). A toi de chercher.
Au passage, avant de coder en php, tu peux te faire ton algo en pseudo-code sur papier Ca te permettra d'y voir plus clair, d'identifier les pbs et comment les résoudre...
Marsh Posté le 15-01-2015 à 16:28:10
naniccino a écrit : |
Tu as environ 25 ans et tu dis être en stage, apparemment un stage d'informatique vue les questions que tu poses. J'imagine que ton stage est fait dans le cadre de ta formation. Du coup, ta formation a donc dû te donner les connaissances (au moins de base) pour te permettre de réaliser ton stage, non ?
Marsh Posté le 15-01-2015 à 16:47:00
comme tu la dit les bases et l'école ou je suis survole vraiment les languages car on touche a tous du coup pas le temps de s'eterniser et oui c'est bien un stage d'informatique pas de boucher .
Marsh Posté le 15-01-2015 à 16:48:41
Code :
|
voila ou j'en suis j'ai résolue mes problème de textarea le seul souci est que quand je lance le scripte et que j'effectue mes changement ca m'indique que les changements ont été fait mais dans le fichier .txt aucune modif n'a été faite .
Marsh Posté le 15-01-2015 à 17:13:50
Comme je te l'ai dit dans l'autre topic, on utilise pas un textarea pour afficher une seule ligne, mais un input type text.
Pour la lecture du fichier : $Lignes = file('conf.txt');
Pour le parsing :
Code :
|
Pour l'affichage la première fois :
Code :
|
Marsh Posté le 16-01-2015 à 10:33:48
Desoler du retard alors il y'a un petit truc que je comprend pas dans ton switch $StructureData[$Cpt]["ip"] = ... --> les 3 petits point c'est pour dire que je doit mettre une instruction ou entrer moi meme les ip ?
Marsh Posté le 16-01-2015 à 10:42:34
derrière les ..., c'est là que tu mets la fonction de parsing des adresses IP. Un truc du genre :
On suppose que ta ligne "ip : 91.121.58.96 91.121.153.42 91.121.153.42" est stockée dans la variable $LigneCourante.
$StructureData[$Cpt]["ip"] = explode(" ", str_replace(array("ip : " ), array("" ), $LigneCourante));
Voilà le genre de parsing.
Marsh Posté le 16-01-2015 à 11:02:44
Code :
|
voila le code je te rassure il marche mais cela ne m'arrange vraiment pas car au final je retombe sur le meme probleme tous mon fichier txt se retrouve dans un grand textarea comme celui que j'avais avec un bouton modifier et c'est pas le resultat que je veux obtenir je veux je souhaite avoir chaque ligne de mon fichier text dans un champ a modifier pas toutes dans le meme et que ca m'affiche que les information apres les : c'est a dire par exemple que les adresse IP sans le IP:
je te colle mon fichier txt si tu veux faire un petit test voir ce que ca donne
ip : 91.121.58.96 91.121.153.42 91.121.153.42
user : USE
password : PWD
src_path : /var/www/
dst_path : /tmp/data/
packet_size : 30000
Marsh Posté le 16-01-2015 à 11:06:42
Le bouton modifier ne marche pas aussi aucune modification n'est prise en compte le fichier reste le meme
Marsh Posté le 16-01-2015 à 13:21:44
naniccino a écrit :
... |
Est-ce que $f contient un nom de fichier ?
Il semble que non.
Edit : Pour infos, il est préférable de remplacer
fopen("$f","r" ); |
par
fopen("toto.txt", "r" ); |
ou par
$variable_nom_du_fichier = "toto.txt"; |
En effet, les guillemets sont nécessaires autour d'un nom literral, mais il n'est pas recommandé de les mettre autour d'une variable
(par ailleurs, je mets un espace après une virgule comme on le fait en français, et j'utilise un nom de variable qui a une signification plus pertinente qu'une seule lettre pour que la lecture du programme en soit facilitée).
Marsh Posté le 16-01-2015 à 14:09:54
Code :
|
j'ai re modifier encore une fois voila mon code il fait vraiment tous se que je veux a par modifier c'est le seul soucis quand je clique sur modifier j'ai meme le message comme quoi c'est effectuer mais le fichier reste le meme aucune modif n'est fait
Marsh Posté le 16-01-2015 à 14:23:03
naniccino a écrit :
|
Sérieusement, au lieu de recopier du code bêtement, cherches à le comprendre. Pourquoi crois-tu que j'ai fais un case si l'algo de parsing est le même. A part pour "ip", le explode() est inutile pour les autres champs puisque d'après ton ex, ces champs ne peux avoir qu'une seule valeur
Par ailleurs, le code fourni le permet pas la modification de ton fichier : je ne vais pas tout te faire. Une fois que ta structure de données contient tout ton fichier, y'a plus qu'à l'afficher comme tu le veux. Je t'ai dit de laisser tomber les textarea au profit des input type text. Je t'ai même expliqué comment nommer tes input type submit et comment traiter le formulaire.
Marsh Posté le 16-01-2015 à 14:29:08
naniccino a écrit :
|
Franchement, tu comprends ce que tu fais ? Tu génères pleins de textarea qui ne sont même pas dans ton form. Ils ne risquent donc pas d'être posté quand tu vas cliquer sur le bouton
Et laisse tomber fopen/fwrite/fclose au profit de file_put_contents() plus simple.
Il me semble te l'avoir dit : écris ton algo sur papier en pseudo-code car manifestement, l'enchaînement des actions à effectuer n'est pas clair dans ta tête. De même, tu ne sembles pas connaître le HTML. Donc, en résumé :
- tu écris ton programme en pseudo-code, quitte à faire plusieurs scripts php qui s'appellent les uns, les autres, au lieu d'un seul. Tu t'y retrouveras peut-être mieux
- tu apprends ou révises les bases du html
- tu apprends ou révises les bases de PHP, notamment le traitement des formulaires et la gestion des fichiers.
- tu traduis ton pseudo-code en php et html.
Tu verras, avec de la méthode te de la logique (+ qq connaissances en dév), ça ira beaucoup mieux et plus vite.
Marsh Posté le 16-01-2015 à 14:37:51
Sérieusement comme tu dit rien n'a été recopier bêtement tu veux absolument que j'utilise ta méthode alors que la mienne me conviens vraiment je parse que des fichier de 6 lignes alors mon textarea fait l'affaire pour ce que j'ai besoin de faire avec alors pk mettre un switch plus 6 case alors que mon fichier fais ca en une seul boucle la premiere il affiche et me met tous dans les textarea et ca comme je le souhaite et d'une manière tres propre et il enlève meme le nom des variables, je ne t'ai pas demander de faire a ma place mais juste un conseil car la modification ne marche pas une aide sur mon code qui est très bien pas besoin de mettre un switch d'utiliser des expression reguliere comme tu disais etc pour un fichier de config qui fera 6 lignes dans tous les cas alors au lieu de penser que je fais du copier coller betement faut se concentrer sur ma question au lieu de me faire changer de methode de maniere car ceci n'est pas a ton gout alors Serieusement au lieu d'imposer ta methode de critiquer pcq sois disant je suis un novice je me suis re orienter en informatique tous cela est nouveau pour moi, j'ai juste besoin d'une aide sur la mienne qui est complete et qui na aucun soucis a par la modification.
Marsh Posté le 16-01-2015 à 14:42:55
les textarea sont generer dans un but précis si tu test mon script avec mon fichier txt tu comprendra a quoi servent mes texte area c'est pas la pour faire beau mais pour que chaque ligne soit dans son textarea et se modifie seul ca me sert a rien d'avoir tous mon fichier dans un seul textarea c'est pas mon but
Marsh Posté le 16-01-2015 à 15:24:21
Un textarea, c'est pour un bloc de texte, les inputs de type text, pour une seule ligne. Si un utilisateur met un retour chariot dans ton textarea, tu vas devoir le traiter, sinon, tu vas mettre en vrac le formalisme de ton fichier.
Et encore une fois, tes textarea en dehors de ta balise form, ça risque pas de marcher
Je ne cherches pas à t'imposer ma méthode, je t'en donne une, tu en fais ce que tu veux. Mais quand je vois ton code, je me dis que c'est justement de méthode de conception que tu manques, de raisonnement, de logique.
Si tu n'as pas recopier mon code sans chercher à le comprendre, donnes moi une justification pour avoir garder les explode() sur les champs autres que "ip" ?
Par contre, je n'avais pas compris que ton fichier ne contenant que ton exemple donné; je pensais que c'était sa structure et que donc, on retrouvait n fois ce "pattern" dans ton fichier. Du coup, dans ma structure, il suffit juste de retirer l'indice qui allait de 0 à n et juste conserver les champs "ip" et autres... mais tu peux aussi la conserver telle quelle, l'indice restera toujours à 0, c'est tout.
Marsh Posté le 16-01-2015 à 15:56:47
Citation : $fichier =fopen("conf.txt", "r" ); |
Ca ne peux pas marcher.
"r" signifie "read", donc ouverture pour une lecture seulement.
Marsh Posté le 15-01-2015 à 10:35:52
Me re voila avec un nouveau souci
Tout dabord je possède un scripte qui me permet d'ouvrir un fichier text dans un formulaire php et de le modifier a ma guise voici le scripte
le fichier text que je doit modifier est structurer de cette façon:
ip : 91.121.58.96 91.121.153.42 91.121.153.42
user : User
password : PASSWORD
src_path : /var/www/
dst_path : /tmp/data/
packet_size : 30000
Quand le scripte s'execute j'ai tout le contenu de mon fichier dans un grand TEXTAREA et un bouton modifier, j'aimerais que apres l'execution du scripte chaque ligne de mon fichier text se retrouve dans un TEXAREA seul avec un bouton modifier
Exemple:
IP: (les differentes adresses)..... MODIFIER
User:...................... MODIFIER
Password:............... MODIFIER
Merci d'avance pour votre aide .