//je fais une requete (je sais pas si c'est nécessaire?) $sql = "SELECT * FROM table_commentaire WHERE id_image=$id_image"; $result_com = mysql_query($sql) or die ("La requete '$sql' a echouee"); //boucle pour recuperer les champs que je met dans des variables while ($row = mysql_fetch_assoc($result_com)) { $texte = $row['texte_commentaire']; $id_commentaire = $row['id_commentaire']; } $commentaire=$_POST['commentaire']; //insertion dans la base de donnés if (isset($_POST['commentaire'])) { $add_com = "INSERT INTO commentaire (commentaire) VALUES ($commentaire)"; mysql_query($add_com) or die ("Erreur SQL: $add_com"); }
Ajouter un commentaire: <form method ="post"> <textarea name="commentaire" action="<?php echo $PHP_SELF; ?>" cols="50" rows="5"></textarea> </form>
Erreur SQL: INSERT INTO commentaire (texte) VALUES (ce que j'ecris dans mon textarea)
if(isset($_POST['commentaire'])) $commentaire= $_POST['commentaire']; else $commentaire=""; // s'il y a un commentaire écrit dans le champ 'commentaire' alors on le met dans la variable $commentaire.Sinon, la variable $commentaire ne contient rien. if (isset($commentaire)) { $ajout_commentaire = "INSERT INTO commentaire (texte_com) VALUES ('$commentaire')"; //si la variable existe alors on insère la donnée qu'elle contient (donc le commentaire récupéré) dans le champs texte_com de ma table commentaire Je précise que le champs texte_com dans ma table est de type text et interclassement utf8_unicode_ci mysql_query($ajout_commentaire) or die('Erreur SQL:'.mysql_error()); }// retourne un message d'erreur en cas de problème (voir plus bas)
Ajouter un commentaire: <form method ="post"> <textarea name="commentaire" action="<?php echo $PHP_SELF; ?>" cols="50" rows="5"></textarea> </form>
Erreur SQL:Cannot add or update a child row: a foreign key constraint fails
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionProfites en pour faire un petit tour par ici :
sur http://fr.php.net/manual/fr/function.mysql-real-escape-string.php
SHOW CREATE TABLE commentaire;
<?php include "private.inc.php"; include "connect_bd.inc.php"; $id_photo=$_GET['id_photo']; $query "SELECT * FROM photo INNER JOIN user ON user.id_user photo.id_user AND id_photo=$id_photo"; $result = mysql_query($query) or die ("La requete '$query' a echouee"); while ($row = mysql_fetch_assoc($result)) { $id_user = $row['login']; $id_photo = $row['id_photo']; $titre = $row['titre']; $description = $row['description']; $date_depot = $row['date_depot']; $nom_fic = $row['nom_fic']; } $chemin_photo="img/".$id_user.'/'; if(isset($_POST['commentaire'])) $commentaire=$_POST['commentaire']; else $commentaire=""; if (isset($commentaire)) { $ajout_commentaire = "INSERT INTO commentaire (texte_com) VALUES ('$commentaire')"; mysql_query($ajout_commentaire) or die('Erreur SQL sur la requête : '.$ajout_commentaire.' '.mysql_error()); } ?>
Erreur SQL sur la requète :
INSERT INTO commentaire (texte_com) VALUES ('')
Cannot add or update a child row: a foreign key constraint fails
Profites en pour faire un petit tour par ici :
sur http://fr.php.net/manual/fr/function.mysql-real-escape-string.php [ Lien ]
Désolé de me répéter :
Profites en pour faire un petit tour par ici :
sur http://fr.php.net/manual/fr/function.mysql-real-escape-string.php
Pense également à fournir ton code modifié (cf le lien que je t'ai donné avant)
<?php include "private.inc.php"; include "connect_bd.inc.php"; $_GET['id_photo'] = mysql_real_escape_string ($_GET['id_photo']); $id_photo=$_GET['id_photo']; $query "SELECT * FROM photo INNER JOIN user ON user.id_user photo.id_user AND id_photo=$id_photo"; $result = mysql_query($query) or die ("La requete '$query' a echouee"); while ($row = mysql_fetch_assoc($result)) { $id_user = $row['login']; $id_photo = $row['id_photo']; $titre = $row['titre']; $description = $row['description']; $date_depot = $row['date_depot']; $nom_fic = $row['nom_fic']; } $chemin_photo="img/".$id_user.'/'; //jusque la ça va, j'ai les details qui s'affichent. // c'est la requête ci dessous, insérer le commentaire dans le champ "texte_com" de la BDD $_POST['commentaire'] = mysql_real_escape_string ($_POST['commentaire']); if(isset($_POST['commentaire'])) $commentaire=$_POST['commentaire']; else $commentaire=""; { echo $_POST['commentaire']; $ajout_commentaire = "INSERT INTO commentaire (texte_com) VALUES ('$commentaire')"; mysql_query($ajout_commentaire) or die('Erreur SQL sur la requête : '.$ajout_commentaire.' '.mysql_error()); } ?>
Ajouter un commentaire: <form method ="post"> <textarea name="commentaire" action="<?php echo $PHP_SELF; ?>" cols="50" rows="5"></textarea> </form>
Erreur SQL sur la requète :
INSERT INTO commentaire (texte_com) VALUES ('')
Cannot add or update a child row: a foreign key constraint fails
$_GET['id_photo'] = mysql_real_escape_string ($_GET['id_photo']); $id_photo=$_GET['id_photo'];
$id_photo = mysql_real_escape_string ($_GET['id_photo']);
$commentaire = mysql_real_escape_string ($_POST['commentaire']); if(isset($_POST['commentaire'])) $commentaire=$_POST['commentaire']; else $commentaire="";//puis- je fais un if(isset($commentaire)) plutôt? car cette ligne me paraît bizarrement écrite maintenant. { echo $_POST['commentaire']; $ajout_commentaire = "INSERT INTO commentaire (texte_com) VALUES ('$commentaire') WHERE id_user=$id_user AND id_photo=$id_photo"; mysql_query($ajout_commentaire) or die('Erreur SQL sur la requête : '.$ajout_commentaire.' '.mysql_error());
Erreur SQL sur la requête :
INSERT INTO commentaire (texte_com) VALUES ('') WHERE id_user=Malcolm AND id_photo=0
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_user=toto AND id_photo=0' at line 1
$commentaire = mysql_real_escape_string ($_POST['commentaire']);
if(isset($_POST['commentaire'])) $commentaire=$_POST['commentaire']; else $commentaire="";//puis- je fais un if(isset($commentaire)) plutôt? car cette ligne me paraît bizarrement écrite maintenant.
Je me suis renseigné et apparemment il n'est pas possible de préciser, dans une une requête INSERT, un WHERE et un AND ? Cela serait possible seulement avec un UPDATE ?
et devraient permettre à la requête INSERT INTO de fonctionner
Tu dois préciser l'id_user, qui doit exister dans la table use, même chose pour l'id_photo qui doit exister dans la table photo.
D'ailleurs tu récupères déjà ces infos, et d'autres, ... alors que tu ne les utilises pas
Sauf erreur de ma part tu es dans le cas d'un insert, il faut donc insérer tous les enregistrements qui te sont utiles (j'imagine ceux que tu récupères via post et get), et obligatoirement ceux que j'ai précisés et ceux qui n'auraient pas une valeur par défaut.
<?php require_once "private.inc.php"; include "connect_bd.inc.php"; $id_photo = mysql_real_escape_string ($_GET['id_photo']); $query "SELECT * FROM photo INNER JOIN user ON user.id_user photo.id_user AND id_photo=$id_photo"; $result = mysql_query($query) or die ("La requete '$query' a echouee"); while ($row = mysql_fetch_assoc($result)) { $login = $row['login']; $id_photo = $row['id_photo']; $titre = $row['titre']; $description = $row['description']; $date_depot = $row['date_depot']; $nom_fic = $row['nom_fic']; } $chemin_photo="img/".$login.'/'; //la requete pour insérer me semble correcte: $commentaire = mysql_real_escape_string($_POST['commentaire']); if(isset($_POST['envoyer'])) { $id_user = $_SESSION['id_user']; $ajout_commentaire="INSERT INTO commentaire(`texte_com`,`id_user`,`id_photo`) VALUES ('$commentaire','$id_user','$id_photo')"; $result=mysql_query($ajout_commentaire) or die('Erreur SQL sur la requête : '.$ajout_commentaire.' '.mysql_error()); } //cette partie ci dessous me servira à afficher le commentaire, mais qui ne fonctionne pas pour l'instant bien evidement car le commentaire ne peut pas etre inséré dans la bdd: $select_data="SELECT id_com, texte_com, id_user FROM commentaire WHERE id_photo=($id_photo)"; $result=mysql_query($select_data) or die ('Erreur SQL:'.$select_data.' '.mysql_error()); while ($com_data = mysql_fetch_assoc($result)) { $id_com=$com_data["id_com"]; $texte_com=$com_data["texte_com"]; $id_user=$com_data["id_user"]; }
Erreur SQL sur la requête : INSERT INTO commentaire(`texte_com`,`id_user`,`id_photo`) VALUES ('teste commentaire','toto','1') Cannot add or update a child row: a foreign key constraint fails
Oui j'essaye d'insérer les enregistrements récupérés, mais ça ne fonctionne pas.