Aller au menu - Aller au contenu

Problème de revalidation d'un challenge.

Aideez-moi ! C'est simple mais je n'ai pas su le faire.

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Offre d'emploi : Développeur Web PHP/Drupal (H/F)

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne Weedy56 # Posté le 04/02/2012 à 19:28:31
Groupe : Bannis

Bonsoir à tous, je veux que quand je valide un challenge je remporte 2 points et quand je le revalide je ne remporte plus +2 points et qu'un message d'erreur affiche " Vous avez déjà validé cette épreuve. "

Source PHP :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php


if($_POST['valid'] == "*") {
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=*', '*', '*', $pdo_options);
    
    // Récupération des 10 derniers messages
    $reponse = $bdd->prepare("UPDATE validation SET points = points + 2 WHERE pseudo = ?");
    $reponse->execute(array($_SESSION['pseudo']));
}

catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
echo "<font color='green' size='3'>Bravo, vous remportez 2 points !</font>";
}
else echo "";

?>



Cordialement.
Publicité # Posté le 04/02/2012 à 19:28:31

Hors ligne Shakkun # Posté le 04/02/2012 à 20:53:56
Avatar

Il faut que tu aies une table qui associe un utilisateur à un challenge quand il l'a réussit. Si il est dedans, alors tu fais pas la mise à jour
Hors ligne IchabOd # Posté le 04/02/2012 à 20:54:28

tu ne peux pas le faire en l'état. Il faut qu'il y ait un champ qui puisse t'indiquer que c'est déjà fait, or là il n'y a rien je pense.

Tu n'as pas de statut dans ton challenge ?

PS : Tu devrais gérer tes membres avec leur ID et pas leur pseudo, car si jamais un jour un user change de pseudo, tu perdras tout son historique à moins d'aller dans tes tables et de modifier dedans toutes les lignes.
Hors ligne Weedy56 # Posté le 04/02/2012 à 21:34:21
Groupe : Bannis

Je suis débutant en développement PHP et es-que tu pourrais m'aider à coder ce truc ?
Hors ligne Shakkun # Posté le 05/02/2012 à 00:01:25
Avatar

C'est pas tellement un problème de php là, mais plutôt de base de donnée
Hors ligne Weedy56 # Posté le 05/02/2012 à 10:37:29
Groupe : Bannis

Et comment faire ?
Hors ligne Shakkun # Posté le 05/02/2012 à 14:33:33
Avatar

Dans ta base de donnée, tu rajoutes une table qui fera la liaison entre un utilisateur et un challenge.

id_utilisateur id_challenge
43 1
78 1


Si lors de validation d'un challenge l'utilisateur est déjà présent dans cette table, tu n'ajoutes pas la ligne, donc pas les points.

Il faudra pour ce faire, il faut mettre ces deux champs rassemblés en une clé primaire, et à la fois clé étrangère de la table des utilisateurs (id_utilisateur) et pour les challenges (id_challenge)

Édité le 05/02/2012 à 14:34:54 par Shakkun
Hors ligne Weedy56 # Posté le 05/02/2012 à 15:56:20
Groupe : Bannis

J'ai fais ce que tu m'as dit maintenant manque plus que les codes !! Enjoy ! Je fais quoi mnt ?
Édité le 05/02/2012 à 15:56:37 par Weedy56
Hors ligne Shakkun # Posté le 05/02/2012 à 16:49:56
Avatar

Bah maintenant, quand tu fais un ajout dans cette table, si l'association d'un utilisateur et d'un challenge existe déjà, ça va te renvoyer une erreur. A toi de l'exploiter pour arriver à ce que tu veux faire
Édité le 05/02/2012 à 16:50:18 par Shakkun
Hors ligne Weedy56 # Posté le 05/02/2012 à 16:58:07
Groupe : Bannis

Tu peux coder la source ?
Hors ligne Shakkun # Posté le 05/02/2012 à 17:09:14
Avatar

Propose déjà un code et après on avisera avec ce que tu auras fait
Hors ligne Weedy56 # Posté le 05/02/2012 à 17:14:19
Groupe : Bannis

Je n'ai aucune idée de code, je débute ...
Hors ligne Shakkun # Posté le 05/02/2012 à 17:18:19
Avatar

