Salut,
Alors comme je suis de bonne humeur aujourd'hui
Voici un exemple, j'ai créer ça à la va vite alors évidemement c'est une piste, et pas un script a prendre et à coler comme ça.
L'idée est de créer deux fichier un fichier de connexion et un autre qui reprend toute les fonctions, dans l'exemple il y à le fichier login_vinya.php et le fichier vinya.php .
Le fichier login_vinya.php reprend uniquement le formulaire de connexion qui fera appel à vinya.php .
Le fichier vinya.php contient les fonction suivante
Le formulaire de commande uniquement .
Un fonction qui va générer une chaîne de caractère unique pour chaque commande.
Un tableau avec le prix des articles.
La requête d'insertion pour les commandes.
La fonction qui vérifie le login.
Et la fonction basic qui reprend le tableau de toute les commandes.
Donc je reprécise que c'est une piste à toi d'améliorer le script.
login_vinya.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="fr-be" http-equiv="Content-Language" />
<meta content="text/html; charset=iso-8859-15" http-equiv="Content-Type" />
<title>sans titre 1</title>
</head>
<body>
<?php
echo '<form action="vinya.php?action=verif_login" method="post">
<table style="width: 100%">
<tr>
<td style="width: 185px">Login :</td>
<td><input name="login" type="text" /></td>
</tr>
<tr>
<td style="width: 185px">Password :</td>
<td><input name="password" type="password" /></td>
</tr>
<tr>
<td colspan="2">
<input name="Submit1" type="submit" value="soumettre" /></td>
</tr>
</table>
</form> ';
?>
</body>
</html>
vinya.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="fr-be" http-equiv="Content-Language" />
<meta content="text/html; charset=iso-8859-15" http-equiv="Content-Type" />
<title>sans titre 1</title>
</head>
<body>
<?php
session_start();
//-->Identifiant de connexion.--//
$db_host = 'localhost';
$db_user = '';
$db_pass = '';
$db_base = 'vinya';
//-->Connexion base.--//
$link = mysql_connect($db_host, $db_user, $db_pass)
or die ("Connexion impossible avec MySQL");
//-->Connexion a la Table.--//
mysql_select_db ($db_base)
or die ("Connexion impossible avec la base".$db_base);
//-->Initialisation variable $action.--//
$action = isset($_GET['action'])? $_GET['action'] : '';
switch($action)
{
case "commande" : //-->Formulaire de commande.--//
echo '<form action="vinya.php?action=insert" method="post">
<table style="width: 100%">
<tbody>
<tr>
<td style="width: 122px">Article :</td>
<td style="width: 138px"><select name="article" style="width: 78px">
<option selected="selected" value="Choix">Choix</option>
<option value="Article1">Article1</option>
<option value="Article2">Article2</option>
<option value="Article3">Article3</option>
</select></td>
<td valign="top">Quantité :
<input name="quantite" size="10" type="text" /></td>
</tr>
<tr>
<td colspan="3">
<input name="Submit1" type="submit" value="soumettre" /></td>
</tr>
</tbody>
</table>
</form>';
break;
case "insert" :
/* (1)generation d'une chaine de caractère unique pour le n° dossier.*/
function gen_reg_key()
{
$key = ""; /*on initialise la variable $key à "vide" */
$max_length_reg_key = 10; /*on définit la taille de la chaine (10 caractères ca suffit ;))*/
/*on définit le type de caractères ascii de la chaine (l'alphabet suffit amplement, mais libre a vous) */
$chars = array( "a","b","c","d","e","f","g","h","i","j","k","l",
"m","n","o","p","q","r","s","t","u","v","w","x",
"y","z","1","2","3","4","5","6","7","8","9","0");
$count = count($chars) - 1; /*on comptabilise le nombre total de caractères possibles (26 pour l'alphabet) */
srand((double)microtime()*1000000); /*on initialise la fonction rand pour le tirage aléatoire*/
for($i = 0; $i < $max_length_reg_key; $i++) $key .= $chars[rand(0, $count)]; /*on tire aléatoirement les $max_length_reg_key carac de la chaine*/
return($key); /*on renvois la clé générée */
}
/* Fin (1) */
//-->Fuseau horraire.--//
date_default_timezone_set("Europe/Paris");
//-->Declaration des variables.--//
$article = mysql_real_escape_string($_POST['article']);
$quantite = mysql_real_escape_string($_POST['quantite']);
$client = $_SESSION['id_client'];
$dossier = gen_reg_key();
//-->Tableau qui reprend le prix des article.--//
$prix = array ('Article1' => '10',
'Article2' => '20',
'Article3' => '40');
$art = $prix[$article];
$total_commande = $art * $quantite;
//-->Requête d'insertion de la commande.--//
$sql = "INSERT INTO commande SET
id_commande = '',
article = '" . $article . "',
prix = '".$art."',
quantite = '" . $quantite . "',
client_id = '" . $client . "',
dossier = '" . $dossier . "',
total_commande = '" . $total_commande . "'";
$result = mysql_query($sql) or die
("Erreur MySQL : Impossible de valider la commande");
echo 'Commande OK';
echo '<a href="vinya.php?action=array_commande">Tableau des commandes</a>';
break ;
//--->Partie qui vérifie que le login et pass existe.--//
case "verif_login" :
$client = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string($_POST['password']);
$sql = "SELECT password, id_client, client, dossier
FROM clients
WHERE client = '" . $client . "'
AND password = '" . md5($password) . "'";
$result = mysql_query($sql) or die
("Erreur MySQL : Recup des données impossible");
$verif = mysql_num_rows($result);
if ($verif == 1)
{
echo 'Connexion OK<br>';
echo '<a href="vinya.php?action=commande">Commande</a>';
}else
{
echo 'Message erreur';
}
break ;
case "array_commande" :
$html = '<table style="width: 100%">';
$field_listed = false;
$fields = array();
//On fait la requête
$sql = "SELECT * FROM commande";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
//On boucle sur les résutats
while($row = mysql_fetch_assoc($req))
{
//Si on a pas encore construit la liste des champs, on le fait
if(!$field_listed)
{
//-->On liste tous les champs retournés
$fields = array_keys($row);
//On affiche la liste des champs
$html .= '<tr>';
foreach($fields as $k => $field)
$html .= '<th>'.$field.'</th>';
$html .= '</tr>';
//-->On flag a true pour ne plus rentrer dans cette condition lors de la prochaine boucle
$field_listed = true;
}
//--> On affiche le contenu du tuple courant
$html .= '<tr>';
foreach($fields as $k => $field)
{
$html .= '<td>'.$row[$field].'</td>';
}
$html .= '</tr>';
}
$html .= "</table>";
echo $html;
break;
}
?>
</body>
</html>
Et cerise sur le

