Limiter les inscriptions [Résolu]

Signaler
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
-
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
-
Bonjour,

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

--

4 réponses

Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
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
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
2
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.

--
Messages postés
29574
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
337
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'


Messages postés
29574
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
337 >
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016

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...
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
2 >
Messages postés
29574
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020

exactement, mais dès que j’exécute il ne connais plus les valeurs du Tab1 "modul"
Messages postés
29574
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
337 >
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016

Si tu ne nous montre pas le code que tu as écris. ... personne ne pourra t'aider à trouver ton erreur. .....
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
2 >
Messages postés
29574
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020

<?Php
$ref_conf='ref_conf';
$sql=mysql_query("SELECT COUNT(ref_user) as NB FROM inscrits WHERE ref_conf='$ref_conf'");
while($lign=mysql_fetch_array($sql)){

if ($ref_conf<6){
echo 'Conférence ouverte.';
}else{
echo 'Conférence fermée.';
}?>
<a href="ver_for.php?ref_conf=<?Php print($lign['ref_conf']);?>&them_conf=<?Php print($lign['them_conf'])?>&date_conf=<?Php print($lign['date_conf']);?>"><?Php print($lign['them_conf'])?></a><br>
<?Php }?>
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
J ai pas testé mais tu as essayé de mettre


<a href="ver_for.php?ref_conf=<?Php print($lign['ref_conf']);?>&them_conf=<?Php print($lign['them_conf'])?>&date_conf=<?Php print($lign['date_conf']);?>"><?Php print($lign['them_conf'])?></a><br>


dans ton if si la conférence est ouverte ... ensuite, faire :

$ref_conf='ref_conf';
puis
if ($ref_conf<6)


et fair un
select count(*)
suivit d'un
while( ... mysql_fetch_array


.... soit il manque une bonne partie du code, soit tu t'es complètement embrouillé...


edit: j ajouterai aussi qu avant tu parlais de <block> Tab1 dans Modul</code> que je ne vois pas ici. Je rajouterai aussi que tu essaye de récuperer des valeurs :
$lign['ref_conf']
$lign['them_conf']
etc.

alors que tu fais un fetch sur un count ...
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
2
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.
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
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
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Statut
Membre
Dernière intervention
25 février 2016
2
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>";
 }
}