Mettre les valeurs d'un tableau dans une base de données
Posté : 20 oct. 2007, 12:03
Bonjour
je travaille sur une application de gestion de bibliothèque, SVP, je voudrais mettre les valeurs d'un tableau dans une table, le probleme est que l'insertion ne prend que la derniere du tableau. Mon code est le suivant:
saisi.php
Merci
je travaille sur une application de gestion de bibliothèque, SVP, je voudrais mettre les valeurs d'un tableau dans une table, le probleme est que l'insertion ne prend que la derniere du tableau. Mon code est le suivant:
saisi.php
<html>
<title>Nouveau document</title>
<script language="javascript">
function PostSelect(liste){
// On compte le nombre d'item de la liste select
NbCol1 = document.forms[liste].elements.liste2.length;
// On lance une boucle pour selectionner tous les items
for(a=0; a<NbCol1; a++){
document.forms[liste].elements.liste2.options[a].selected = true;
}
// On modifie l'ID du champ select pour que PHP traite cette
// dernière comme un array
document.forms[liste].elements.liste2.name = "liste2[]";
// On soumet le formulaire
document.forms[liste].submit();
}
function Deplacer(l1,l2) {
if (l1.options.selectedIndex>=0) {
o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
l2.options[l2.options.length]=o;
l1.options[l1.options.selectedIndex]=null;
}else{
alert("Aucune activité sélectionnée");
}
}
</script>
<?php
require("../conf.php");
// CONNEXION A LA BASE DE DONNEE
$cnx = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
$db= mysql_select_db( $sql_bdd );
$sql = "Select * From auteur ";
//exécution de la requête SQL:
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
?>
<body bgcolor="#666666">
<form name="document"action="inserer.php" method="post" onSubmit="PostSelect(this.name)">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Code ISBN : </td><td><input type="text" name="isbn" size="40" maxlength="40"></td></tr>
<tr align="center">
<td>Type de document : </td><td><select name="type_doc">
<option value="général"> sélectionnez un type</option>
<option value="livre"> livre</option>
<option value="revue"> revue</option>
<option value="thèse"> thèse</option>
<option value="rapport"> rapport</option>
</select></td></tr>
<tr align="center">
<td>Titre : </td><td><input type="text" name="titre" size="40" maxlength="40"></td></tr>
<tr align="center">
<td>Thème : </td><td><input type="text" name="theme" size="40" maxlength="40"></td></tr>
<tr align="center">
<td>Année de parution : </td><td><input type="text" name="annee_p" size="4" maxlength="4"></td></tr>
<tr align="center">
<td>Mots clés : </td><td><input type="text" name="motscles" size="40" maxlength="40"></td></tr>
<tr align="center">
<td>Langue :</td><td><input name="lang" size="40" maxlength="40"></td></tr>
<tr align="center">
<td>État du document</td><td><input name="etat" size="40" maxlength="40"></td></tr>
<TR>
<TD align="center"><B><FONT size="2">Auteurs existants</FONT></B><BR>
<?php
$ld = "<select name=\"liste1\" size=8 style=\"width:120px\">";
// On boucle sur la table
while ( $result = mysql_fetch_array( $requete)) {
// $row est un tableau associatif
// les éléments sont «indicés» par les noms
// des colonnes. Je préfère cette technique à celle
// des indices numériques..on ajoute une colonne..
$numAut = $result["idAut"];
$nomAut = $result["nomAut"];
$prenomAut = $result["prenomAut"];
$ld .= "<option value='$numAut'>$numAut $nomAut $prenomAut</option>";
}
$ld .= "</SELECT>";
?>
<?php
print $ld;
?>
</TD>
<TD align="center">
<INPUT type="button" value="Ajouter >>>" onClick="Deplacer(this.form.liste1,this.form.liste2)">
<BR><BR>
<INPUT type="button" value="<<< Enlever" onClick="Deplacer(this.form.liste2,this.form.liste1)">
</TD>
<TD align="center"><FONT size="2"><B>Auteur(s) du document </B></FONT><BR>
<SELECT align=top name="liste2" size=6 style="width:120px">
</SELECT>
</TD>
</TR>
<tr align="center">
<td>Résumé :</td><td><textarea name="resume" cols="'30" rows="5"></textarea></td></tr>
<tr align="center">
<td colspan="2"><input type="submit" value="Suivant"> <input type="reset" value="rétablir"></td></tr></table>
</form>
</body>
</html>
inserer.php
<html><head>
<title>Insertion des documents</title>
<?php
require("../conf.php");
// CONNEXION A LA BASE DE DONNEE
$cnx = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
$db= mysql_select_db( $sql_bdd );
//récupération des valeurs des champs:
//Code livre:
$isbn = $_POST["isbn"] ;
//titre du document:
$titre = $_POST["titre"] ;
//théme du document:
$theme = $_POST["theme"] ;
//année de parution du document:
$anneep = $_POST["annee_p"] ;
//mots clés:
$mots = $_POST["motscles"] ;
//type du document:
$typedoc = $_POST["type_doc"] ;
//langue
$langue = $_POST["lang"];
//état du document
$etatdoc = $_POST["etat"];
//resume du document:
$resume = $_POST["resume"] ;
//Auteur du livre:
$Col1_Array = $_POST['liste2'];
//création de la requête SQL:
$sql = "INSERT INTO documents (isbn, titre, date_parution, motscles, typeDoc, etatDoc, langue, theme, resume)
VALUES ( '$isbn', '$titre', '$anneep', '$mots', '$typedoc', '$etatdoc', '$langue', '$theme', '$resume') " ;
foreach($Col1_Array as $selectValue){
$sql1 = "INSERT INTO publier (idAut1, isbn2)
VALUES ('$Col1_Array', '$isbn')";
}
$requete1 = mysql_query($sql1, $cnx) or die( mysql_error() ) ;
//exécution de la requête SQL:
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete && $requete1)
{
echo("inserer");
}
else
{
echo("L'insertion à échouée") ;
}
?>
voici la BD
Code : Tout sélectionner
-- Structure de la table `auteur`
--
CREATE TABLE `auteur` (
`idAut` int(11) NOT NULL auto_increment,
`nomAut` varchar(20) NOT NULL default '',
`prenomAut` varchar(10) NOT NULL default '',
`biographieAut` text NOT NULL,
PRIMARY KEY (`idAut`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Contenu de la table `auteur`
--
INSERT INTO `auteur` VALUES (1, 'yassin', 'omar', '');
INSERT INTO `auteur` VALUES (2, 'omar', 'sharif', '');
INSERT INTO `auteur` VALUES (3, 'haroun', 'tazief', '');
-- --------------------------------------------------------
--
-- Structure de la table `documents`
--
CREATE TABLE `documents` (
`isbn` int(11) NOT NULL default '0',
`titre` varchar(20) NOT NULL default '',
`date_parution` year(4) NOT NULL default '0000',
`motscles` varchar(50) NOT NULL default '',
`typeDoc` varchar(15) NOT NULL default '',
`etatDoc` varchar(10) NOT NULL default '',
`langue` varchar(20) NOT NULL default '',
`theme` varchar(15) NOT NULL default '',
`resume` longtext NOT NULL,
PRIMARY KEY (`isbn`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Structure de la table `publier`
--
CREATE TABLE `publier` (
`idAut1` int(11) NOT NULL default '0',
`isbn2` int(11) NOT NULL default '0',
PRIMARY KEY (`idAut1`,`isbn2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;Merci