begin process at 2012 05 30 23:19:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Enregistrer plusieurs résultats d'un foreach dans une table


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Enregistrer plusieurs résultats d'un foreach dans une table

mercredi 10 décembre 2008 à 19:04:14 | Enregistrer plusieurs résultats d'un foreach dans une table

cyse

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 !<br>'.$sql5.'<br>'.mysql_error());
 
while($data5 = mysql_fetch_assoc($req5))
{
echo '<input type="checkbox" name="genres[]" value="'.$data5['id_genre'].'">'.$data5['genre'].'';
}?>

et la partie resultat :
<?php
// On commence par récupérer les champs
if(isset($_POST['genres']))

foreach($_POST['genres'] as $value) {
  echo $value.' ';}


echo ''.$genres.'';

   // on se connecte à MySQL

   require '../../connect.inc.php';

    mysql_close();  // on ferme la connexion
  
?>

Je n'ai pas mis le INSERT INTO car je ne vois pas comment le formuler pour qu'il boucle suivant le nombre de resultat.

Ma table intermediaire a deux colonnes : ID_LIVRES et ID_GENRES donc pour 3 resultats (3 checkbox cochées) j'aurais donc 3 lignes d'insérer ...

Pouvez-vous m'aiguiller ?

Bien cordialement,
samedi 13 décembre 2008 à 18:53:08 | Re : Enregistrer plusieurs résultats d'un foreach dans une table

kohntark

Membre Club
Salut Cyse,



$sql5 = 'SELECT * FROM genres';
$req5 = mysql_query($sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.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 ...]);

<br>
=> <br />


"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
}

echo '<form id="test" name="test" method="post">';

while ($data5 = mysql_fetch_array ($req5,MYSQL_NUM)) {
  foreach ($data5 as $k => $v) {
    echo '<input type="checkbox" id="I_test" name="genres[]" value="'.$k.'" />'.$v.'<br />';
  }
}
echo '<input type="submit" value="OK" />
</form>';


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
    }
   
  }
} else {
  // gestion de l'erreur
}
?>


Cordialement,


Kohntark -



Cette discussion est classée dans : table, mysql, genres, id, foreach


Répondre à ce message

Sujets en rapport avec ce message

problème de mise à jour de base de données [ par rildspael ] Ben en fait maintenant j'ai refait ce code, je me suis concentré, j'ai tout analysé mais rien ne marche encore et je ne comprends pas : le voici :Donc Sélectionner les lignes différentes entre deux tables [ par Mikemadest ] Bonjour,J'ai cherché sans trouver de réponse à mon problème,ce qui m'amène à vous poser cette question !D'avance je m'excuse si j'ai raté la solution Afficher une ligne d'une table mysql [ par Alferox ] Bonjours,bon bin une question de base toute con.Je voudrais afficher uniquement la ligne qui port l'id 2 d'une table. Il n'y a pas plus simple que de MySQL : changement de l'ID dans une table [ par DJDX ] Bonjour groupe!Ma question peut parraître simple, mais je n'ai aucune idée comment résoudre mon "problême".si je tape ce codemysql_select_db($base, Probleme d'affichage dans une liste déroulante [ par JohnInsane ] Bonjour à tous, Voilà j'ai un problème, j'ai fais un script où l'on choisit une catégorie dans une liste déroulante qui est dans la table cat où j'a MySQL_INSERT_ID mais pour le delete ???? [ par ripoux ] Hello,Peut-être l'aurez-vous compris dans le titre...Je cherche un moyen pour faire un delete de plusieur table relié entre elle.Pour un Insert, il ex Probleme recuperation de l'id d'une table pour insérer dans une autre par la methode update [ par Alpha911 ] Bonjour,Je test plusieurs methodes pour pouvoir prendre l'id d'une table qui et la recopier dans une autre table j'ai 2 tables UTILISATEUR et une autr Comment savoir le dernier ID (MySQL) [ par ImmortalPC ] Salut, j'ai un super problème. j'ai une table comme cela : CREATE TABLE `test` ( `ID` int(11) NOT NULL auto_increment, `sujet` varchar(255) NOT NULL MySql [ par jnbrunet ] Salut,Quelle est la manière la plus simple et la plus courte pour défénir combien de champs de ma table on la valeur "2" dans la section ID?j'avais pe le hasard sur une table mysql... [ par Teclis01 ] Bon voila en fait j aimerais :lire les données dans la table (ca c'est fait)les ranger (c'est fait aussi peut etre une meilleure methode...)et en affi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales