Limiter les inscriptions

Résolu
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 - Modifié par cs_Homeros le 23/02/2016 à 15:44
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 - 25 févr. 2016 à 11:18
Bonjour,

Je veux limiter le nombre des inscription à 40 personnes par module.

--

4 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
23 févr. 2016 à 16:00
Salut,

Il faut donc mettre une limite a 40.

Pour une réponse précise, merci de poser une question précise (environnement/langages utilisés, ce que tu as fais etc.)

naga
0
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 2
Modifié par cs_Homeros le 23/02/2016 à 17:21
j'ai 3 pages

Page 1 : affichage du modules existant sur la table "module"
<?Php
$mod="select * from modul";
$result=mysql_query($mod);
while($lign=mysql_fetch_array($result)){
?>
<a href="inscription.php?ref_mod=<?Php print($lign['ref_mod']);?>&them_mod=<?Php print($lign['them_mod'])?>&date_mod=<?Php print($lign['date_mod']);?>"><?Php print($lign['them_mod'])?></a>
<?Php }?>


Page 2 : une formulaire d'inscription en récupérant les valeurs du modul en "input hidden"
<?php 
$ref_mod=$_GET['ref_mod'];
$them_mod=$_GET['them_mod'];
$date_mod=$_GET['date_mod'];
?>


Page 3 : insertion des valeurs de la formulaire vers la tabe "insrits"
<?php
$ref=$_POST['ref'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$ville=$_POST['ville'];
$ref_mod=$_POST['ref_mod'];
$them_mod=$_POST['them_mod'];
$date_mod=$_POST['date_mod'];
$query=mysql_query("INSERT INTO `inscrits` ( `ref` , `nom` , `prenom` , `ville` , `ref_mod` , `them_mod` , `date_mod` ) VALUES ('$ref', '$nom', '$prenom', '$ville', '$ref_mod', '$them_mod', '$date_mod')");
$result = mysql_query($query);
?>


Je suis bloqué au niveau d'arrêter l'inscription au modul 1 dès qu'il atteint les 40 inscriptions.

--
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
23 févr. 2016 à 21:59
Bonjour,

1 - Tu utilises l'ancienne extension Mysql considérée comme obsolète....
Je t'invite à passer à la PDO ou à mysqli

2 - Qu'as tu essayé de faire pour "limiter" ??

A mon avis.. tu dois faire un requête pour compter le nombre d'inscriptions ... et si >=40 alors ne pas permettre l'ajout !
Soit au niveau de la page 1 (ne pas afficher le bouton par exemple)
Soit dans la page 3 ... ne pas faire l' INSERT.
Pour ça tu peux faire une requête du genre :
SELECT COUNT(ref) as NB
FROM  inscrits
WHERE ref_mod = '$ref_mod'


0
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 2
24 févr. 2016 à 09:42
bonjour jordane45,
ce que j’essaye de faire est exactement se que tu as défini au début (de ne pas afficher le bouton au page 1)

merci pour ton aide :)
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344 > cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016
24 févr. 2016 à 10:03
Et donc ?
As tu fais ce que je t'ai indiqué ( la requête select ? ) ?
0
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 2 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
24 févr. 2016 à 10:15
sur quelle page (1;2;3) ?
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344 > cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016
24 févr. 2016 à 10:26
Tu viens de me dire :
<block>
de ne pas afficher le bouton au page 1
</code>
.... donc;.... la requête à ajouter.... ben.... sera sur la page 1...
0
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 2 > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
24 févr. 2016 à 16:36
exactement, mais dès que j’exécute il ne connais plus les valeurs du Tab1 "modul"
0
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 2
24 févr. 2016 à 18:02
dsl chef car j'ai changé les val, mais je n'ai jamais parlé d'un <block>

voila le nouveau code :

