JeuWeb - Crée ton jeu par navigateur
Problème de requête SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème de requête SQL (/showthread.php?tid=7391)



Problème de requête SQL - Philippe de Révolution - 03-06-2015

Bonjour,

j'ai un problème avec ce code:
Code PHP :
<?php
       $totalargent
= "utf8_encode($argent)" - "$_POST[transfert]"
$totalbanque = "utf8_encode($banque)" + "$_POST[transfert]"
$pseudo = $_SESSION['pseudo'];
sql = 'UPDATE LOGIN SET argent="$totalargent" banque="$totalanque" WHERE pseudo="$pseudo"';
echo
" Vous avez transféré vers votre compte en banque n°<?php echo utf8_encode($id);?>: $_POST['transfert'] "
?>

Quand j'exécute ce script par Include, il m'affiche ça:
Parse error: syntax error, unexpected T_VARIABLE in /home/u816654343/public_html/espace/php/banque.php on line 3

Est que quelqu'un voudrait bien m'aider?

Merci,
Philippe de Révolutions.


RE: Problème de requête SQL - Xenos - 03-06-2015

Parce qu'il manque les points-virgules.

Utilise un vrai IDE genre NetBeans. Cela te coutera en gros une journée pour l'installer et t'y habituer, mais cela évitera ce genre de question-bateau puisque NetBeans te dira directement, dans le code, où se trouvent les erreurs syntaxiques sans devoir lancer la page web.

Après, je ne comprends pas du tout la logique de ton code, mais c'est autre chose. Un tour sur les tuto d'OpenClassroom te seras surement utile Wink


RE: Problème de requête SQL - Ter Rowan - 04-06-2015

et tant qu'à faire, il manque aussi les virgules dans la requête

je rejoins Xenos, il te faut progresser sur les fondamentaux des langages.
Et je réfutes Xenos (mais c'est une position morale) y a pas besoin d'un ide pour éviter ce genre d'erreur, faut juste de la rigueur. C'est un peu le système de tout faire confiance au correcteur orthographique, on sait plus écrire maintenant


RE: Problème de requête SQL - rachids - 04-06-2015

Et ne pas oublier le « $ » avant le « sql » ligne 4. Wink


RE: Problème de requête SQL - Xenos - 04-06-2015

Je ne résiste pas à l'envie d'en faire la synthèse, car c'est un bon cas d'école Smile

• ; en fin de ligne
• , entre les colonnes d'une requête SQL
• $ avant un nom de variable PHP
• Injection _POST
• Injection SQL
• Respecter les indentations
• Dans une chaine à "guillemets doubles", une variable est remplacée par sa valeur, pas dans une chaine à 'guillemets simples'
• Usuellement, les commandes SQL dans une requête sont en majuscules, les noms de table, colonnes, db etc sont en minuscules
• Chaque table SQL a un et un seul rôle précis, et un nom explicite (la table LOGIN contient les transferts d'argent?)
• Un IDE t'aurait souligné que $totalanque n'a pas été définie (mais $totalbanque oui); un IDE ça aide, et oui, c'est comme un correcteur orthographique ou un test unitaire: quand il dit que c'est faux, c'est faux, mais s'il ne dit pas que c'est faux, c'est pas forcément juste Wink
• <?php pour débuter du code php, ?> pour le fermer; on ne peut pas imbriquer des <?php
• utf8_encode() est inutile pour des nombres, ou pour toute autre chaine alphanumérique (c'est inutile pour les 128 premiers caractères ASCII)
• Il faut échapper les sorties HTML via htmlspecialchars(); à la limite, on peut s'en passer si on est certain du typage des variables echoées

Code PHP :
<?php
if (!isset($_POST['transfert']))
return;
// throw new \Exception("Quantité à transférer manquante.");

$transfert = (int)$_POST['transfert'];
$totalargent = (int)$argent - $transfert;
$totalbanque = (int)$banque + $transfert;

$pseudo = $_SESSION['pseudo']; // Considère que la session est bien construite, et que $_SESSION['pseudo'] existe
// Préférer les requêtes préparées, mais on se contentera d'une requête échappée
$sql = "UPDATE compte_joueur SET argent=" . $totalargent . ", banque=" . $totalbanque . " WHERE pseudo='" . mysqli_real_escape_string($pseudo) . "'";
echo
" Vous avez transféré vers votre compte en banque n°" . htmlspecialchars($id) . " " . $transfert;
?>



RE: Problème de requête SQL - Philippe de Révolution - 04-06-2015

Merci pour vos réponses Xenos, Salty & Ter Rowan! Je vais voir pour l'IDE et sur les cours d'OpenClassroom!

Encore merci pour tout :* !