CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Envoie dédicasse

reyofbastards
reyofbastards
Niveau 4
04 octobre 2016 à 19:07:49

Bonjour,

J'ai fait un système d'envoie de dédicace (très simple, y'a même pas de protection contre les injections SQL pour l'instant).

J'ai la confirmation sur l'écran que la dédicace est bien enregistré, mais sur la DB elle n'est pas là :(

Merci par avance !

<?php
$pseudo = $_POST['pseudo_dedi'];
$message = $_POST['message_dedi'];
if (mysqli_connect_errno())
    {
  echo "Impossible de se connecter à la BDD MySQL: " . mysqli_connect_error();
    }
if ($message && $pseudo !== '')
    {
$connexion = mysqli_connect('127.0.0.1', 'root', 'mdp', 'db');
mysqli_query($connexion, "INSERT INTO dedicasses VALUES('', $pseudo, $message, '')");
mysqli_close($connexion);
echo ('La dédicasse '.$message.' envoyé par '.$pseudo.' a bien était transmise.');
    }
else
    {
    echo('Le pseudo ou le message est vide.');
    }
?>
Video_Pijama
Video_Pijama
Niveau 9
04 octobre 2016 à 19:26:01

Il est déja pour toi impossible de savoir si tu arrives bien à te connecter à ta bdd, car tu fais une vérification sur cette connection avant même de l'ouvrir.

http://www.w3schools.com/php/func_mysqli_query.asp
http://www.w3schools.com/om/php/func_mysqli_connect.asp
http://www.w3schools.com/php/func_mysqli_connect_errno.asp

De plus, ton message de confirmation ne s'affiche que sur la condition $message && $pseudo, pas sur l'insertion en bdd.
Du coup, si la condition fonctionne, il est normal de voir ton message s'afficher, même sans insertion.

Message édité le 04 octobre 2016 à 19:28:42 par Video_Pijama
reyofbastards
reyofbastards
Niveau 4
04 octobre 2016 à 19:29:28

Merci pour ta réponse,

Mais au delà des messages de confirmation et des vérifications, est ce que tu sais où est le problème ? :/

deepblue
deepblue
Niveau 16
04 octobre 2016 à 19:37:52

Ta requête SQL est mal formée. Il manque des simples quotes autour de $pseudo et $message.
Si tu avais pris le temps de faire les choses bien, ne serait-ce que faire une requête préparée, tu n'aurais pas cette "étourderie".

Video_Pijama
Video_Pijama
Niveau 9
04 octobre 2016 à 19:38:45

Regardes si tu peux te connecter à ta base de données, en ouvrant et vérifiant dans le bon ordre, et si tu ne reçois pas un message d'erreur.


$con=mysqli_connect("localhost","wrong_user","my_password","my_db");
// Check connection
if (!$con)
  {
  die("Connection error: " . mysqli_connect_errno());
  }
reyofbastards
reyofbastards
Niveau 4
04 octobre 2016 à 19:48:04

@deepblue : des simples quotes ? simples quotes ça envoie la variable directement à la bdd ($pseudo et $message)

@Video_Pijama J'ai mit dans le bon ordre, je n'ai aucune erreur, la connexion se passe bien. C'est pas ça le problème apparemment :/

Video_Pijama
Video_Pijama
Niveau 9
04 octobre 2016 à 20:04:07

Essayes en étant explicite au niveau des champs à remplir, pour voir :

mysqli_query($connexion, "INSERT INTO dedicasses (pseudo, message) VALUES ($pseudo, $message)");

et si ça ne passe pas, sans variable, avec du texte dur :

mysqli_query($connexion, "INSERT INTO dedicasses (pseudo, message) VALUES ('test de pseudo', 'test de message')");
deepblue
deepblue
Niveau 16
04 octobre 2016 à 20:04:41
"INSERT INTO dedicasses VALUES('', '$pseudo', '$message', '')"

Je réitère ma remarque.

reyofbastards
reyofbastards
Niveau 4
04 octobre 2016 à 20:18:50

Le 04 octobre 2016 à 20:04:41 deepblue a écrit :
"INSERT INTO dedicasses VALUES('', '$pseudo', '$message', '')"

Je réitère ma remarque.

Excellent ça marche. Mdr. En fait j'avais testé sans quote et avec les '.$pseudo.' et ça ne fonctionnait pas.

Je ne pensai pas qu'un simple quote fonctionnerai, je pensai que ça allait envoyer "$pseudo" à la db mais non. J'ai cherchai compliqué pour rien.

Merci beaucoup à vous deux :)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment