classement par point

Eléphanteau du PHP | 17 Messages

12 oct. 2009, 21:54

Boinsoir,
je suis en train de créer un site de "questions" en ligne pour moi, ma famille et des amis.
Mais j'ai un problème, quand j'ajoute 10 point pour réponse juste et bien ma page affiche un noir.

Voici mon code source:
<?
require("../conf.php3");

// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}

// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link) or die(mysql_error());

// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
	{
	// REDIRECTION PAGE ERREUR
	header("Location:$url_erreur");
	exit;
	}

// LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
$pseudo_membre=mysql_result($requete,0,"pseudo");
	
// DECONNEXION MYSQL	
mysql_close($db_link);
?>
  <link href="CSS.css" type="text/css" rel="stylesheet">
<?php
// Reponse > "Paris"
if (isset($_POST['reponse'])) // Si la variable existe
{
    // On se crée une variable $reponse 
    $reponse = $_POST['reponse'];
}
else // La variable n'existe pas encore
{
    $reponse = ""; // On crée une variable $reponse vide
}
 
if ($reponse == "paris") // Si la reponse est bonne
{
// On affiche la page cachée.
?>
<?php
$reponse = mysql_query("SELECT * FROM point_membre")or die(mysql_error()); //selection de la table et des champs
//on retourne tout ça avec une boucle

mysql_query("UPDATE point_membre = point_membre + 10");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<fieldset>
<legend>Réponse</legend>
<p>Vous avez répondu: <?php echo $_POST['reponse']; ?> <br />
Vous avez <span style="color:red">
<?php 
if ($reponse = "paris");
	{
	echo"Juste";
	}
?>
</span>
<br /><br />
Points gagné : 10
<br />Ton total de points : <?php echo $donnees['point_membre']; ?> 
<br /><br /> 
<a href="question2.php?id=<? echo "$id"; ?>">Question suivante</a>
</fieldset>
<?php
}
?>
<?php
}
else // la reponse n'est pas bonne
{
// On affiche la zone de texte.
?>
Session de <span style="color:red;"><?php echo $pseudo_membre; ?></span> : | <a href="deconnexion.php">Se déconnecté</a>  |  <a href="">Info</a> |<br />
La 1ere question est simple. Quel est la Capitale de la FRANCE?
<form action="" method="post">
<input type="texte" name="reponse"><br /><input type="submit" value="Valider">
</form>
<p>Réponse: <?php echo $_POST['reponse']; ?> <br />
Vous avez <span style="color:red">
<?php 
if ($_POST['reponse'] != "paris");
	{
	echo"faux";
	}
?>
<?php
} // Fin du else
// Fin du code :)
?>

Eléphanteau du PHP | 17 Messages

14 oct. 2009, 15:43

Petit up amical

ViPHP
ViPHP | 2291 Messages

14 oct. 2009, 17:19

Bonjour,
Montre nous la structure de ta table stp.

Ah oui et aussi $id il vient d'ou :?: ou d'ou est t'il senser venir
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 17 Messages

16 oct. 2009, 17:11

$id est in id attribuer au membres pour accéder au pages réservé a ces dernier

ViPHP
ViPHP | 2291 Messages

16 oct. 2009, 17:15

$id est in id attribuer au membres pour accéder au pages réservé a ces dernier
Oui j'avais compris, mais ou l'initialise tu ??
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 17 Messages

16 oct. 2009, 17:20

Ben voici la table
Image


Et pour $id c'est l'id perso des membre afficher dans la barre de lien. c'est un id perso pour chaque membres générer automatiquement.initialiser dans la bdd dans la table membre

ViPHP
ViPHP | 2291 Messages

16 oct. 2009, 17:27

Ben voici la table
Image


