Enregistrer plusieurs résultats d'un foreach dans une table
cyse
Messages postés18Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention10 décembre 2008
-
10 déc. 2008 à 19:04
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 2012
-
13 déc. 2008 à 18:53
Bonjour,
J'ai réussis à mettre en place des checkbox avec plusieurs choix possibles, et à récupérer les id de chacun des résultats séparés par un espace à l'aide de foreach();
La ou je bloque complétement, c'est pour séparer ces valeurs et les inserer chacune dans une table intermediaire que j'ai créées.
Avez vous une idée de comment je dois proceder pour inserer les resultats retournés ?
Voici la partie du formulaire concernée :
<?php
$sql5 = 'SELECT * FROM genres';
$req5 = mysql_query($sql5) or die('Erreur SQL !
'.$sql5.'
'.mysql_error());
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 13 déc. 2008 à 18:53
Salut Cyse,
$sql5 = 'SELECT * FROM genres';
$req5 = mysql_query($sql5) or die('Erreur SQL !
'.$sql5.'
'.mysql_error());
=> A ne pas faire !!!
Si erreur, tu peux livrer des informations importantes sur ta base de données qui permettent très facilement de faire de l'injection par la suite.
Préfère :
$sql5 = 'SELECT * FROM genres';
$req5 mysql_query($sql5) or die([j'informe l'utilisateur qu'il y a un pb sur le site et je le redirige efficacement, et j'écris qqchose dans un fichier log, j'envoie un mail à l'admin, etc ...]);>
"mysql_close(); // on ferme la connexion"
=> ne sert à rien, la connexion est fermée automatiquement à la fin du script
Le code ci dessous n'est pas terrible et mérite d'être amélioré en fonction de ton contexte, il te propose juste quelques pistes :
<?php
require '../../connect.inc.php';
if (false $req5 mysql_query ("SELECT * FROM genres")) {
file_put_contents("erreur lors de la requête : ".mysql_error()."\r\n", 'FILE_APPEND'); // écrit l'erreur dans un fichier
// rediriger vers la page d'erreur => l'utilisateur ne s'aperçoit que d'une erreur, mais n'a pas la structure de ta table
}
if (isset($_POST['genres'])) {
// On commence par récupérer les champs => non, on met à jour la DB directement
foreach($_POST['genres'] as $id_livres => $id_genres) {
// il manque un traitement de la valeur envoyée pour sécuriser l'insertion dans la DB !!!
$genre = [traitement de la valeur de $id_genres];
if (false === mysql_query("INSERT INTO [ma table] ('ID_LIVRES', 'ID_GENRES') VALUES ('$id_livres', '$genre'")) {
//traitement de l'erreur
}