Page 1 sur 1

Envoyer une variable depuis la base de donnée

Posté : 28 sept. 2019, 17:10
par xnooztv
Bonjour,

Tout d'abord, le code que je fais est un script de vote en PHP. Il doit envoyer une commande à un serveur Minecraft pour donner une récompense.

J'ai fais ceci pour l'envoi de la récompense:
$rcon->sendCommand("".$donnee['commmande_serveur']."");
Elle fonctionne.

commmande_serveur à comme valeure (dans la base de donnée):
give ".$pseudo." 322:1 1
Mais lors de l'envoi de la commande, le serveur reçois bien la commande, mais en brut. C'est à dire cela:
give ".$pseudo." 322:1 1
Donc, le pseudo n'est pas envoyer depuis la base de donnée, et j'aimerais modifier $pseudo par le pseudo du joueur.

La variable est bien créer, et est fonctionnel après plusieurs essais.
$pseudo = htmlentities($_POST['pseudo']);
Enfaite je ne sais pas comment m'y prendre, sachant que la variable est directement dans la base de donnée:
Image
Je ne sais pas si ce que j'ai essayé est bête, mais j'ai fait un eval et un str_replace depuis la base de donnée.. xD
J'ai juste l'impression que $pseudo n'est pas exécuté depuis la base de donnée.

Est-ce possible ? Si non, comment faire svp?

Re: Envoyer une variable depuis la base de donnée

Posté : 28 sept. 2019, 18:19
par xnooztv
Résolu avec:
$rcon->sendCommand(str_replace('$pseudo', $pseudo , $donnee['commmande_serveur']));

Re: Envoyer une variable depuis la base de donnée

Posté : 28 sept. 2019, 18:53
par @rthur
Certes ça résouds le problème mais c'est probablement pas très optimisé.

Il faut que tu voies comment tu crées la variable $donnee['commmande_serveur']
Pour qu'un nom de variable ne soit pas interprété par PHP, il faut le mettre entre apostrophe/guillemets simples dans une chaine de caractères.
Et je pense que c'est ce que tu as fait et ce qui est à l'origine de ton problème.
$pseudo='John';
$var = "Bonjour $pseudo, ça va ?"; // Va contenir Bonjour John, ça va ?
$var2 = 'Bonjour $pseudo, ça va ?'; // Va contenir Bonjour $pseudo, ça va ?

La façon la plus propre de faire pour éviter ce genre de cas de figure est de faire des vrais concaténation de variables :
$var = 'Bonjour '.$pseudo.', ça va ?'; // Va contenir Bonjour John, ça va ?