PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 26-07-2010 11:53:44

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

limit de select by rand en fonction d'une variable

bonjour à tous smile!

j'ai une table "jeux" et je dois effectuer le tirage au sort des gagnant en fonction du nombre de gagnants indiqué pour chaque jeu.
J'effectue donc un select aléatoire dans une bdd. jusque là, tout va bien.
Là où je coince, c'est que le nombre de sélection dépend du nombre de gagnant que je dois avoir et je ne sais pas le syntaxer.

pour l'instant, j'ai donc un bouton pour chaque nombre de gagnants, mais je suis sûre que l'on peut alléger tout ça:

<?php
$query="SELECT * FROM jeux WHERE id='$id'";
$result=MYSQL_QUERY($query) or die("Erreur de lecture dans la table jeux");

while($row=MYSQL_FETCH_ROW($result))
  {
?>
<br/><br/>
<h1 align="center">Générer les résultats</h1>
<br/>
<?php if(!empty($msg)): ?>
<p align="center"><b><?php echo stripslashes($msg); ?></b></p>
    <?php
    unset($msg);
    endif; ?>
    <table border="0" align="center" cellpadding="5" cellspacing="5">
  <tr>
    <td colspan="2">Le Jeu <?php echo $row[1]; ?>
    <br/><?php echo $row[2]; ?> en partenariat avec <?php echo $row[3]; ?><br/><br/>
    Qui commence le <?php echo $row[4]; ?> et fini le <?php echo $row[5]; ?><br/>
    doit avoir  <?php echo $row[6]; ?> gagnants
   
   
    </td>
    </tr>
  <tr>
    <td colspan="2"><div align="center"><a href="javascript:if(confirm('vous allez tirer au sort le gagnant pour le jeu "<?php echo $row[1]; ?>" ?')) document.location.replace('resultats.php3?id=<?php echo $row[0]; ?>&action=tirage1');"></a><a href="javascript:if(confirm('vous allez tirer au sort le gagnant pour le jeu "<?php echo $row[1]; ?>" ?')) document.location.replace('resultats.php3?id=<?php echo $row[0]; ?>&action=tirage1');">
      <input type="submit" name="Tirage1" id="Tirage1" value="1 gagnant" />
    </a><a href="javascript:if(confirm('vous allez tirer au sort 2 gagnants pour le jeu "<?php echo $row[1]; ?>" ?')) document.location.replace('resultats.php3?id=<?php echo $row[0]; ?>&action=tirage2');"> <input type="submit" name="Tirage2" id="Tirage2" value="2 gagnants" /></a>
     <a href="javascript:if(confirm('vous allez tirer au sort 3 gagnants pour le jeu "<?php echo $row[1]; ?>" ?')) document.location.replace('resultats.php3?id=<?php echo $row[0]; ?>&action=tirage3');"> <input type="submit" name="Tirage3" id="Tirage2" value="3 gagnants" /></a>
     <a href="javascript:if(confirm('vous allez tirer au sort 4 gagnants pour le jeu "<?php echo $row[1]; ?>" ?')) document.location.replace('resultats.php3?id=<?php echo $row[0]; ?>&action=tirage4');"> <input type="submit" name="Tirage4" id="Tirage2" value="4 gagnants" /></a>
    </div></td>
    </tr>
  <tr>
    <td colspan="2"><?php if($action == "tirage1" && $auth[2] == 1)
  {
    $query="SELECT * FROM utilisateurs order by rand() limit 1 ";
$essai=MYSQL_QUERY($query) or die("Erreur de lecture dans la table utilisateurs");?>
<table border="2" align="center" cellpadding="5" cellspacing="5">
  <tr>
    <td colspan="3"><h1>Le gagnant est</h1></td>
    </tr>
  <tr>
      <td><div align="left">Nom</div></td>
      <td><div align="left">Prénom</div></td>
      <td><div align="left">E-mail</div></td>
  </tr>
  <?php while($row=MYSQL_FETCH_ROW($essai))
  {
?>
  <tr>
      <td><div align="left"><?php echo $row[2]; ?></div></td>
      <td><div align="left"><?php echo $row[1]; ?></div></td>
      <td><div align="left"><a href="winmail.php3?email=<?php echo $row[4]; ?>" title="Envoyer un mail à <?php echo htmlentities("$row[1] $row[2]"); ?>"><?php echo $row[4]; ?></a></div></td>
  </tr>
  <?php }  ?>
</table>
<?php
  } ?>

<?php if($action == "tirage2" && $auth[2] == 1)
  {
    $query="SELECT * FROM utilisateurs order by rand() limit 2 ";
$essai=MYSQL_QUERY($query) or die("Erreur de lecture dans la table utilisateurs");
?><table border="3" align="right" cellpadding="5" cellspacing="5">
  <tr>
    <td colspan="3"><h1>Les gagnants sont</h1></td>
    </tr>
  <tr>
    <td><div align="left">Nom</div></td>
    <td><div align="left">Prénom</div></td>
   <td><div align="left">E-mail</div></td>
  </tr>
  <?php while($row=MYSQL_FETCH_ROW($essai))
  {
?>
  <tr>
    <td><div align="left"><?php echo $row[2]; ?></div></td>
    <td><div align="left"><?php echo $row[1]; ?></div></td>
    <td><div align="left"><a href="winmail.php3?email=<?php echo $row[4]; ?>" title="Envoyer un mail à <?php echo htmlentities("$row[1] $row[2]"); ?>"><?php echo $row[4]; ?></a></div></td>
 </tr>
  <?php }  ?>
</table>
<?php
  } ?>

<?php if($action == "tirage3" && $auth[2] == 1)
  {
    $query="SELECT * FROM utilisateurs order by rand() limit 3 ";
$essai=MYSQL_QUERY($query) or die("Erreur de lecture dans la table utilisateurs");?>
<table border="2" align="center" cellpadding="5" cellspacing="5">
  <tr>
    <td colspan="3"><h1>Les gagnants sont</h1></td>
    </tr>
  <tr>
      <td><div align="left">Nom</div></td>
      <td><div align="left">Prénom</div></td>
      <td><div align="left">E-mail</div></td>
  </tr>
  <?php while($row=MYSQL_FETCH_ROW($essai))
  {
?>
  <tr>
      <td><div align="left"><?php echo $row[2]; ?></div></td>
      <td><div align="left"><?php echo $row[1]; ?></div></td>
      <td><div align="left"><a href="winmail.php3?email=<?php echo $row[4]; ?>" title="Envoyer un mail à <?php echo htmlentities("$row[1] $row[2]"); ?>"><?php echo $row[4]; ?></a></div></td>
 </tr>
  <?php }  ?>
</table>
<?php
  } ?>


<?php if($action == "tirage4" && $auth[2] == 1)
  {
    $query="SELECT * FROM utilisateurs order by rand() limit 4 ";
$essai=MYSQL_QUERY($query) or die("Erreur de lecture dans la table utilisateurs"); ?>

<table border="2" align="center" cellpadding="5" cellspacing="5">
  <tr>
    <td colspan="3"><h1>Les gagnants sont</h1></td>
    </tr>
  <tr>
      <td><div align="left">Nom</div></td>
      <td><div align="left">Prénom</div></td>
      <td><div align="left">E-mail</div></td>
  </tr>
  <?php while($row=MYSQL_FETCH_ROW($essai))
  {
?>
  <tr>
      <td><div align="left"><?php echo $row[2]; ?></div></td>
      <td><div align="left"><?php echo $row[1]; ?></div></td>
      <td><div align="left"><a href="winmail.php3?email=<?php echo $row[4]; ?>" title="Envoyer un mail à <?php echo htmlentities("$row[1] $row[2]"); ?>"><?php echo $row[4]; ?></a></div></td>
</tr>
  <?php }  ?>
</table>
<?php
  } ?>

 
</td>

d'autre part, mon message de confirmation s'affiche 2 fois sad

un petit coup de main est bienvenu

Hors ligne

#2 26-07-2010 12:54:46

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : limit de select by rand en fonction d'une variable

Tu peux faire ainsi :
url.php?action=tirage&nombre=1
Où nombre est le nombre à tirer.

Et dans ta requête :

$req = "SELECT * FROM utilisateurs order by rand() limit '{$_GET['nombre']}';"

Hors ligne

#3 26-07-2010 20:16:25

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : limit de select by rand en fonction d'une variable

Saluton,
Et, bien entendu, on lira ce vieux billet de Fred.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#4 28-07-2010 07:19:18

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : limit de select by rand en fonction d'une variable

coucou,
merci du coup de main, je teste ça et je vous dit ce que ça donne  smile

Hors ligne

#5 28-07-2010 07:48:53

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : limit de select by rand en fonction d'une variable

re,

   

 <a href="<?php resultats.php3?action=tirage&nombre=1 ?>">

me donne un

Parse error: syntax error, unexpected '='

PS: merci fred, je prends note smile je n'ai pas codé depuis un certain temps !  Ça va trop vite !!

Dernière modification par allhambra (28-07-2010 07:50:02)

Hors ligne

#6 28-07-2010 08:16:52

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : limit de select by rand en fonction d'une variable

Il te manque une fonction d'affichage : echo, printf, print, ect

Hors ligne

#7 28-07-2010 08:48:21

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : limit de select by rand en fonction d'une variable

tu veux dire un echo de nombre ???
car $nombre =$row[6]; dans tout les cas !

Hors ligne

#8 28-07-2010 12:39:12

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : limit de select by rand en fonction d'une variable

Non un echo de la chaîne de caractère dans ton lien.
resultats.php3 n'est pas une commande php, de là provient l'erreur signalée.

Hors ligne

#9 28-07-2010 14:28:51

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : limit de select by rand en fonction d'une variable

quelle quiche big_smile

j'ai rectifié comme suit

<a href="javascript:if(confirm('vous allez tirer au sort le gagnant pour le jeu "<?php echo $row[1]; ?>" ?')) document.location.replace('resultats.php3?id=<?php echo $row[0]; ?>action=tirage&nombre=<?php echo $row[6];?>"><input type="submit" name="Tirage" id="Tirage" value="Tirer" /></a>

couplé avec

if($action == "tirage" && $auth[2] == 1)
  {
   
   
$query = "SELECT * FROM utilisateurs order by rand() limit '{$_GET['nombre']}';"

  //$query="SELECT * FROM utilisateurs order by rand() limit 1 ";
$essai=MYSQL_QUERY($query) or die("Erreur de lecture dans la table utilisateurs");

?>
<table border="2" align="center" cellpadding="5" cellspacing="5">
  <tr>
    <td colspan="3"><h1>Le gagnant est</h1></td>
    </tr>
  <tr>
      <td><div align="left">Nom</div></td>
      <td><div align="left">Prénom</div></td>
      <td><div align="left">E-mail</div></td>
  </tr>
  <?php while($row=MYSQL_FETCH_ROW($essai))
  {
?>
  <tr>
      <td><div align="left"><?php echo $row[2]; ?></div></td>
      <td><div align="left"><?php echo $row[1]; ?></div></td>
      <td><div align="left"><a href="winmail.php3?email=<?php echo $row[4]; ?>" title="Envoyer un mail à <?php echo htmlentities("$row[1] $row[2]"); ?>"><?php echo $row[4]; ?></a></div></td>
  </tr>
  <?php }  ?>
</table>
<?php
  } ?> 
<?php

ce qui me vaut un beau
Parse error: syntax error, unexpected T_VARIABLE in resultats.php3  on line 65

$essai=MYSQL_QUERY($query) or die("Erreur de lecture dans la table utilisateurs");

Dernière modification par allhambra (28-07-2010 14:29:50)

Hors ligne

#10 28-07-2010 15:10:20

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : limit de select by rand en fonction d'une variable

Un point virgule oublié à la fin de la définition de la variable $query...

Hors ligne

#11 28-07-2010 15:45:22

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : limit de select by rand en fonction d'une variable

oh là là, vivement que je sois au bout, à coder toute la journée, j'ai les neurones qui fondent.

Merci de votre aide

Hors ligne

Pied de page des forums