Requete sql suite à formulaire php [Résolu/Fermé]

Signaler
-
 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

Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
2 609
Bonjour,

Pour commencer... active l'affichage des erreurs php
https://www.commentcamarche.net/faq/48399-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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60922 internautes nous ont dit merci ce mois-ci

Merci je vais regarder ça
Aucune ligne ne s'ajoute dans la bdd, et aucun message d'erreur sur la page d'affiché
Messages postés
28939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juillet 2020
2 609
As tu modifié le code comme je te l'ai indiqué ?
Montres nous ton "nouveau" code
<?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'); ?>
Ca marche en enlevant les quotes ligne 17
$conn = mysqli_connect('$mysql_host', '$mysql_user', '$mysql_pass', '$mysql_name');
reste à mettre les variables dans la requete, j'ai mis null partout pour eviter d'autres erreurs, merci :)
Merci pour cet aide !