Tu vas devoir faire une requête SQL : INSERT INTO (http://sql.1keydata.com/fr/sql-insert-into.php)

et si tu es avec PDO, tu peux utiliser cette fonction : http://fr.php.net/manual/fr/pdo.exec.php

Si elle te retourne 0 cela veut dire que l'association utilisateur/challenge existe déjà, sinon ça l'ajoute
Hors ligne Weedy56 # Posté le 05/02/2012 à 18:13:30
Groupe : Bannis

REQUETE SQL:
INSERT INTO valid ("id_pseudo", "id_challenge") VALUES ("$_SESSION['id']", "1");
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$quete = mysql_query("SELECT * FROM valid");
$infos = mysql_fetch_array($quete);
if($infos['id_pseudo'] == $_SESSION['id']) {
if($_POST['valid3'] == "*") {
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=*', '*', '*', $pdo_options);
    
    // Récupération des 10 derniers messages
    $reponse = $bdd->prepare("UPDATE validation SET points = points + 11 WHERE pseudo = ?");
    $reponse->execute(array($_SESSION['pseudo']));
}

catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
echo "<font color='green' size='3'>Bravo, vous remportez 11 points !</font>";
}
$sek = $_SESSION['id'];
$rik = "INSERT INTO valid ('id_pseudo', 'id_challenge') VALUES ($sek, '1')";
$sql = mysql_query($rik);
$info = mysql_execute($sql);
?>


Un message d'erreur affiche :

Fatal error: Call to undefined function mysql_execute() in /var/www/legtux.org/users/security-ao/PHP/challenge.php on line 25 (Sur mon code complet c'est 1341 mais sur ce code c'est 25 ;) ).

Comment je vais résoudre se problème ?
Édité le 05/02/2012 à 19:10:52 par Weedy56
Hors ligne Shakkun # Posté le 05/02/2012 à 23:18:54
Avatar

Euh... C'est une fonction PDO exec, pas mysql...
Hors ligne zkiller # Posté le 05/02/2012 à 23:30:41
Développeur web
Avatar

http://challenge.xubhosting.com ;)

Image utilisateur| URL Shortener
Up2Shares V2 en développement > recrute 1 graphiste et 1 codeur html5/css3
Apprenez à lire la doc s.v.p! :-°
 
Hors ligne Weedy56 # Posté le 06/02/2012 à 16:59:38
Groupe : Bannis

Citation : Shakkun
Euh... C'est une fonction PDO exec, pas mysql...


Tu peux me la corriger ?
Connecté Taguan # Posté le 06/02/2012 à 17:01:21
Auto-quote Powaaa
Avatar
Groupe : Auteurs
Flux RSS

Ville : Bruxelles
Pays : Belgique

Tu mélanges PDO et mysql_ Va revoir le tutoriel pour savoir comment on se connecte et comment on exécute des requpetes avec PDO. Toutes les fonctions qui commencent par mysql_, tu oublies !

!!! Attention, ceci est ma signature, pas une réponse à votre post !!!
Mon tutoriel : SQL avec MySQL
 
Hors ligne Weedy56 # Posté le 06/02/2012 à 19:09:54
Groupe : Bannis

J'ai vu les tutoriels .. Mais je n'ai pu rien faire !
Connecté Taguan # Posté le 06/02/2012 à 19:32:18
Auto-quote Powaaa
Avatar
Groupe : Auteurs
Flux RSS

Ville : Bruxelles
Pays : Belgique

Ah ben ça c'est bête alors !

!!! Attention, ceci est ma signature, pas une réponse à votre post !!!
Mon tutoriel : SQL avec MySQL
 
Hors ligne Weedy56 # Posté le 07/02/2012 à 18:24:24
Groupe : Bannis

Pas du tout je l'ai relu 2 fois en complet.
Connecté Taguan # Posté le 07/02/2012 à 18:29:47
Auto-quote Powaaa
Avatar
Groupe : Auteurs
Flux RSS

Ville : Bruxelles
Pays : Belgique

Rolalaaaaa...

Ben t'as plus qu'à t'asseoir par terre et pleurer alors.

!!! Attention, ceci est ma signature, pas une réponse à votre post !!!
Mon tutoriel : SQL avec MySQL
 
Hors ligne Shakkun # Posté le 08/02/2012 à 09:42:54
Avatar

Si tu avais bien lu 2 fois au complet, tu aurais compris comment fonctionne un minimum PDO,
parce que là dans ce que je vois, tu as fait un bête copier/coller du code (Cf le commentaire "Récupération des 10 derniers messages")
Hors ligne Weedy56 # Posté le 08/02/2012 à 18:46:11
Groupe : Bannis

Pour utiliser 2 requetes SQL faut utiliser 2 fois PDO ? Ou comment faire ?
Édité le 08/02/2012 à 18:46:36 par Weedy56
Hors ligne zkiller # Posté le 08/02/2012 à 22:23:04
Développeur web
Avatar

Weedy65 contact moi via mp et je tenvoie ce que javais fait pou mr snok
Édité le 08/02/2012 à 22:23:29 par zkiller

Image utilisateur| URL Shortener
Up2Shares V2 en développement > recrute 1 graphiste et 1 codeur html5/css3
Apprenez à lire la doc s.v.p! :-°
 
Connecté Taguan # Posté le 09/02/2012 à 00:01:30
Auto-quote Powaaa
Avatar
Groupe : Auteurs
Flux RSS

Ville : Bruxelles
Pays : Belgique

Tu veux faire 2 requête, tu fais 2 requêtes, je vois pas trop où est le problème. Tu peux utiliser le même objet $pdo, mais fais tes 2 requêtes séparément.

!!! Attention, ceci est ma signature, pas une réponse à votre post !!!
Mon tutoriel : SQL avec MySQL
 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx