Tout baigne à part une erreur en appelant ma page prepaquestions.php qui m'annonce :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by rand() limit 3' at line 1
Pourtant tout mon code marche très bien chez FREE et je n'ai pas changé la syntaxe de mon ORDER BY RAND...
J'ai un serveur INFOMANIAK qui annonce :
# Version du serveur: 5.0.45-log
# Version du protocole: 10
# Serveur: mysql.questarquiz.fr via TCP/IP
# Utilisateur: xxxxx.infomaniak.ch
Et un serveur FREE qui annonce :
# Version du serveur: 5.0.45
# Version du protocole: 10
# Serveur: ludiquest.sql.free.fr via TCP/IP
# Utilisateur: xxxxx@ip_adress
D'où vient le pb d'après vous? C'est quoi la version 5.0.45-log avec le log?? Merci d'avance.
<?php
/*******************************PREPAQUESTIONS
Passer dans l'URL : ?nomqcm=art1 par exemple
Ce fichier attend de recevoir l'id du fichier QCM choisi par le joueur.
Il génére alors un tirage de 20 questions à partir de la table QCM et les enregistre dans le fichier Question du joueur actif.
Le numéro de la question active est mis à jour dans la table du joueur.
http://localhost/Projet%20SITE%20LUDIQUEST/Sources%20PHP/QuestarOnline/prepaquestions.php?pseudo=speccy&id=5
*****************************************************/
session_start();
//recupère le nom du qcm choisi par le joueur
$idqcm=$_GET["id"];
$pseudo=$HTTP_GET_VARS["pseudo"];
//ouvre la base de données
include("donneesconnection.php");
//on vérifie s'il faut un VISA et si le joueur en a un
$rq="SELECT VISAACTIF, NBPASS,modedejeu FROM membres where pseudo='$pseudo'";
$resultat=mysql_query($rq) or die(mysql_error());
$donneesjoueur = mysql_fetch_array($resultat);
$modedejeu=$donneesjoueur['modedejeu'];
// ouvre la table de liste des QCM et vérifie si un PASS est nécessaire pour jouer
$rq="SELECT PASSNEEDED,nomtableqcm FROM listeqcm where idqcm='$idqcm'";
$resultat=mysql_query($rq) or die(mysql_error());
$donneesqcm = mysql_fetch_array($resultat);
//s'il faut un pass et que le nombre de pass du joueur est égal à zéro alors lui indique que c'est impossible
$nomqcm=$donneesqcm['nomtableqcm'];
if ($donneesqcm['PASSNEEDED']>0 and $donneesjoueur['NBPASS']==0)
{
echo("impossible de jouer ; ce QCM nécessite un PASS.");
}
else
{
//si le mode de jeu est Questar GALAXIE et qu'il n'a pas au moins un VISA pour le mois alors on affiche le message
if ($modedejeu=="1" and $donneesjoueur['VISAACTIF']<0)
{
echo("le joueur ".$pseudo." n'a pas de VISA actif pour ce mois");
}
else
{
// sinon on continue à préparer le QCM
//on récupère le nombre de questions à poser dans la table CONFIG
$rq="SELECT nbquestionsposees FROM config";
$resultat=mysql_query($rq) or die(mysql_error());
$donneesconfig = mysql_fetch_array($resultat);
$nbq=$donneesconfig['nbquestionsposees'];
//choisit X enregistrements au hasard dans la table choisie
$rq="SELECT * FROM ".$nomqcm." order by rand() limit ".$nbq;
$resultat=mysql_query($rq) or die(mysql_error());
//on génére la table du joueur pour ce QCM si la table n'existe pas
$nomtable=$pseudo.'qcm';
$requete ="CREATE TABLE IF NOT EXISTS ".$nomtable."
(
`idquest` mediumint(9) NOT NULL,
`question` char(200) collate latin1_general_ci default NULL,
`rep1` char(125) collate latin1_general_ci default NULL,
`rep2` char(125) collate latin1_general_ci default NULL,
`rep3` char(125) collate latin1_general_ci default NULL,
`numreponse` tinyint(4) default NULL,
`commentaire` char(200) collate latin1_general_ci default NULL,
`mediafile` char(12) collate latin1_general_ci default NULL,
`typemediafile` tinyint(4) default NULL,
`auteur` char(13) collate latin1_general_ci default NULL,
`tempsreponse` mediumint(9) default NULL,
`scorereponse` mediumint(9) default NULL,
PRIMARY KEY (`idquest`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;";
$resultat=mysql_query($requete) or die(mysql_error());
//on efface les enregistrements de la table dans lecas où elle serait pleine
$requete ="TRUNCATE TABLE `$nomtable`";
$resultat=mysql_query($requete) or die(mysql_error());
//on rempli la table du joueur avec les XX questions choisies au hasard
$requete="INSERT INTO ".$nomtable." (idquest,question,rep1,rep2,rep3,numreponse,commentaire,mediafile,auteur) SELECT idquest,question,rep1,rep2,rep3,numreponse,commentaire,mediafile,auteur FROM ".$nomqcm." order by rand() limit ".$nbq;
echo($requete);
$resultat=mysql_query($requete) or die(mysql_error());
//on initialise le FLAG questionactive à 0 pour ce joueur eton mémorise le nom de la table du QCM qui va etre joué
$requete="UPDATE membres SET questionactive=0,nomqcmjoue='$nomqcm' WHERE pseudo='$pseudo'";
$resultat=mysql_query($requete) or die(mysql_error());
//on retourne à FLASH avec la variable PHPFINI à OK et on lance QCM.swf
$phpfini="ok";
//$url='http://localhost/Projet%20SITE%20LUDIQUEST/Sources%20PHP/QuestarOnline/QCM4.swf?nomjoueur='.$pseudo.'&nomqcm='.$nomqcm;
$url='http://xxxxx.fr/QCM4.swf?nomjoueur='.$pseudo.'&nomqcm='.$nomqcm;
//$url='QCM4.swf?nomjoueur='.$pseudo.'&nomqcm='.$nomqcm;
//$url='QCM4.swf?nomjoueur='.$pseudo.'&nomqcm='.$nomqcm;
//header("location:".$url);
echo"<META http-equiv=\"refresh\" content=\"0; URL=".$url."\">";
mysql_close();
}
}
?>