la table créer pour le test
-- phpMyAdmin SQL Dump
-- version 3.1.3
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 11 Juin 2009 à 23:35
-- Version du serveur: 5.1.32
-- Version de PHP: 5.2.9-2
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `vinya`
--
-- --------------------------------------------------------
--
-- Structure de la table `clients`
--
CREATE TABLE IF NOT EXISTS `clients` (
`id_client` int(5) NOT NULL AUTO_INCREMENT,
`password` varchar(50) NOT NULL,
`client` varchar(50) NOT NULL,
`dossier` int(50) NOT NULL,
PRIMARY KEY (`id_client`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
-- --------------------------------------------------------
--
-- Structure de la table `commande`
--
CREATE TABLE IF NOT EXISTS `commande` (
`article` varchar(100) NOT NULL,
`prix` varchar(10) NOT NULL,
`client_id` int(10) NOT NULL,
`dossier` varchar(100) NOT NULL,
`quantite` int(10) NOT NULL,
`id_commande` int(10) NOT NULL AUTO_INCREMENT,
`total_commande` int(20) NOT NULL,
PRIMARY KEY (`id_commande`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;
--
-- Contenu de la table `commande`
--
INSERT INTO `commande` (`article`, `prix`, `client_id`, `dossier`, `quantite`, `id_commande`, `total_commande`) VALUES
('Article3', '40', 1, '986nfh0tud', 30, 22, 0),
('Article1', '10', 1, 'ijbina8iqf', 2, 21, 0),
('Article3', '40', 1, 'u07bgqr7kh', 3, 23, 120),
('Article1', '10', 1, 'jwh2p9c5f0', 10, 24, 100),
('Article1', '10', 1, '93obw25ggq', 22, 25, 220),
('Article1', '10', 1, 'm0waxz3nb1', 2, 26, 20);