Insertion dans mysql

Je m'entraîne a insérer dans données de formulaires dans une base de donnée cependant je ni arrive pas, je ne trouve pas l'erreur que j'ai fait dans le code suivant:

<!DOCTYPE html>
<html>
<head>
<meta charset "utf-8" />
<link rel="stylesheet" href="test.css" />
<title>choix</title>

</head>
<body>

<form method="post" action="test.php">
<p><label for="1">Nouveaux jeux :</label><input type="text" name="Nouveaux jeux" id="1" maxlength=40 placeholder="Ex : Batman arkham asylum" /></p>
<p><label for="2">Support jeux :</label><input type="text" name="Support jeux" id="2" maxlength=8 placeholder="Ex : Xbox 360" size="12" /></p>
<input type="submit" value="Envoyer" />

</body>
-----------------------------------------------------------------------------------------------------------

<?php

try
{
$bdd = new PDO('mysql:host=localhost;dbname=game', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$req = $bdd->prepare('INSERT INTO jeux(Nouveaux jeux, Support jeux) VALUES(?, ?)');
$req->execute(array($_POST['Nouveaux jeux'], $_POST['Support jeux']));

header('location: test.html');

?>

5 réponses

  1. Je ne suis pas trop en faveur des espaces dans tes noms de colonnes. Ainsi, puisque tout tes champs concernent un jeux, tu pourrais uniquement les nommer: nouveaux et support. (ou faire appel aux underscores comme recommande Nhay).

    <label for="1">Nouveaux jeux :</label><input type="text" name="nouveaux" id="1" maxlength=40 placeholder="Ex : Batman arkham asylum">
    <label for="2">Support jeux :</label><input type="text" name="support" id="2" maxlength=8 placeholder="Ex : Xbox 360" size="12">
    <input type="submit" value="Envoyer">
    


    PS: Inutile d'encadrer le label puis l'input de <p>, tu n'as qu'à styliser les labels.
    PS: Inutile aussi de fermer tes inputs (/>) à moins que tu sois un adepte du XHTML.

    Maintenant, tu devrais mettre toute la requête dans le try et puis noter les erreurs si elles surviennent.

    TRY{
    
    $bdd = new PDO('mysql:host=localhost;dbname=game', 'root', '');
    $req = $bdd->prepare('INSERT INTO jeux (nouveaux, support) VALUES(?, ?)');
    $req->execute(array($_POST['nouveaux'], $_POST['support']));
    }
    //...
    
    0
    1. En complément, n'oublie pas d'activer les erreurs PDO qui sont masquées par défaut :
      $bdd = new PDO('mysql:host=localhost;dbname=game', 'root', '');
      $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
      
      0
  2. Remontre ton code modifié, vire les espaces de tes noms de champs (Un p'tit _ c'est mieux)
    Si possible, fais la même chose pour ta base de donnée.

    Les espaces et autres caractères spéciaux sont toujours à éviter pour plus de simplicité.
    1
    1. Je n'arrive toujours pas a inséré des données dans la table mysql via le formulaire
      0
      1. Tes noms de colonnes ont des espaces, essaye de les entourer d'apostrophes '' (Celles sous la touche 7 et non celles du 4.)
        0
        1. c'est la variable $_POST que tu cherches ?
          https://www.php.net/manual/fr/reserved.variables.post.php

          if (!empty($_POST))
          {
          $req = $bdd->prepare('INSERT INTO jeux(Nouveaux jeux, Support jeux) VALUES("'.$_POST['Nouveaux jeux'].'","'.$_POST['Support jeux'].'" )'); 
          
          }
          
          -2
          1. Houps !!!
            $req->execute(array('"'.$_POST['Nouveaux jeux'].'"', '"'.$_POST['Support jeux'].'"')); 
            0
          2. Pas besoin d'apostrophe dans le tableau, PDO s'en occupe.
            C'est sur le nom des colonnes
            INSERT INTO jeux('Nouveaux jeux', 'Support jeux') 
            que c'est nécessaire.
            0
          3. Nah, pas du tout nécessaire les «apostrophes» pour les noms de colonnes.
            0