$conf="select * from conference";
$result=mysql_query($conf);
while($lign=mysql_fetch_array($result))
{
$inscrits="SELECT COUNT(ref) AS NB FROM inscrits WHERE ref_conf = ".$lign['ref_conf'];
$result2=mysql_query($inscrits);
$lign2=mysql_fetch_array($result2);
if ($lign2['NB']<40)
{
print '<a href=\"ver_for.php?ref_conf='.$lign['ref_conf'];
print '&them_conf='.$lign['them_conf'];
print '&date_conf='.$lign['date_conf'];
print '">';
print $lign['them_conf']."</a><br>";
}
}


sauf que à l'affichage il m'affiche un erreur au dessus de chaque résultat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
un autre chose les liens générer par le code il m'envoyer vers page 2 mais il n'envoie pas la valeur du date_conf.
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
25 févr. 2016 à 09:30
ah oui c'est une balise bbcode , je voulais citer "Tab1 dans Modul" mais ma balise fermante est fausse ^^

Bon sinon, rajoute un test de resultat après l execution d une requête:

if (!$result) {
die('Requête invalide : ' . mysql_error());
}


L'erreur affiché provient d un problème lors de l exécution (pas de connexion bdd, erreur de syntaxe, etc.).

Ensuite deux choses:
- Je te conseil d eviter les "*" dans des select, mieux vaut nommer ( habitudes de codages a prendre, code plus lisible etc et en cas de changement en bdd c est plus simple )
- utilise plutot "mysql_fetch_assoc" que "mysql_fetch_array", question de ressources (et je plussois jordan disant d utiliser plutot mysqli ou pdo, mysql étant obsolète avec les derniere versions de php).


Ensuite pour ton débug, le plus simple est d afficher les valeurs retournées. Pour ca tu peux utiliser
print_r
par exemple, tu pourras contrôler tes résultats.


Je te donnes un exemple, a toi d adapter ^^ :



$omsql = mysqli_connect('0.0.0.0','user', 'pass');

$req="select conference.ref_conf , conference.them_conf , conference.date_conf \n";
$req = $req . "from conference \n";
$req = $req . "JOIN inscrits on inscrits.ref_conf = conference.ref_conf \n";
$req = $req . "GROUP BY conference.ref_conf , conference.them_conf , conference.date_conf\n";
$req = $req . "HAVING COUNT(inscrits.ref) < 40";
foreach ( $omsql->query($req) as $row ) {
print '<a href=\"ver_for.php?ref_conf='.$row['ref_conf'];
print '&them_conf='.$row['them_conf'];
print '&date_conf='.$row['date_conf'];
print '">';
print $row['them_conf']."</a><br>";
}


Pour faire cours, j ai join tes deux requêtes et j ai utilisé un having pour ne récupérer que les conférence avec moins de 40 participant. Ensuite j'ai juste a afficher les conférences retournées.

C'est juste un exemple, là j ai pas de sécurité ni rien qui me permet de contrôler les résultats. (dans ton cas pour tester édite le connect avec les bonnes infos de ta bdd,

naga
0
cs_Homeros Messages postés 53 Date d'inscription dimanche 24 juin 2007 Statut Membre Dernière intervention 25 février 2016 2
Modifié par cs_Homeros le 25/02/2016 à 11:19
Voila le code finale, merci les gars pour votre aide précieux et vos orientations

$conf="select * from conference";
$result=mysql_query($conf);
while($lign=mysql_fetch_array($result))
{
 $inscrits="SELECT COUNT(ref_conf) AS NB FROM inscrits WHERE ref_conf =".$lign['ref_conf'];

 $result2=mysql_query($inscrits);
 $lign2=mysql_fetch_array($result2);
 if ($lign2['NB']<40)
 {
  print '<a href="ver_for.php?ref_conf='.$lign['ref_conf'];
  print '&them_conf='.$lign['them_conf'];
  print '&date_conf='.$lign['date_conf'];
  print '">';
  print $lign['them_conf']."</a><br>";
 }
}
0
Rejoignez-nous