Menu

Requete sql suite à formulaire php [Résolu]

- - Dernière réponse :  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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
25216
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 avril 2019
1943
1
Merci
Bonjour,

Pour commencer... active l'affichage des erreurs php
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Ensuite, oublie l'extension mysql_ ... elle est obsolète ! => http://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,)";

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 41062 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
0
Merci
Aucune ligne ne s'ajoute dans la bdd, et aucun message d'erreur sur la page d'affiché
jordane45
Messages postés
25216
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 avril 2019
1943 -
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 :)
Commenter la réponse de gui
Commenter la réponse de gui