par
jayjay » 02 août 2005, 19:32
salut, j'ai un probleme de clé qui est dupliquée, voici mes tables
Code : Tout sélectionner
--
-- Structure de la table `commande`
--
CREATE TABLE `commande` (
`numcom` int(5) NOT NULL default '0',
`datecom` date NOT NULL default '0000-00-00',
`nbrpro` int(3) NOT NULL default '0',
`codepro` int(4) NOT NULL default '0',
`typecom` int(1) NOT NULL default '0',
`acom` float NOT NULL default '0',
`numcli` int(4) NOT NULL default '0',
PRIMARY KEY (`numcom`),
KEY `numcli` (`numcli`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `commande`
--
-- --------------------------------------------------------
--
-- Structure de la table `détailcommande`
--
CREATE TABLE `détailcommande` (
`numcom` int(5) NOT NULL default '0',
`nbrpro` int(3) NOT NULL default '0',
`codepro` int(4) NOT NULL default '0',
PRIMARY KEY (`numcom`),
KEY `codepro` (`codepro`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `détailcommande`
--
INSERT INTO `détailcommande` VALUES (1, 4, 1011);
-- --------------------------------------------------------
--
-- Structure de la table `produit`
--
CREATE TABLE `produit` (
`codepro` int(4) NOT NULL default '0',
`nompro` varchar(20) NOT NULL default '',
`descrippro` varchar(30) NOT NULL default '',
`prixpro` float NOT NULL default '0',
`nbrartstock` int(4) NOT NULL default '0',
`numf` int(4) NOT NULL default '0',
PRIMARY KEY (`codepro`),
KEY `numf` (`numf`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `produit`
--
INSERT INTO `produit` VALUES (1001, 'pain', 'pain blanc', 1.65, 8, 1);
INSERT INTO `produit` VALUES (1011, 'CHOUTETE', 'CHOUTETE A AL MOUTARDE', 8.43, 3, 1);
INSERT INTO `produit` VALUES (1231, 'TARTE', 'TARTEDE MAMAN', 2.34, 3, 1);
--
-- Contraintes pour la table `commande`
--
ALTER TABLE `commande`
ADD CONSTRAINT `commande_ibfk_1` FOREIGN KEY (`numcli`) REFERENCES `client` (`numcli`);
--
-- Contraintes pour la table `détailcommande`
--
ALTER TABLE `détailcommande`
ADD CONSTRAINT `détailcommande_ibfk_1` FOREIGN KEY (`codepro`) REFERENCES `produit` (`codepro`);
--
-- Contraintes pour la table `produit`
--
ALTER TABLE `produit`
ADD CONSTRAINT `produit_ibfk_1` FOREIGN KEY (`numf`) REFERENCES `fournisseur` (`numf`);
voici mon script
<html>
<body>
<head>
<LINK REL =stylesheet TYPE =text/css HREF =fichier.css/>
</head>
<?
if (isset($_POST['submit']))
{
//on teste les erreurs
foreach ($_POST as $valeurchamps)
{
echo $valeurchamps;
//on teste si les données saisies sont numériques ou pas
if(is_numeric($valeurchamps))
{$err='pas d\'erreur';
echo $err;
}
else{
if($valeurchamps='envoyer'){
$err='pas d\'erreur';}
else{
$erreur = 'il y a une erreur';
echo $erreur;
}
}
}
if(count($erreur))
{
echo 'on doit réafficher le formulaire';
$test=FALSE;
}
else
{
$test=TRUE;
//ouverture et sélection de la base de donnée
require '.\includes\mysql.php';
$bd=mysql_connect("$host_bd", "$login_bd", "$password_bd");
mysql_select_db("$base_bd", $bd);
$rqr = "SELECT * FROM produit";
$resulta = mysql_query ($rqr);
foreach ($_POST as $valeurchamps)
{
$dbRow = mysql_fetch_assoc($resulta);
$nomchamps = $dbRow['codepro'];
$rq = "INSERT INTO détailcommande (numcom, nbrpro, codepro) VALUES ('0001', '$valeurchamps', '$nomchamps')";
mysql_query($rq);
echo 'l\'enregistrement a réussit';
}
}
}
?>
<? if(!($test)){ ?>
<form method="post">
<table>
<caption>tableau des commandes</caption>
<thead> <!-- En-tête du tableau -->
<tr>
<th>Nbre</th>
<th>Code</th>
<th>Produit</th>
</tr>
</thead>
<tbody> <!-- Corps du tableau -->
<?
require '.\includes\mysql.php';
$bd=mysql_connect("$host_bd", "$login_bd", "$password_bd");
mysql_select_db("$base_bd", $bd);
$rq = "SELECT * FROM produit";
$result = mysql_query ($rq);
while($dbRow = mysql_fetch_assoc($result))
{
print(" <tr>\n");
print(" <td><input type=\"text\" name=\"{$dbRow['codepro']}\" size=\"3\" maxlength=\"3\"></td>\n");
print(" <td> {$dbRow['codepro']} </td>\n");
print(" <td> {$dbRow['nompro']} </td>\n");
print(" </tr>\n");
}
?>
</tr>
<tr>
<td><input type="submit" name="submit" value="envoyer"/>
</td>
</tr>
<tbody>
</table>
</form>
<? } ?>
</body>
</html>
Je n'enregistre que la première ligne de ma commande.......
Apparament, j'ai un soucis au niveau de la clé, elle dupliquée.
mais je ne vois pas comment, dans mon cas, créer une bonne table de façon à enregistrer dans ma Base dd chaque commande journalière....
salut, j'ai un probleme de clé qui est dupliquée, voici mes tables
[code]--
-- Structure de la table `commande`
--
CREATE TABLE `commande` (
`numcom` int(5) NOT NULL default '0',
`datecom` date NOT NULL default '0000-00-00',
`nbrpro` int(3) NOT NULL default '0',
`codepro` int(4) NOT NULL default '0',
`typecom` int(1) NOT NULL default '0',
`acom` float NOT NULL default '0',
`numcli` int(4) NOT NULL default '0',
PRIMARY KEY (`numcom`),
KEY `numcli` (`numcli`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `commande`
--
-- --------------------------------------------------------
--
-- Structure de la table `détailcommande`
--
CREATE TABLE `détailcommande` (
`numcom` int(5) NOT NULL default '0',
`nbrpro` int(3) NOT NULL default '0',
`codepro` int(4) NOT NULL default '0',
PRIMARY KEY (`numcom`),
KEY `codepro` (`codepro`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `détailcommande`
--
INSERT INTO `détailcommande` VALUES (1, 4, 1011);
-- --------------------------------------------------------
--
-- Structure de la table `produit`
--
CREATE TABLE `produit` (
`codepro` int(4) NOT NULL default '0',
`nompro` varchar(20) NOT NULL default '',
`descrippro` varchar(30) NOT NULL default '',
`prixpro` float NOT NULL default '0',
`nbrartstock` int(4) NOT NULL default '0',
`numf` int(4) NOT NULL default '0',
PRIMARY KEY (`codepro`),
KEY `numf` (`numf`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Contenu de la table `produit`
--
INSERT INTO `produit` VALUES (1001, 'pain', 'pain blanc', 1.65, 8, 1);
INSERT INTO `produit` VALUES (1011, 'CHOUTETE', 'CHOUTETE A AL MOUTARDE', 8.43, 3, 1);
INSERT INTO `produit` VALUES (1231, 'TARTE', 'TARTEDE MAMAN', 2.34, 3, 1);
--
-- Contraintes pour la table `commande`
--
ALTER TABLE `commande`
ADD CONSTRAINT `commande_ibfk_1` FOREIGN KEY (`numcli`) REFERENCES `client` (`numcli`);
--
-- Contraintes pour la table `détailcommande`
--
ALTER TABLE `détailcommande`
ADD CONSTRAINT `détailcommande_ibfk_1` FOREIGN KEY (`codepro`) REFERENCES `produit` (`codepro`);
--
-- Contraintes pour la table `produit`
--
ALTER TABLE `produit`
ADD CONSTRAINT `produit_ibfk_1` FOREIGN KEY (`numf`) REFERENCES `fournisseur` (`numf`);
[/code]
voici mon script
[php]
<html>
<body>
<head>
<LINK REL =stylesheet TYPE =text/css HREF =fichier.css/>
</head>
<?
if (isset($_POST['submit']))
{
//on teste les erreurs
foreach ($_POST as $valeurchamps)
{
echo $valeurchamps;
//on teste si les données saisies sont numériques ou pas
if(is_numeric($valeurchamps))
{$err='pas d\'erreur';
echo $err;
}
else{
if($valeurchamps='envoyer'){
$err='pas d\'erreur';}
else{
$erreur = 'il y a une erreur';
echo $erreur;
}
}
}
if(count($erreur))
{
echo 'on doit réafficher le formulaire';
$test=FALSE;
}
else
{
$test=TRUE;
//ouverture et sélection de la base de donnée
require '.\includes\mysql.php';
$bd=mysql_connect("$host_bd", "$login_bd", "$password_bd");
mysql_select_db("$base_bd", $bd);
$rqr = "SELECT * FROM produit";
$resulta = mysql_query ($rqr);
foreach ($_POST as $valeurchamps)
{
$dbRow = mysql_fetch_assoc($resulta);
$nomchamps = $dbRow['codepro'];
$rq = "INSERT INTO détailcommande (numcom, nbrpro, codepro) VALUES ('0001', '$valeurchamps', '$nomchamps')";
mysql_query($rq);
echo 'l\'enregistrement a réussit';
}
}
}
?>
<? if(!($test)){ ?>
<form method="post">
<table>
<caption>tableau des commandes</caption>
<thead> <!-- En-tête du tableau -->
<tr>
<th>Nbre</th>
<th>Code</th>
<th>Produit</th>
</tr>
</thead>
<tbody> <!-- Corps du tableau -->
<?
require '.\includes\mysql.php';
$bd=mysql_connect("$host_bd", "$login_bd", "$password_bd");
mysql_select_db("$base_bd", $bd);
$rq = "SELECT * FROM produit";
$result = mysql_query ($rq);
while($dbRow = mysql_fetch_assoc($result))
{
print(" <tr>\n");
print(" <td><input type=\"text\" name=\"{$dbRow['codepro']}\" size=\"3\" maxlength=\"3\"></td>\n");
print(" <td> {$dbRow['codepro']} </td>\n");
print(" <td> {$dbRow['nompro']} </td>\n");
print(" </tr>\n");
}
?>
</tr>
<tr>
<td><input type="submit" name="submit" value="envoyer"/>
</td>
</tr>
<tbody>
</table>
</form>
<? } ?>
</body>
</html>[/php]
Je n'enregistre que la première ligne de ma commande.......
Apparament, j'ai un soucis au niveau de la clé, elle dupliquée.
mais je ne vois pas comment, dans mon cas, créer une bonne table de façon à enregistrer dans ma Base dd chaque commande journalière....