Requete sql suite à formulaire php

Résolu/Fermé
gui - 2 avril 2019 à 20:14
 gui - 3 avril 2019 à 16:49
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

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