// ex compteur de places libres
$anciennes_places = 'SELECT champ_nombre_places FROM table';
$exec_anciennes_places = mysql_query($anciennes_places);
$result_anciennes_places = mysql_result($exec_anciennes_places, 0);
// reservation
$places_reservees_client = '4'; (récup du formulaire par exemple)
// mise à jour des places libres
$nouvelles_places = $result_anciennes_places - $places_reservees_client; // 10-4 = 6
$maj_places = 'UPDATE table SET champ_nombre = "'.$nouvelles_places.'"';
mysql_query($maj_places);
ou un truc du genre..
'UPDATE ta_table SET ton_champ = ton_champ - ' . $places;
En supposant que $places contienne le nombre de place réservées par l'utilisateur, cela va automatiquement déduire le nombre de places réservées de la valeur que tu as en base
<?php
$conn = db_connect();
$sql_stock = "select * from articles";
$result = mysql_query($sql_stock, $conn);
?>
<table border="0" cellspacing="0" cellpadding="0" width="100%" align="center">
<tbody>
<tr>
<td valign="top"><form action="envoi_mail.php" method="post"><input type="hidden" name="PHPSESSID" value="afa8d94cae1cee57e0c41f69b8956642" />
<table border="0" cellspacing="1" cellpadding="1" width="100%" align="center">
<tbody>
</tbody>
<tbody>
<tr>
<td class="bold">Nom</td>
<td><input id="nom" name="nom" size="35" type="text" /></td>
<td> </td>
<td style="border-left-color: #333333;" rowspan="6" valign="top"> </td>
</tr>
<tr>
<td class="bold">Prénom</td>
<td><input id="prenom" name="prenom" size="35" type="text" /></td>
<td> </td>
</tr>
<tr>
<td class="bold">Votre E-mail</td>
<td><input name="expediteur" size="35" type="text" /></td>
<td> </td>
</tr>
<tr>
<td class="bold">Combien de places?</td>
<td><input name="places" size="35" type="text" id="places" /> </td>
<?php while ($affiche = mysql_fetch_array($result)) { ?>
<td> <?php echo $affiche[stock] ?> </td>
<?php } ?>
</tr>
<tr>
<td><input name="hidden" size="35" type="hidden" /></td>
<td> </td>
<td> </td>
</tr>
<tr>
<th colspan="4" align="left"><input type="submit" value="Envoyer" /></th>
</tr>
<tr>
<td> </td>
</tr>
</tbody>
<tbody>
</tbody>
</table>
</form></td>
</tr>
</tbody>
</table>
Maintenant que j'ai le formulaire qui affiche le nombre de place dispos, l'utilisateur peut taper lui même le nombre de places qu'il souhaite...<?php
$conn = db_connect();
$sql_stock = "select * from articles";
$result = mysql_query($sql_stock, $conn);
?>
<table border="0" cellspacing="0" cellpadding="0" width="100%" align="center">
<tbody>
<tr>
<td valign="top"><form action="envoi_mail.php" method="post"><input type="hidden" name="PHPSESSID" value="afa8d94cae1cee57e0c41f69b8956642" />
<table border="0" cellspacing="1" cellpadding="1" width="100%" align="center">
<tbody>
</tbody>
<tbody>
<tr>
<td class="bold">Nom</td>
<td><input id="nom" name="nom" size="35" type="text" /></td>
<td> </td>
<td style="border-left-color: #333333;" rowspan="6" valign="top"> </td>
</tr>
<tr>
<td class="bold">Prénom</td>
<td><input id="prenom" name="prenom" size="35" type="text" /></td>
<td> </td>
</tr>
<tr>
<td class="bold">Votre E-mail</td>
<td><input name="expediteur" size="35" type="text" /></td>
<td> </td>
</tr>
<tr>
<td class="bold">Combien de places?</td>
<td><input name="places" size="35" type="text" id="places" /> </td>
<?php while ($affiche = mysql_fetch_array($result)) { ?>
<td> <?php echo $affiche[stock] ?> </td>
<?php } ?>
</tr>
<tr>
<td><input name="hidden" size="35" type="hidden" /></td>
<td> </td>
<td> </td>
</tr>
<tr>
<th colspan="4" align="left"><input type="submit" value="Envoyer" /></th>
</tr>
<tr>
<td> </td>
</tr>
</tbody>
<tbody>
</tbody>
</table>
</form></td>
</tr>
</tbody>
</table>
FICHIER pour le post du formulaire:
<?php
//--------les includes des fonctions permettent le bon fonctionnement du site--------------
include "include_fns.php";
//-----------------------------------------------------------------------------------------
//---------------- recuperation des variables par la methode POST -------------------------
$expediteur = stripslashes($_POST['expediteur']);
$nom = stripslashes($_POST['nom']);
$prenom = stripslashes($_POST['prenom']);
$places = stripslashes($_POST['places']);
//-----------------------------------------------------------------------------------------
//---------------si les variables n'existe pas afficher message information----------------
if (!$expediteur || $_POST['hidden'])
{
echo "<h1>".IMPOSSIBLE_ENVOYER_MESSAGE."</h1>";
echo "<div id=\"message\">".IMPOSSIBLE_DE_POURSUIVRE." !";
echo "<br />[ <a href=\"javascript:history.back()\">".RETOUR."</a> ]</div><br />";
//-----------------------------------------------------------------------------------------
//----------------connexion db et insertion dans la table commandes-----------------------
//ajout de l'ecotaxe au prix d'achat
//if ($result) {
//requete pour verifier la quantite existante en stock
$conn = db_connect();
$sql_stock = "select * from ".ARTICLES."";
$result_stock = mysql_query($sql_stock, $conn);
$stock_existant = mysql_fetch_array($result_stock);
$reste = $stock_existant[stock] - $places;
//reservation de l'article par l'utilisateur
$conn = db_connect();
$sql_id = "update articles set stock = $reste ";
$result_id = mysql_query($sql_id, $conn);
//------------------------affichage du bas de page ----------------------------------------
include "bas.php";
exit();
}
//------------------------------------ Envoi du mail --------------------------------------
$header = "MIME-Version:1.0" . "\r\n" ;
$header .= "Content-Type:text/html;charset=ISO-8859-1" . "\r\n";
// more Header
$header .= "From: $expediteur" . "\r\n" ;
if (@mail($to, $objet, $message, $header))
{
echo "<h1>".CONFIRMATION_MESSAGE_ENVOYER."</h1>";
echo "<div id=\"message\">".CONFIRMATION_MESSAGE_ENVOYER_TEXTE."<br />";
echo "[ <a href=\"index.php\">".RETOUR."</a> ]</div><br />";
//-----------------------------------------------------------------------------------------
//------------------------------affichage du bas de page ----------------------------------
include "bas.php";
exit();
}
//-----------------------------------------------------------------------------------------
//-------------------------------- si echec de l'envoi ------------------------------------
else
{
echo "<h1>".IMPOSSIBLE_ENVOYER_MESSAGE."</h1>";
echo "<div id=\"message\">".IMPOSSIBLE_ENVOYER_MESSAGE." !!!<br />";
echo "[ <a href=\"javascript:history.back()\">".RETOUR."</a> ]</div><br />";
//-----------------------------------------------------------------------------------------
//--------------------------------affichage du bas de page --------------------------------
include "bas.php";
exit();
}
//-----------------------------------------------------------------------------------------
?>
Sur la page 1, comme on affiche le nombre de places restantes, en modifiant un peu ton code: en espérant que min et max qui sont dans la norme soient reconnus un jourBonjour à tous un peu reformulé
je voudrais savoir comment il est possible de faire un update sur ma table sql pour réduire les places disponibles du nombre de places sélectionnées.
1ere page affichage = Page de l'événement avec choix du nombre de places, dès que la personne choisit le nombre de places la base est mise à jour automatiquement
2ème page affichage = Page enregistrement coordonnées avec compteur de places disponibles
exemple:
page 1
il y a 10 places disponibles,
la page affiche 10 places restantes
la personne choisit 2 places,
Pour réserver on clique sur le bouton réservation
page 2 supposée par moi
demande d'adrese, etc ET affichage de 8 places disponibles dans l'exemple
Les deux pages sont déjà créées, ce que je ne sais pas faire c'est mettre à jour la base lorsque la personne a sélectionné le nombre de places pour pouvoir afficher ensuite le nombre de place restantes.
Est-ce que quelqu'un peut me donner le schéma à suivre s'il vous plait?
Merci par avance.
Cordialement.
$anciennes_places = 'SELECT champ_nombre_places FROM table';
$exec_anciennes_places = mysql_query($anciennes_places);
$result_anciennes_places = mysql_result($exec_anciennes_places, 0);
$nb_restantes = mysql_num_rows($result_anciennes_places);
<input type= 'text' name ='nb_restantes' readonly = 'readonly' value = '$nb_restantes' />
<input type='number' name ='nb_reservees' min='1' max= '$nb_restantes' />
sur la page 2 il faut récupérer le nombre restant et le nombre réservé, s'assurer que la nombre réservé est positif et inférieur ou égal au nombre restant puis balancer une requete de ce genre
$requete = "UPDATE 'corrida' set `nb_places`= `nb_places' - $nb_reservees";
Une autre solution serait de créer un select sur la page 1 avec une boucle de 1 à nb_restantes
$requete = "UPDATE 'corrida' set `nb_places`= `nb_places' - $nb_reservees";
- Si corrida est un nom de table et pas une chaine de caractères, il ne faut pas d'apostrophes autour"Ca ne fonctionne pas" n'est pas ce qu'il y a de plus explicite comme message d'erreur pour pouvoir identifier et corriger le problème...
La requête de sirakawa contient quelques erreurs assez facile à corriger :- Si corrida est un nom de table et pas une chaine de caractères, il ne faut pas d'apostrophes autour$requete = "UPDATE 'corrida' set `nb_places`= `nb_places' - $nb_reservees";
- Si l'on ouvre une apostrophe tordue spécifique à mysql avant le nom du champ nb_places (le 2ème), il faut la fermer après le nom du champ nb_places
Après, y a peut être d'autres problèmes, mais faute de plus d'information, j'ai pas cherché...
$requete = "UPDATE `corrida` set `nb_places`= `nb_places` - $nb_reservees";