Ticket à gratter ça cloche !

YannOuch -  
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à mettre en place des tickets à gratter sur mon site. Seul hic mon script cloche. Aucun ticket ne s'affiche.

Script que voici :

$sql= mysql_query("SELECT ticketair FROM tickets WHERE ticketair=$tickerair AND gain='$gain'");

function hasard(){
$rand = mt_rand(0,5);
{
if ($rand=0) {
echo
$gain = '<embed>ticket 0</embed>';
}
if($rand=1) {
echo
$gain = 'ticket 1';
}
if($rand=2) {
echo
$gain = 'ticket 2';
}
if($rand=3) {
echo
$gain = 'ticket 3';
}
if($rand=4) {
echo
$gain = 'ticket 4';
}
return $gain;
}
}
?>

<?php echo $gain; ?>


Pourriez-vous m'éclairer sur le sujet ? Merci à vous, Amicalement, Yann.

3 réponses

  1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Salut,

    ticketair=$tickerair
    Si $ticketair n'est pas un nombre alors il faut l'entourer d'apostrophes ou de guillemets.

    if ($rand=0) {
    Vaudra toujours vrai. $rand prendra la valeur 0 et renverra 1.

    De même pour $rand= 1 : $rand vaudra 1 et l'opération renverra 1.

    Pour comparer il faut mettre deux signes = ...
    if($rand==0){

    echo
    $gain = 'ticket 1';

    Que veux-tu faire ? Encore une fois l'opération va renvoyer vrai, et caq revient à écrire
    echo true;

    Tu veux que $gain prenne quelle valeur ? Tu veux afficher quoi ?

    Etc etc.
    0
  2. YannOuch
     
    Bonsoir,
    donc, que je mette les conditions avec if($rand=0,5) ne sert strictement à rien. tout du moins pas comme je l'ai mis ?

    Pour ticketair c'est le ticket lui même. Là ou est donc enregistré l'activité du ticket.

    Quant à l'echo, je veux que si rand = 0 et bien le gain soit le ticket 0 et ainsi de suite jusqu'au ticket 4.

    Je suis peut-être parti dans la mauvaise direction pour mon code. Je vais revoir ça.

    Merci, Amicalement, Yann.
    0
  3. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
     
    Salut,

    Comme tu l'as mis, cela ne sert pas à rien mais ce n'est pas ce que tu souhaites faire. Il faut mettre deux =, comme cela :

    if ($rand==0) {
    
    }

    Et alors cela fonctionnera.

    Pour $ticketair, je ne comprends pas... De quelle type est cette variable ? Nombre ? Texte ? Flux ? Si tu ne sais pas, envoie-nous le bout de code où tu déclares cette variable.

    Tu ne peux pas combiner deux opérations, dumoins pas celles-ci. Tu dois séparer l'affection de la valeur de $gain et l'echo.

    $gain = "ticket 4";
    echo $gain;

    Et ton code fonctionnera.

    Maintenant, il faut avouer que c'est bien long et répétitif : tu peux faire plus simple. Oublie les conditions. Tu as la valeur prise au hasard avec mt_rand :

    $rand = mt_rand(0, 5);
    $gain = "ticket $rand";
    echo $gain;

    C'est déjà plus court, non ?

    Par la suite, attention!, tu te trompes pas mal : ta fonction n'est jamais appelée, $gain n'est pas une superglobale, $gain est utilisé avant sa déclaration.

    Mais tout cela, c'est simplement du PHP lui-même... Où as-tu appris à programmer ?

    function hasard(){
    // Traitement
    return $gain;
    }
    
    $gain = hasard();
    echo $gain;

    Dans ce cas, les deux $gain n'auront pas de lien direct. $gain est dans la fonction hasard(), et y reste. C'est une variable locale, qui appartient à la fonction. Le deuxième $gain est déclaré en dehors de la fonction, et fonctionne comme si le premier n'existait pas.

    J'espère t'avoir aidé. Si tu as des questions, n'hésite pas ;-)
    0