[RESOLU] editer fichier texte en php via html

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] editer fichier texte en php via html

Re: editer fichier texte en php via html

par allan71 » 17 févr. 2024, 06:59

:D un grand merci a Spols , je vais m’arrêter la , j'ai mon tableau qui fonctionne avec la fonction delete et add , cela suffit en fin de compte a faire fonctionner l'ajout de piste de course et de les supprimer , j'ai crée un fichier "bash" sur le serveur pour actualiser le fichier texte XML a celui du jeu au cas du changement de celui-ci.
je vais mettre ce post en resolu donc.. merci encore :D

Re: editer fichier texte en php via html

par Spols » 14 févr. 2024, 16:03

J'ai regardé rapidement, il semble que tu puisse agir sur ->nodeValue pour modifier la valeur

Par contre si je comprends bien, tu cherche à faire un formulaire de modification, si tu modifie la valeur dans ton champs, il te faut savoir quelle est la valeur à modifier (dans un champs caché par exemple.

Une autre piste est de ne permettre que l'addition et la suppression, en cas de volonté de modification, il faut supprimer l'ancienne entrée et ajouter la nouvelle, c'est plus simple.

Re: editer fichier texte en php via html

par allan71 » 14 févr. 2024, 07:09

J'ai passer le weekend a chercher sur plein de site ou passer en revue le site php , s'est assez rare qu'on travail sur les valeurs entre 2 balises sans attribut ,
Si vous connaissez un site qui explique ce que je cherche a faire , modifier la valeur entre 2 balises?
C'est comme si tu lisais un livre jusqu'à tomber sur le mot "comme" et puis tu ferme ton livre, tu n'a pas modifié le livre, ton break ne suffit pas.
je ne vois pas comment faire? pourrais tu m'expliquer? #-o

Re: editer fichier texte en php via html

par allan71 » 13 févr. 2024, 07:14

Merci beaucoup Spols de m'aider dans mon apprentissage PHP , bien qu'au départ c'était juste pour rentre service a mon gendre.
j'explique un peu en détails , le script me servait à la base pour ajouter des adresses de radio web à un player musique que j'avais depuis quelque année qui fonctionne encore aujourd'hui , j'ai un gendre qui joue a un jeu où on peu ajouter des adresses de différent circuit de voitures , j'herberge pour lui sur mon serveur la partie multijoureur , jusqu’à présent je rentrais les adresses avec un éditeur de texte , me suis dit que je pourrait adapter le script pour simplifier le tout , il aurait plus besoin de moi pour modifier le fichier "message.txt" qui été à la base "playlist.xml". Ceci dit cela fonctionne bien avec *.txt également.

Bon revenons a nos moutons :D
S'est bien ce que j'ai conclue a peu près , $file n'est pas assez définit , ou comme tu dit le code s'arrête entre les balises <file> et ne désigne rien , ou mais comment et quoi?
La première parti:

Code : Tout sélectionner

if(isset($_POST['submitSave'])){ foreach($playlist->xpath("//map/file") as $file){ [color=#FF0000]if($file == $_POST["value"])[/color]{ break;
if($file == $_POST["value"]) cela compare donc :
$file qui est <playlist><map><file>?</file></map></playlist>
à $_POST["value"] qui est la value dans input "test4"
<input type="text" name="value" value="<?php echo $file->__toString(); ?>"></td>
et "test4" est bien affiche dans ma case :D
donc s'est bien le problème -> <file>?</file> #-o
je pensais que if($file->__toString()==$_GET['value']) , GET recupère le "test4" dans l'URL le place dans le INPUT et l'assigne a $file,
que $file sera = a "test4
bon je vais réfléchir a tout ça , mais si tu peux me corriger sur ma réflexion si elle n'est pas juste? :oops:

Re: editer fichier texte en php via html

par Spols » 12 févr. 2024, 11:06

La majeure diffèrence entre = et == :
= est une assignation, $a = $b assigne la valeur de $b à $a
== est une comparaison $a == $b retourne true ou false selon la comparaison (après transtypage).

donc avoir un simple égal dans un if est toujours une erreur, car l'assignation va se faire et retournera true ce qui n'est jamais le comportement voulu.

Dans le code que tu nous montre, tu parcours les balises file et tu t'arrête lorsque tu tombe sur la "bonne" mais tu ne fais rien d'autre.
C'est comme si tu lisais un livre juqu'à tomber sur le mot "comme" et puis tu ferme ton livre, tu n'a pas modifié le livre, ton break ne suffit pas.

Re: editer fichier texte en php via html

par allan71 » 10 févr. 2024, 23:21

Quelle est la différence entre = et == ?
voila ce que j'avais trouver:
$a == $b TRUE si $a est égal à $b après le transtypage.
et
$a = $b que $a est égale à $b
j'avoue que je m'y perd un peu :oops:
$file est équivalent à $file->__toString(), son utilisation est plus explicit et donc plus simple à comprendre
j'avais bien compris cela mais comme mon code ne fonctionnait pas j'ai tester ce qui fonctionnait au départ dans l'autre page php #-o
donc si je corrige ça donne cela :

Code : Tout sélectionner

<?php require 'simplexml.class.php'; $playlist = simplexml_load_file('tracklist.txt'); if(isset($_POST['submitSave'])){ foreach($playlist->xpath("//map/file") as $file){ if($file == $_POST["value"]){ break; } } foreach($playlist->xpath("//map/file") as $file){ if($file = $_POST["value"]){ break; } } file_put_contents('tracklist.txt', $playlist->asXML()); header('location: message.php'); } foreach($playlist->xpath("//map/file") as $file) { if($file==$_GET["value"]){ break; } } ?>
mais ce la fonctionne pas , mais si je sélectionne la ligne test2 dans mon message.php ,j'ai bien test2 dans la case input dans mon edit.php donc ceci est ok:

Code : Tout sélectionner

foreach($playlist->xpath("//map/file") as $file) { if($file==$_GET["value"]){ break; } }

La problématique je pense que $file n'est pas bien définit , et entre quel balises modifier le texte?
avec un $file->addAttribute s'est plus simple cela donnerait :

Code : Tout sélectionner

<?php require 'simplexml.class.php'; $playlist = simplexml_load_file('ListMP3.xml'); if(isset($_POST['submitSave'])){ foreach ($playlist->file as $file){ if($file['desc']==$_POST['desc']){ break; } } foreach ($playlist->file as $file){ if($file['desc'] =$_POST['desc']){ break; } } file_put_contents('ListMP3.xml', $playlist->asXML()); header('location: playlist.php'); } foreach ($playlist->file as $file) { if($file['desc']==$_GET['desc']){ $desc = $file['desc']; break; } } ?
cela fonctionne #-o

si je lui mets une valeur null : if($file[0]=$_POST['value']) cela change la valeur entre la 1er balise <file> n'importe quel ligne je séléctionne.
Quel casse tête #-o

Re: editer fichier texte en php via html

par Spols » 10 févr. 2024, 20:23

Quelle est la différence entre = et == ?
$file est équivalent à $file->__toString(), son utilisation est plus explicit et donc plus simple à comprendre

Re: editer fichier texte en php via html

par allan71 » 10 févr. 2024, 19:01

Maintenant que tu as compris.
:D lol pas si sûr encore :non:
je suis sur le casse tête de ma page edit.php j'ai un problème a trouver l'erreur , ou plutôt ce qui ne va pas:

Code : Tout sélectionner

<?php require 'simplexml.class.php'; $playlist = simplexml_load_file('tracklist.txt'); if(isset($_POST['submitSave'])){ foreach($playlist->xpath("//map/file") as $file){ if($file->__toString()==$_POST["value"]){ break; } } foreach($playlist->xpath("//map/file") as $file){ if($file =$_POST["value"]){ break; } } file_put_contents('tracklist.txt', $playlist->asXML()); header('location: message.php'); } foreach($playlist->xpath("//map/file") as $file) { if($file->__toString()==$_GET["value"]){ $value = $file->__toString(); break; } } ?> <form method="post"> <center> <table cellpadding="2" cellspacing="2"> <tr> <td>Adresse</td> <td><input type="text" name="value" value="<?php echo $file->__toString(); ?>"></td> </tr> <tr> <td>&nbsp;</td> <td> <input type="submit" name="submitSave" value="Save" /> </tr> </table> </form>
le problème est ici:

Code : Tout sélectionner

foreach($playlist->xpath("//map/file") as $file){ if($file =$_POST["value"]){ break; } }
ce ci ne fonctionne pas ma valeur si je change if($file =$_POST["value"]) par if($file->__toString()==$_POST["value"]) ceci bug le script #-o

Re: editer fichier texte en php via html

par Spols » 06 févr. 2024, 23:40

Maintenant que tu as compris. Je peux te dire que la methode __toString() est une methode "magique " qui est appelée quand tu fais reference a ton objet avec un transtypage. Donc
if($file==$value) marche aussi

Re: editer fichier texte en php via html

par allan71 » 06 févr. 2024, 22:10

Donc tu arrive comme conclusion que $file->__toString() marche et $file['value'] ne marche pas alors pourquoi l'utilise tu dans ton code php ?
Alors la :D merci beaucoup !!! a première lecture ce matin , cela m'a fait sérieusement réfléchir , je me suis déja demander le pourquoi du comment, j'en es passer du temps sur ce script , et lue pratiquement tout les tutoriels php , pour apprendre d'avantage..
Bref j'ai donc réflechis comment $file->__toString() fonctionne,
donc la ligne:

Code : Tout sélectionner

$value = $_GET['value'];
est juste $_GET récupère la valeur de 'value' -> dans URL -> ?action=delete&value=test1
donc fallait mettre

Code : Tout sélectionner

if($file->__toString()==$value)
pour que $file->__toString() qui est dans mon fichier texte ...<url>test1</url>...
et comparer à la 'value' dans URL ->test1
Cela supprime bien la bonne ligne :D
Merci beaucoup Spols =D> , me reste a faire fonctionner la page "edit.php"

Re: editer fichier texte en php via html

par Spols » 05 févr. 2024, 11:51

Donc tu arrive comme conclusion que $file->__toString() marche et $file['value'] ne marche pas alors pourquoi l'utilise tu dans ton code php ?

Re: editer fichier texte en php via html

par allan71 » 03 févr. 2024, 18:16

Pourquoi utilise tu une fois $file['value'] et ailleur $file->__toString() ?
Est ce que cela donne la même chose ?
non pas du tout , si je remplace :

Code : Tout sélectionner

<a href="message.php?action=delete&value=<?php echo $file->__toString(); ?>" onclick="return confirm('vous etes sur?')">Delete</td>
par

Code : Tout sélectionner

<a href="message.php?action=delete&value=<?php echo $file['value']; ?>" onclick="return confirm('vous etes sur?')">Delete</td>
la colonne <td> reste vide , mais si je mets "$file->__toString()" la colonne <td> affiche la valeur <file>test2</file>
malheureusement je ne trouve pas de solution :oops:

Re: editer fichier texte en php via html

par Spols » 27 janv. 2024, 20:13

Pourquoi utilise tu une fois $file['value'] et ailleur $file->__toString() ?
Est ce que cela donne la même chose ?

Re: editer fichier texte en php via html

par allan71 » 27 janv. 2024, 18:47

bon j'ai pas mal appris sur PHP , j'ai tout fais fonctionner à part la suppression des balises et la value crée par mon fichier add.php
La fonction delete fonctionne mais me supprime pas la ligne sélectionner , elle supprime la liste de haut en bas #-o
la je sèche :roll:
J'ai modifier les balises et valeur par = <playlist><map><file>ici le texte</playlist></map></file>

Code : Tout sélectionner

<?php if(isset($_GET['action'])){ $playlist = simplexml_load_file('tracklist.txt'); $value = $_GET['value']; $index = 0; $i = 0; foreach($playlist->xpath("//file") as $file){ if($file['value']==$value){ $index = $i; break; } $i++; } unset($playlist->map[$index]); file_put_contents('tracklist.txt', $playlist->asXML()); } $playlist = simplexml_load_file('tracklist.txt'); echo 'Liste nombre: '.count($playlist->map); echo '<br>Listing Information'; ?> <br> <center><a href="add.php">Add new adresse</a> <br> <br> <center><table cellpadding="3" cellspacing="3" border="2"> <tr> <th>Adresse</th> <th>Option</th> </tr> <?php foreach($playlist->xpath("//file") as $file){ ?> <tr> <td><?php echo $file->__toString(); ?></td> <td align="center"> <a href="edit.php?value=<?php echo $file->__toString(); ?>">Edit</a> <a href="message.php?action=delete&value=<?php echo $file->__toString(); ?>" onclick="return confirm('vous etes sur?')">Delete</td> </tr> <?php }
le code source de la page m'affiche pourtant la bonne valeur?

Code : Tout sélectionner

</tr> <tr> <td>test1</td> <td align="center"> <a href="edit.php?value=test1">Edit</a> <a href="message.php?action=delete&value=test1" onclick="return confirm('vous etes sur?')">Delete</td> </tr>

Re: editer fichier texte en php via html

par allan71 » 20 janv. 2024, 09:50

oui ,pas du tout simple mon affaire , j'ai lu pas mal ses dernier temps sur le PHP j'avance doucement :D
Maintenant j'optiens :
  • <item>
    <url>test1</url>
    <url>test2</url>
    </item>
J'ai supprimer la ligne:

Code : Tout sélectionner

$url = $value->addChild('item');
est-ce possible sans trop de changement de mon code d’inséré le tout entre les 2 balises <list>?
pour avoir:
  • <list>
    <item>
    <url>test1</url>
    <url>test2</url>
    </item>
    </list>