Requete sql suite à formulaire php

Résolu
gui -  
 gui -
Bonjour,
Je suis bloqué lors d'un formulaire, je n'arrive pas à envoyer les informations sur une table,
J'ai tourné dans tout les sens, si vous aviez des pistes je suis preneur, merci, voici le code complet :

<?include ('config.php'); ?>
<?include ('header.php'); ?>

<?php

if (isset($_POST['valider'])){
$titre = $_POST['titre'];
$fichier = $_POST['fichier'];
$description = $_POST['description'];
$embed = $_POST['embed'];
echo $titre;
echo htmlentities($description);
echo $embed;

mysql_connect ($mysql_host, $mysql_user, $mysql_pass);
mysql_select_db ($mysql_name) ;

// lancement de la requete
$sql = "INSERT INTO `video` VALUES (NULL, $titre, $fichier, $description, $embed, NULL)";

// on insere le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base
mysql_close();

}else{ ?>

<form method="POST" >

<h1>Poster</h1>
<table>
<tr>
<td>Titre</td>
<td><input type="text" name="titre" /></td>
</tr>
<tr>
<td>Image</td>
<td><input type="text" name="fichier" /></td>
</tr>

<tr>
<td>Description</td>
<td><textarea name="description"></textarea></td>
</tr>

<tr>
<td>Embed</td>
<td><input type="text" name="embed" /></td>
</tr>

<tr>
<td>Valider</td>
<td><input type="submit" id="valider" name="valider" /></td>
</tr>
</table>
</form>

<?php } ?>
<? include ('footer.php'); ?>


Configuration: Windows / Chrome 73.0.3683.86

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Pour commencer... active l'affichage des erreurs php
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    Ensuite, oublie l'extension mysql_ ... elle est obsolète ! => https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

    Désormais, il faut utiliser PDO ou mysqli

    Et au passage... ta requête est fausse....
    Tu as oublié de mettre les valeurs "textuelles" entre quotes
    $sql = "INSERT INTO `video` VALUES (NULL, $titre, $fichier, $description, $embed, NULL)";
    

    A remplacer par :
    $sql = "INSERT INTO `video` VALUES (NULL, '$titre', '$fichier', '$description', '$embed', NULL)";
    

    et il est préférable d'utiliser la "bonne" syntaxe :
    INSERT INTO  (champ1, champ2...)
    VALUES ('valeur1','valeur2')
    

    un truc du genre :
    $sql = "INSERT INTO `video` (titre,fichier,description,embed) VALUES ( $titre, $fichier, $description, $embed,)";
    

    1
    1. gui
       
      Merci je vais regarder ça
      0
  2. gui
     
    Aucune ligne ne s'ajoute dans la bdd, et aucun message d'erreur sur la page d'affiché
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      As tu modifié le code comme je te l'ai indiqué ?
      Montres nous ton "nouveau" code
      0
    2. gui
       
      <?include ('config.php'); ?>
      <?include ('header.php'); ?>

      <?php

      if (isset($_POST['valider'])){
      $titre = $_POST['titre'];
      $fichier = $_POST['fichier'];
      $description = $_POST['description'];
      $embed = $_POST['embed'];
      echo $titre;
      echo htmlentities($description);
      echo $embed;

      $conn = mysqli_connect('$mysql_host', '$mysql_user', '$mysql_pass', '$mysql_name');

      // lancement de la requete
      $req = "INSERT INTO `video` (`id`, `titre`, `url_image`, `description`, `embed`, `vue`) VALUES (NULL, '', '', '', '', '')";
      echo $req;
      $res = $conn->query($req);

      }else{ ?>

      <form method="POST" >

      <h1>Poster</h1>
      <table>
      <tr>
      <td>Titre</td>
      <td><input type="text" name="titre" /></td>
      </tr>
      <tr>
      <td>Image</td>
      <td><input type="text" name="fichier" /></td>
      </tr>

      <tr>
      <td>Description</td>
      <td><textarea name="description"></textarea></td>
      </tr>

      <tr>
      <td>Embed</td>
      <td><input type="text" name="embed" /></td>
      </tr>

      <tr>
      <td>Valider</td>
      <td><input type="submit" id="valider" name="valider" /></td>
      </tr>
      </table>
      </form>

      <?php } ?>
      <? include ('footer.php'); ?>
      0
    3. gui
       
      Ca marche en enlevant les quotes ligne 17
      $conn = mysqli_connect('$mysql_host', '$mysql_user', '$mysql_pass', '$mysql_name');
      0
    4. gui
       
      reste à mettre les variables dans la requete, j'ai mis null partout pour eviter d'autres erreurs, merci :)
      0