Ticket à gratter ça cloche !

Fermé
YannOuch - 11 juin 2011 à 11:38
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 11 juin 2011 à 23:31
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

Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 juin 2011 à 19:35
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
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
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 117
11 juin 2011 à 23:31
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