Et pour $id c'est l'id perso des membre afficher dans la barre de lien. c'est un id perso pour chaque membres générer automatiquement.initialiser dans la bdd dans la table membre
Ou j'ai compris mais ma question étais ou l'initialise tu la variable $id, et a mon avis nul part :|
Tu devrais avoir quelqe chose du genre en début de page
$id = (isset($_GET['id']) ? $_GET['id'] : null );
Le $_GET['id'] récupère l'id courante
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 17 Messages

16 oct. 2009, 17:35

je comprend se que tu dit, mai cela marche sans :/ et mon problème vient pas de là, puisque c'est depuis que j'ai essayer de faire un classement part points que sa m'affiche une page noir dès que l'on rentre la réponse.

Kran
Invité n'ayant pas de compte PHPfrance

16 oct. 2009, 18:26

Hello,

Tu as plein de problèmes dans ton code...
  • des if mal structurées (";" juste après la condition, donc tu ne passes probablement jamais dans la partie traitement...)
  • des balises ?> suivies immédiatement de <?php (pourquoi sortir du langage côté serveur pour y réentrer immédiatement après ?)
  • des structures if imbriquées qui ont la même condition if($reponse == "paris") (si tu est rentré dans la première, tu sais déja que la condition est vérifiée, pas la peine de tester une deuxième fois...)
  • des if avec un opérateur d'affectation = au lieu de l'opérateur de comparaison == (erreur très fréquente en ce moment je trouve...)
  • ...
Un petit effort d'indentation ne ferait pas de mal non plus pour la lisibilité...

Et j'ai aussi un gros doute sur le respect des normes minimalistes en ce qui concerne le HTML résultant...

Fais déja une première passe la dessus et avec un peu d'chance tu trouveras de toi même ce qui ne va pas !

Eléphanteau du PHP | 17 Messages

16 oct. 2009, 18:42

Maintenant que j'ai changer tout ça C'est la ligne
while ($donnees = mysql_fetch_array($reponse) )
qui bug

Portion de code :
<?php
// Reponse > "Paris"
if (isset($_POST['reponse'])) // Si la variable existe
{
    // On se crée une variable $reponse 
    $reponse = $_POST['reponse'];
}
else // La variable n'existe pas encore
{
    $reponse = ""; // On crée une variable $reponse vide
}
 
if ($reponse == "paris") // Si la reponse est bonne
{
// On affiche la page cachée.

$reponse = mysql_query("SELECT * FROM point_membre")or die(mysql_error()); //selection de la table et des champs
//on retourne tout ça avec une boucle

mysql_query("UPDATE point_membre = point_membre + 10");
while ($donnees = mysql_fetch_array($reponse) )
{
?>

ViPHP
fab
ViPHP | 2657 Messages

16 oct. 2009, 19:26

Oui si tu regardes bien tu as un mysql_close() plus haut, alors que tu tentes d'exécuter des requêtes SQL
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Kran
Invité n'ayant pas de compte PHPfrance

16 oct. 2009, 19:38

Et je ne sais pas si c'est encor le cas, mais dans le code que tu nous a donné en premier lieu, tu testes la variable $response comme si elle contenait encore du texte alors que tu la remplis juste au dessus avec le retour d'un mysql_query ... pas très propre !

ViPHP
fab
ViPHP | 2657 Messages

16 oct. 2009, 19:44

Y a aussi un if foireux

Code : Tout sélectionner

if ($reponse = "paris");
Déjà tu dois pas avoir de ; a la fin mais aussi et surtout le = c'est l'affection et non la comparaison qui est == !
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
ViPHP | 2291 Messages

16 oct. 2009, 19:55

A mon avis il serait plus simple de refaire tout le code
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 17 Messages

16 oct. 2009, 19:59

je suis entrain de refaire le code, mais, une chose me turlupine...
mysql_query("UPDATE point_membre SET point_membre + '10'");
while ($donnees = mysql_fetch_array($reponse) )
est faux n'est ce pas?
en revanche
mysql_query("UPDATE point_membre SET point_membre='10'");
while ($donnees = mysql_fetch_array($reponse) )
est plus juste?