[Résolu] Problème de SQL
Dernière réponse : dans Programmation
Je voudrais réaliser un QCM simple.
Pour cela j'ai créer un formulaire avec 4 questions pour commencer.
L'utilisateur répond en cochant les boutons radio et clique sur envoyer.
Ce qui renvois vers cette page , qui insère ces réponses dans une table :
if (isset($_POST['NomIG']) AND isset($_POST['q1']) AND isset($_POST['q2']) AND isset($_POST['q3']) and isset($_POST['q4']) ) // Si les variables existent
{
if ($_POST['NomIG'] != NULL AND $_POST['q1'] != NULL AND $_POST['q2'] != NULL and $_POST['q3'] != NULL AND $_POST['q4'] != NULL ) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "***", "******");
mysql_select_db("maclem");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$NomIG = mysql_real_escape_string(htmlspecialchars($_POST['NomIG']));
$q1 = mysql_real_escape_string(htmlspecialchars($_POST['q1']));
$q2= mysql_real_escape_string(htmlspecialchars($_POST['q2']));
$q3= mysql_real_escape_string(htmlspecialchars($_POST['q3']));
$q4 = mysql_real_escape_string(htmlspecialchars($_POST['q4']));
// Ensuite on enregistre les réponses
mysql_query("INSERT INTO `qcm` ( `id` ,`NomIG`, `q1` , `q2` , `q3` , `q4` )
VALUES('','$NomIG','$q1', '$q2', '$q3', '$q4')");
// On se déconnecte de MySQL
mysql_close();
}
}?>
Une fois fais, l'utilisateur clique sur "vérification de vos réponses", ce qui renvoi vers cette page de traitement :
mysql_connect("localhost", "******", "******"); // Connexion à MySQL
mysql_select_db("maclem"); // Sélection de la base coursphp
$reponse = mysql_query("SELECT q1,q2,q3,q4 FROM qcm WHERE id=’?’ "); // Requête SQL
if ($q1==2 and $q2==2 and $q3==3 and $q4==1)
{
echo "Vous avez bien répondu aux questions, pour continuer votre inscription : <a href=\"Inscriptionserveur.php\">Cliquez ici</a>";
}
else
{
echo "Vous avez eu au moins faux à une des questions, vous devez recommencez le QCM, vous avez 3 essais par jour!";
}
// On se déconnecte de MySQL
mysql_close();
?>
Voici mon problème :
En faisant des tests j'ai mis la valeur de l'id à 1 (?) ce qui correspond à un QCM sans faute, déjà ici j'ai un soucis car il m'affiche toujours la 2éme condition : "Vous avez eu au moins faux à une des questions, vous devez recommencez le QCM, vous avez 3 essais par jour!".
Mon objectif :
Je voudrais lors qu'un utilisateur valide le QCM, que ces réponses soient vérifiez, c'est à dire que au lieu de mettre un numéro d'id, que le SQL prend la valeur des réponses de la dernière ID ou celle de l'utilisateur.
Pour cela j'ai pensé à ça mais je ne pense pas que sa fonctionne :
La variable $NomIG est demandé au formulaire de départ.
Merci de bien vouloir m'aider....je ne suis pas un pro en php...
Si vous voulez voir concrètement voici le QCM : http://maclem.dixkey.com/Qcmserveur.php
Pour cela j'ai créer un formulaire avec 4 questions pour commencer.
L'utilisateur répond en cochant les boutons radio et clique sur envoyer.
Ce qui renvois vers cette page , qui insère ces réponses dans une table :
Citation :
<?phpif (isset($_POST['NomIG']) AND isset($_POST['q1']) AND isset($_POST['q2']) AND isset($_POST['q3']) and isset($_POST['q4']) ) // Si les variables existent
{
if ($_POST['NomIG'] != NULL AND $_POST['q1'] != NULL AND $_POST['q2'] != NULL and $_POST['q3'] != NULL AND $_POST['q4'] != NULL ) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "***", "******");
mysql_select_db("maclem");
// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$NomIG = mysql_real_escape_string(htmlspecialchars($_POST['NomIG']));
$q1 = mysql_real_escape_string(htmlspecialchars($_POST['q1']));
$q2= mysql_real_escape_string(htmlspecialchars($_POST['q2']));
$q3= mysql_real_escape_string(htmlspecialchars($_POST['q3']));
$q4 = mysql_real_escape_string(htmlspecialchars($_POST['q4']));
// Ensuite on enregistre les réponses
mysql_query("INSERT INTO `qcm` ( `id` ,`NomIG`, `q1` , `q2` , `q3` , `q4` )
VALUES('','$NomIG','$q1', '$q2', '$q3', '$q4')");
// On se déconnecte de MySQL
mysql_close();
}
}?>
Une fois fais, l'utilisateur clique sur "vérification de vos réponses", ce qui renvoi vers cette page de traitement :
Citation :
<?phpmysql_connect("localhost", "******", "******"); // Connexion à MySQL
mysql_select_db("maclem"); // Sélection de la base coursphp
$reponse = mysql_query("SELECT q1,q2,q3,q4 FROM qcm WHERE id=’?’ "); // Requête SQL
if ($q1==2 and $q2==2 and $q3==3 and $q4==1)
{
echo "Vous avez bien répondu aux questions, pour continuer votre inscription : <a href=\"Inscriptionserveur.php\">Cliquez ici</a>";
}
else
{
echo "Vous avez eu au moins faux à une des questions, vous devez recommencez le QCM, vous avez 3 essais par jour!";
}
// On se déconnecte de MySQL
mysql_close();
?>
Voici mon problème :
En faisant des tests j'ai mis la valeur de l'id à 1 (?) ce qui correspond à un QCM sans faute, déjà ici j'ai un soucis car il m'affiche toujours la 2éme condition : "Vous avez eu au moins faux à une des questions, vous devez recommencez le QCM, vous avez 3 essais par jour!".
Mon objectif :
Je voudrais lors qu'un utilisateur valide le QCM, que ces réponses soient vérifiez, c'est à dire que au lieu de mettre un numéro d'id, que le SQL prend la valeur des réponses de la dernière ID ou celle de l'utilisateur.
Pour cela j'ai pensé à ça mais je ne pense pas que sa fonctionne :
Citation :
$reponse = mysql_query("SELECT q1,q2,q3,q4 FROM qcm WHERE id=’$NomIG’ ")La variable $NomIG est demandé au formulaire de départ.
Merci de bien vouloir m'aider....je ne suis pas un pro en php...
Si vous voulez voir concrètement voici le QCM : http://maclem.dixkey.com/Qcmserveur.php
Autres pages sur : resolu probleme sql
Lassé par la pub ? Créez un compte
Bonjours alors, déjà dans la premier page rajoute des else , pour voir si c'est pas un de t'es if qui plante !
dans la deuxieme page remplace
$reponse = mysql_query("SELECT q1,q2,q3,q4 FROM qcm WHERE id=’?’ " );
par
$reponse = mysql_query("SELECT * FROM qcm " );
enfin j'ai pas très bien compris ce que tu voler faire !
tu veux faire un Qcm , et si l'utilisateur a tous juste alors il peut s'inscrire ?
Je comprend pas pourquoi tu envoi les dans la base de donner !
dans la deuxieme page remplace
$reponse = mysql_query("SELECT q1,q2,q3,q4 FROM qcm WHERE id=’?’ " );
par
$reponse = mysql_query("SELECT * FROM qcm " );
enfin j'ai pas très bien compris ce que tu voler faire !
tu veux faire un Qcm , et si l'utilisateur a tous juste alors il peut s'inscrire ?
Je comprend pas pourquoi tu envoi les dans la base de donner !
Citation :
Tu veux faire un QCM , et si l'utilisateur a tous juste alors il peut s'inscrire ? Oui c'est tous a fait ce que je veux faire.
Citation :
Je comprend pas pourquoi tu envoi les dans la base de donner !Je ne savais pas trop comment faire, sinon oui je pense qu'en une seul fois je peux comparais directement les variables.
Voilà plus précisément ce que je veux faire:
Si l'utilisateur veux s'inscrire sur le serveur, il passe par le QCM, si il a une faute il doit recommencer au bout de la 3éme fois il ne peux plus le repasser il doit attendre le lendemain (je sais pas comment faire peut être en utilisant un système avec les adresses IP ou autre car, beaucoup on des adresse dynamique).Si il a aucune faute, sont inscription est validé.
J'ai retiré le "WHERE..." ca ne fonctionne pas.
ta pas besoin d'avoir de table mysql pour le formulaire avant l'inscription !
tu fais une page avec ton formulaire de verification si l'utilisateur n'est pas otist !
et sur la page de ton formulaire d'inscription tu mais un code du genre :
bon faux adapter et corriger les bêtise que j'ai mie , mais c'est un truc du genre !
tu fais une page avec ton formulaire de verification si l'utilisateur n'est pas otist !
et sur la page de ton formulaire d'inscription tu mais un code du genre :
if (isset($_POST['q1']) AND isset($_POST['q2']) . . . ) // Si les variables existe { $q1 = $_POST[q1']; $q1 = $_POST[q1']; $q1 = $_POST[q1']; $q1 = $_POST[q1']; } else // Les variables n'existe pas encore { header('Location: page avec le forumaire'); } if (q1==q2==q3==q4){ ?> ICI TA PAGE AVEC TON CODE POUR LE FORMULAIR D'INSCRIPTION <?php } else{ ?> JE SUIS UN OTIST ! !! ! <?php } ?>
bon faux adapter et corriger les bêtise que j'ai mie , mais c'est un truc du genre !
C'est bon ton code fonctionne, merci beaucoup.
Maintenant au niveau du système que l'utilisateur ne peux pas refaire le qcm au bout de 3 fois, tu aurais une idée?
Avec l'adresse IP sa serais pas mal, mais je ne sais pas comment faire pour enregistrer l'ip de l'utilisateur dans ma base de donnée.
J'ai trouvé ce code :
function get_ip(){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}
elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
$ip = $_SERVER['HTTP_CLIENT_IP'];}
else{ $ip = $_SERVER['REMOTE_ADDR'];}
return $ip;}$ip = get_ip();
$hst = $_SERVER["HTTP_HOST"];
$uri = $_SERVER["REQUEST_URI"];
$br = $_SERVER["HTTP_USER_AGENT"];
?>
Quel est la variable qui contient l'adresse ip des visiteurs? $ip?
Maintenant au niveau du système que l'utilisateur ne peux pas refaire le qcm au bout de 3 fois, tu aurais une idée?
Avec l'adresse IP sa serais pas mal, mais je ne sais pas comment faire pour enregistrer l'ip de l'utilisateur dans ma base de donnée.
J'ai trouvé ce code :
Citation :
<? function get_ip(){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}
elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
$ip = $_SERVER['HTTP_CLIENT_IP'];}
else{ $ip = $_SERVER['REMOTE_ADDR'];}
return $ip;}$ip = get_ip();
$hst = $_SERVER["HTTP_HOST"];
$uri = $_SERVER["REQUEST_URI"];
$br = $_SERVER["HTTP_USER_AGENT"];
?>
Quel est la variable qui contient l'adresse ip des visiteurs? $ip?
je sais pas , je n'est jamais eu besoin d'avoir l'ip de mais utilisateur , je suis seulement amateur , et je connais que ce que j'ai eu besoin d'utilisee ^^
mais a ta place j'éviterais d'enregistrer des ip dans une base de donner , juste pour un formulaire avant inscription!
regarde du coter des cookis mais , sur ce point je peut pas trop t'aider ! ! !
mais a ta place j'éviterais d'enregistrer des ip dans une base de donner , juste pour un formulaire avant inscription!
regarde du coter des cookis mais , sur ce point je peut pas trop t'aider ! ! !
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forum[RESOLU] Aide sur exo SQL ! SVP :)
- SolutionsProblème SQL
- Forum[Résolu] Pb de date avec requête SQL access
- ForumInsérer image dans B. de Données sql avec VBasic 2008 expres(Résolu)
- Forum[résolu]Syntaxe requête sql
- Forum[Résolu] Requete SQL sur tous les enregistrements sauf 1 ?
- Forumpb Import tableau Excel dans SQL [Résolu]
- Forumerreur SQL [ résolu ]
- ForumExécution à la chaine Insert into (Sql) [Résolu]
- Voir plus