Bonsoir comme vous le voyez d'après le titre je travaille en PHP/MYSQL
et je voulais insérer plusieurs lignes de noms de materiels en une seule colonne

<?php require_once("connection.php")?>

<?php
$idmateriel_array = $_POST["id_materiel"];
var_dump($idmateriel_array);
foreach( $idmateriel_array as $idmateriel)
{
$Nomprof=$_POST["nomprof"];
$email=$_POST["email"];

$req="INSERT INTO commande_pret(    Id_commande,Nom,login,email)VALUES( '','$idmateriel','$Nomprof','$email')";
$res = $conn->query($req);

}
?>

avec le résultat que vous voyez ici

maintenant je dois créer une autre table LIAISON (id_commande,nom_materiel) pour lier tout ceci mais je ne sais pas avec quel requête y parvenir ????? une aide svp

15 réponses


Bonsoir,

Un truc un peu "Bricolage" mais qui pourrait convenir au problème serait de créer une string géante avec tous tes noms de matériels et séparé par une virgule (tiret ou n'importe quoi d'autre, du moment que tu puisse définir le séparateur pour la fonction qui va diviser) comme ça au moment du traitement des données tu peux les diviser pour les utilser séparemment.

créer un string comment puis-je le faire ???, à noter que je travaille avec php

Bonjour,

Un string > Chaine de caractère.
Donc au lieu d'avoir tout tes nom de matériel tu n'en aurais qu'un géant.

Materiel1-materiel2-materiel3 etc...

Y a pas de String dans Phpmyadmin,j'ai beau cherché je ne trouve pas !!!!!

Une string ou chaine de caractère. C'est un texte, n'importe quoi.

"azerty" <- est une chaine de caractère.
Comment tu récupère tes noms de matériel ?
Depuis un formulaire je suppose
Et ils sont stocker dans ?
un tableau ? = array Parce que dans ce cas tu peux transformer ton tableau en ces fameuses string.

Grâce a une fonction PHP.

Pour en revenir sur les strings :
Une string ou chaine de caractère c'est un texte.
Souvent : Un texte contenu dans une variable.
Sur PHP My Admin c'est de type text ou de type varchar.

$var = "test"; dans ce cas test est une string.

En faite le principe serait de mélanger tout les noms de matériel que tu recois en une variable.
Pour en suite l'insérer dans PHPMyAdmin dans un varchar.

Et au moment où tu traite la data pour l'afficher quelque part je suppose, tu utilises une fonction PHP pour couper cette variable en un tableau.

Et pour afficher le contenu au cas par cas :

echo $maVariable[0]; < Affichera le premier élément etc..

Voilà mon formulaire où plutôt la partie dont je parle c'est à dire le nom du materiel

<form method="post" action="fichepret.php">
<table>
        <tr>
        <th valign="top">Nom Materiel(s):</th>
        <?php
    // Récupération de paramètres passés par la méthode GET
    // avec PHP>=4.1
    // $_GET["loisirs"] contient un tableau de valeurs
   if(isset($_GET['id_materiel'])){ $loisirs = $_GET["id_materiel"];

    echo "<b> </b><br />";
    for ($i=0; $i<count($loisirs); $i++) {
         echo "<br />"; 
   }}
?><?php if(isset($_GET['id_materiel'])){ for ($i=0; $i<count($loisirs); $i++) { ?>
   <td> <input type="text"   name="id_materiel[]" value=<?php  echo $loisirs[$i] ;?>/>
<?php }} ?></td>

Je le récupère pour insérer dans la BD comme suit

<?php require_once("connection.php")?>

<?php
$idmateriel_array = $_POST["id_materiel"];
var_dump($idmateriel_array);
foreach( $idmateriel_array as $idmateriel)
{
$Nomprof=$_POST["nomprof"];
$email=$_POST["email"];

$req="INSERT INTO commande_pret(    Id_commande,Nom,login,email)VALUES( '','$idmateriel','$Nomprof','$email')";
$res = $conn->query($req);

}
?>

puis je le récupère pour afficher

<form method="post" action="commander.php"
enctype="multipart/form-data"><table border="0" cellpadding="0" cellspacing="0"  id="id-form">

       <tr>
            <th valign="top">Nom Materiel:</th>
            <td><?=$idmateriel?> </td>
            <td></td>
        </tr>

Oui une chaine de caractère je ne comprends pas,j'ai bien dans ma table le nom matériel comme Varchar,c'est ça non ?? parce que j'ai pas compris comment le déclarer en php

Mon input pour écrire les noms de matériels a été récupéré d'un checkbox relatif à ma BD,c'est pourquoi c'est trop compliqué

ce n'est qu'une partie de la formulaire,j'ai exclu les autres (nom prof et cie) parce que je n'ai aucun problème pour les récupérer et les insérer

Donc tu récupère les noms de matériel écrit dans l'input. Et ils sont envoyé dans le tableau id_materiel_array.

Bah dans ce cas tu peux transformer ton array en string.

Utilise la fonction Implode.
Qui s'utilise comme suit :

<?php

$array = array('lastname', 'email', 'phone'); // Un tableau
$comma_separated = implode(",", $array);  //Dans le premier paramètre de la fonction tu met le caractère qui sépare dans ce cas, des virgules. Et en second paramètre tu met ton tableau.

echo $comma_separated; // lastname,email,phone Là il affichera la "String"  lastname,email,phone
?>

L'exemple au dessus te renvoi dans la variable $comma_separated; le tableau qui a été transformer en chaine de caractère.

Donc dans ton cas tu as juste a faire ceci :

je là mets dans la fonction de l'insertion ????

parce que là je suis un peu perdu,est-ce que à la place de mon array ici que je dois la mettre ????

<?php require_once("connection.php")?>

<?php
$idmateriel_array = $_POST["id_materiel"];
var_dump($idmateriel_array);
foreach( $idmateriel_array as $idmateriel)
{
$Nomprof=$_POST["nomprof"];
$email=$_POST["email"];

$req="INSERT INTO commande_pret(    Id_commande,Nom,login,email)VALUES( '','$idmateriel','$Nomprof','$email')";
$res = $conn->query($req);

}
?>

id matériel correspond bien au nom du matériel ?
On est d'accord ?
Sinon a quoi correspond "Nom du matériel" ?

OuI id matériel correspond bien à nom materiel dans ma fonction

Bonjour,
Si j'ai bien compris vous avez là dans votre bd une table "commande_pret" avec 4 colonnes soit(Id_commande,Nom,login,email)
et vous voulez créer une deuxiéme table " LIAISON"avec deux colonnes (Id_commande,Nom_materiel)
est ce que le id_commande de la table LIAISON et le même que id_commande de la table commade_pret et de même pour Nom et Nom_materiel ?

c'est bien ça