Modifier la valeur d'une variable
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je souhaite juste que quand l'utilisateur vienne sur une page ça rajoue 1 à la variable qui se trouve dans la base de donnée.
Voici mon code (qui ne marche visiblement pas):
Si une partie du code vous semble inutile c'est que je veux que seul les membres connectés puissent y accéder.
Merci de votre aide!
Voici mon code (qui ne marche visiblement pas):
<?php session_start(); $bdd = new PDO(CA_C'EST_BON_MAIS_PERSONNEL :p); if (!empty($_SESSION['id'])) { $id = $_SESSION['id']; $ajout = $_SESSION['points']; $ajout++; $final = $ajout++; $sql = 'UPDATE INTO membres(points) VALUES('.$final.')'; } ?>
Si une partie du code vous semble inutile c'est que je veux que seul les membres connectés puissent y accéder.
Merci de votre aide!
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Modifier la valeur d'une variable
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier une story facebook - Guide
- Modifier extension fichier - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
3 réponses
Bonjour,
Vu que tu utilises PDO .. Autant le faire bien via les requêtes préparées.
De plus.. tu écris la variable $sql ... mais à aucun moment tu ne lances la requête....
Et enfin... pour être sûr que php prenne la valeur issue de la bdd comme un nombre... ajoute donc un intval
Donc :
nb: tu avais également oublié de mettre un WHERE dans ta requete pour préciser quel id tu souhaitais updater....
Cordialement,
Jordane
Vu que tu utilises PDO .. Autant le faire bien via les requêtes préparées.
De plus.. tu écris la variable $sql ... mais à aucun moment tu ne lances la requête....
Et enfin... pour être sûr que php prenne la valeur issue de la bdd comme un nombre... ajoute donc un intval
Donc :
<?php //démarrage des sessions session_start(); // pense à placer la connexion à ta bdd dans un autre fichier // que tu n'auras qu'à inclure dans tes pages lorsque tu en as besoin ! $bdd = new PDO("CA_C'EST_BON_MAIS_PERSONNEL :p"); //récupération "propre" des variables AVANT de les utiliser: $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; $points = !empty($_SESSION['points']) ? intval($_SESSION['points']) : 0; if ($id) { $points++; // on incrémente le nombre de points // on prépare la requete et les variables $sql = "UPDATE INTO membres(points) VALUES(:points) WHERE id=:id"; $datas = array(':points'=>$points, ':id'=>$id); //execution de la requete try{ $prepare = $bdd->prepare($sql); $prepare->execute($datas); }catch(Exception $e){ //en cas de pb dans la requete echo 'Error ! ' . $e->getMessage(); } } // fin du IF($id) ?>
nb: tu avais également oublié de mettre un WHERE dans ta requete pour préciser quel id tu souhaitais updater....
Cordialement,
Jordane
Tu as un catch en trop !
} catch (Exception $ex) {
try{ $bdd= new PDO("mysql:host=".$host.";dbname=".$dbname.$charset,$user,$pwd); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); }
L'erreur a changé, désormais c'est
Je pense qu'on se rapproche du but, merci de ton aide!
Error ! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INTO membres(points) VALUES('8') WHERE id='1'' at line 1
Je pense qu'on se rapproche du but, merci de ton aide!
Du coup je suis toujours bloqué, tu sais d'ou ça peut venir? MERCI en tout cas !
Pour que PDO t'affiche les erreurs... il faut, lors de la connexion ajouter quelques options.
Modifie ta connexion à la bdd en t'inspirant de ce code :
la ligne 35 étant:
Etant donné que c'est de ton code que provient l'erreur je n'ai aucune idée de sa signification ! x)
Je te remet le code complet avec les modification que j'ai apporté à tes guillemets et accolades:
est fausse ...
Pourquoi n'as tu pas gardé ceci ?
EDIT : Correction de la chaine de connexion.
" Fatal error: Call to a member function prepare() on a non-object in /home/u767521012/public_html/+1.php on line 36 "
Elle est à la ligne 36 parce que j'ai rajouter le $charset.