[RESOLU] Resource id #4

Eléphanteau du PHP | 10 Messages

02 juin 2019, 20:52

J'ai un peu cherché, mais ce que j 'ai trouvé ne porte que sur l'utilisation de MySQL, or je voudrait juste gérer des documents textes.

<?php
$sc = (string)$_POST["supp"];
$re = (string)$_POST["rep"];
$file = fopen("players.txt", "w");
$result = str_replace($sc,$re,$file);
fwrite($file, $result);
fclose($file);
?>

Ce code m'écrit dans le document texte : Resource id #4 et je ne comprend pas pourquoi, je ne fait pas appel a la ressource mysql, et je ne travaille qu avec des chaines de caractères. Mais je débute juste donc j'ai peu être fait une grossière erreur mais je ne la voit pas.

Avatar du membre
Mammouth du PHP | 1609 Messages

02 juin 2019, 21:05

Salut, si tu regardes la doc de fopen ici https://www.php.net/manual/fr/function.fopen.php, tu verras dans la partie "Valeurs de retour" : "Retourne une ressource représentant le pointeur de fichier, ou FALSE si une erreur survient.". Il s'agit bien d'une ressource qui, lorsque tu la traites comme une chaine, affiche quelque chose du style "Resource id #n". Rien de plus normal au résultat que tu obtiens.

Je pense que tu cherches en fait à récupérer le contenu du fichier, le modifier avec $sr et $re et remettre le contenu modifié dedans. Si c'est bien le cas je te conseillerais d'utiliser pour faire simple file_get_contents et file_put_contents.
Et petite remarque les valeurs présentes dans $_POST seront je pense toujours des chaines quoique tu écrives dans les input, et même s'il s’agissait de valeurs numériques ça ne poserait à priori pas de problème pour le str_replace, donc pas besoin de faire un cast en string. ;)

file_get_contents : https://www.php.net/manual/fr/function. ... ntents.php
file_put_contents : https://www.php.net/manual/fr/function. ... ntents.php
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 10 Messages

03 juin 2019, 17:20

Merci de t'être penché sur mon code, car cela m'a aidé et a résolu le problème initial, donc merci beaucoup, mais est apparu une autre erreur que je ne comprend pas.
Image
<?php
$sc = (string)$_POST["supp"];
$re = (string)$_POST["rep"];
$text=file_get_contents ("players.txt")
$result=str_replace($sc,$re,$text)
file_put_contents ("players.txt",$result)
?>
voila donc le code modifié qui grâce à ton aide a réglé le problème.
et voici comment j'y fait appel :
$.ajax({url : "remove.php",type : "POST",data : { supp: "["+name+"]"+"["+pgx+"]["+pgy+"]", rep:"["+name+"]"+"["+gy+"]["+gx+"]"},dataType: "text"});

Avatar du membre
Mammouth du PHP | 1609 Messages

03 juin 2019, 17:34

Tu as une erreur 500 c'est souvent lorsque tu as une erreur fatal dans ton script mais ça peut provenir d'autre chose.
Donc tu peux déplier la requête dans tes outils de développeur dans le navigateur (t'es sur chrome ?) et tenter de regarder l'onglet Réponse voir si tu as autre chose qu'une page blanche (peut être un message d'erreur).
Sinon il faudrait que tu regardes dans le log d'erreurs de ton serveur web.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 10 Messages

03 juin 2019, 18:29

(Merci d'encore bien vouloir m'aider) , donc effectivement je suis bien sur chrome, mais qu'est ce que tu entend par "l'onglet réponse" ?

Avatar du membre
Mammouth du PHP | 1609 Messages

03 juin 2019, 18:36

Le screenshot que tu as fait, tu peux déplier la ligne en cliquant sur le triangle à gauche et tu dois avoir je pense un onglet réponse.

EDIT : je viens de vérifier et pas d'onglet réponse. Tu peux quand même cliquer droit sur le lien et faire Ouvrir dans un nouvel onglet. Tu verras si c'est une page blanche où s'il y a un message d'erreur.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 10 Messages

03 juin 2019, 18:40

Image
Et voici, c'est bien ça ?

Avatar du membre
Mammouth du PHP | 1609 Messages

03 juin 2019, 18:42

J'ai édité mon post précédent. Oui c'est ça et il n'y a pas d'onglet Réponse, donc tu peux cliquer droit sur le lien et faire Open in new tab. Tu verras si c'est une page blanche où s'il y a un message d'erreur.
Si page blanche regarde dans le log d'erreur du serveur web.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 10 Messages

03 juin 2019, 18:51

"Cette page ne fonctionne pas Impossible de traiter cette demande via ajslearner.zapto.org à l'heure actuelle.
HTTP ERROR 500"
donc je vais me documenter pour avoir le log

Avatar du membre
Mammouth du PHP | 1609 Messages

03 juin 2019, 19:04

Tu peux aussi tenter de mettre ça au début du fichier remove.php :
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Si le ini_set est autorisé le message d'erreur devrait s'afficher.
Développeur web depuis + de 20 ans

Mammouth du PHP | 2703 Messages

03 juin 2019, 19:13

l'erreur 500 vient probablement de la fin de ces lignes :
$text=file_get_contents ("players.txt")
$result=str_replace($sc,$re,$text)
file_put_contents ("players.txt",$result)
vu qu'il manque un micro détail.

Eléphanteau du PHP | 10 Messages

03 juin 2019, 19:18

or 1 :
Il manquerais quoi ?
Modifié en dernier par Brambling le 03 juin 2019, 19:19, modifié 1 fois.

Eléphanteau du PHP | 10 Messages

03 juin 2019, 19:19

Saian :
Je verrais le message où ?
NB: pour récupérer le log du serveur, comme je ne peux pas installer de programmes sur mon pc pour l'instant je ne peux pas le mettre en place, mais ce soir je vais récupérer une session admin pour le faire.

Avatar du membre
Mammouth du PHP | 1609 Messages

03 juin 2019, 19:20

En effet, bien vu or 1 j'ai pas vraiment fait gaffe comme Brambling disait que c'était résolu. ^^
Et bien tu devrais voir une magnifique syntaxe error. Tu verras le message d'erreur sur la page remove.php, là où elle se produit.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 10 Messages

03 juin 2019, 19:26

Image
je n'ai que ça comme erreur