Tom's Guide > Forum > Programmation > [Résolu] Problème de SQL

[Résolu] Problème de SQL

Forum Programmation : [Résolu] Problème de SQL

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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 :

Citation :

<?php
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 :

Citation :

<?php
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 :

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


Message édité par M@cduf le 20-07-2009 à 20:54:14
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Le titre de ce sujet a été édité par SiM07

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

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 !

------------------------------ XD --> peut aussi se dessiner --> XP
Microsoft se fout-il pas ne notre tete avec son XP ???
Répondre à andrelec1

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.


Message édité par M@cduf le 20-07-2009 à 15:28:41
Répondre à M@cduf

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 :

 
Code :
  1. if (isset($_POST['q1']) AND isset($_POST['q2']) . . . ) // Si les variables existe
  2. {
  3.     $q1 = $_POST[q1'];
  4.     $q1 = $_POST[q1'];
  5.     $q1 = $_POST[q1'];
  6.     $q1 = $_POST[q1'];
  7. }
  8. else // Les variables n'existe pas encore
  9. {
  10.     header('Location: page avec le forumaire');
  11. }
  12. if (q1==q2==q3==q4){
  13. ?>
  14. ICI TA PAGE AVEC TON CODE POUR LE FORMULAIR D'INSCRIPTION
  15. <?php
  16. }
  17. else{
  18. ?>
  19. JE SUIS UN OTIST ! !! !
  20. <?php
  21. }
  22. ?>
 

bon faux adapter et corriger les bêtise que j'ai mie , mais c'est un truc du genre !


Message édité par andrelec1 le 20-07-2009 à 15:43:02
------------------------------ XD --> peut aussi se dessiner --> XP
Microsoft se fout-il pas ne notre tete avec son XP ???
Répondre à andrelec1

Ok merci je vais tester ça.

Répondre à M@cduf

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 :

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?


Message édité par M@cduf le 20-07-2009 à 16:57:21
Répondre à M@cduf

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 ! ! !

------------------------------ XD --> peut aussi se dessiner --> XP
Microsoft se fout-il pas ne notre tete avec son XP ???
Répondre à andrelec1
Tom's Guide > Forum > Programmation > [Résolu] Problème de SQL
Aller à :

Il y a 1375 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens