Limiter les inscriptions [Résolu]

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

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

--
Afficher la suite 

Votre réponse

4 réponses

Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Dernière intervention
29 août 2018
0
Merci
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
Commenter la réponse de nagaD.scar
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Dernière intervention
25 février 2016
0
Merci
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.

--
Commenter la réponse de cs_Homeros
Messages postés
23615
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
0
Merci
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'


jordane45
Messages postés
23615
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
> cs_Homeros
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
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...
cs_Homeros
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Dernière intervention
25 février 2016
> jordane45
Messages postés
23615
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
exactement, mais dès que j’exécute il ne connais plus les valeurs du Tab1 "modul"
jordane45
Messages postés
23615
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
> cs_Homeros
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
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. .....
cs_Homeros
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Dernière intervention
25 février 2016
> jordane45
Messages postés
23615
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
<?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 }?>
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Dernière intervention
29 août 2018
-
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 ...
Commenter la réponse de jordane45
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Dernière intervention
25 février 2016
0
Merci
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.
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Dernière intervention
29 août 2018
-
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
cs_Homeros
Messages postés
53
Date d'inscription
dimanche 24 juin 2007
Dernière intervention
25 février 2016
-
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>";
 }
}
Commenter la réponse de cs_Homeros

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.