Limiter les inscriptions [Résolu]

cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention - 23 févr. 2016 à 15:21 - Dernière réponse : cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention
- 25 févr. 2016 à 11:18
Bonjour,

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

--
Afficher la suite 

Votre réponse

14 réponses

nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 23 févr. 2016 à 16:00
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
cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention - Modifié par cs_Homeros le 23/02/2016 à 17:21
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
jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 23 févr. 2016 à 21:59
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 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention > cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention - 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...
cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention > jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 24 févr. 2016 à 16:36
exactement, mais dès que j’exécute il ne connais plus les valeurs du Tab1 "modul"
jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention > cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention - 24 févr. 2016 à 16:43
Si tu ne nous montre pas le code que tu as écris. ... personne ne pourra t'aider à trouver ton erreur. .....
cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention > jordane45 22944 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 24 févr. 2016 à 17:22
<?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 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 24 févr. 2016 à 17:28
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
cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention - 24 févr. 2016 à 18:02
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 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 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
cs_Homeros 53 Messages postés dimanche 24 juin 2007Date d'inscription 25 février 2016 Dernière intervention - 25 févr. 2016 à 11:18
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.