[RESOLU] Demande d'aide php => data base

Pi4Enkaye
Invité n'ayant pas de compte PHPfrance

16 juin 2016, 22:25

Bonjour/bonsoir à tous !
Je cherche une personne qui s'y connaît en php. Qui sait gérer la liaison php => phpmyadmin.
Il me faudrait de l'aide pour enregistrer et mettre à jour des valeurs dans une table db, en fonction d'une condition.
Voici les détails :
Si la condition est valide :
il faut voir dans la base de donnée, dans la colonne credits, combien l'utilisateur a de crédits.
S'il n'en a pas, $newcredits sera 0 s'il en a, le met le nom de crédits à $newcredits et on ajoutera 1 à $newcredits.
A la fin, une fois que la variable est a jour, une sauvegarde s'effectue dans la base de donnée.

Code : Tout sélectionner

if ($response->is_valid) { // cest ici que j'ai besoin d'aide.... J'ai l'impression d'avoir fait n'apporte quoi :( $newcredits = 'SELECT count(*) FROM users WHERE credits="'.mysql_escape_string(['credits']).'"'; $newcredits += 1; $insertcredit = $base->prepare("UPDATE users SET credits = ?"); $insercredit->execute(array($newcredits)); } else { // je m'occuperai de ce point ;) } } ?>

Pi4Enkaye
Invité n'ayant pas de compte PHPfrance

16 juin 2016, 22:27

Petite faute de frappe, excusez moi :
S'il n'en a pas, $newcredits sera 0 s'il en a, => on met le nombre de crédits à $newcredits <= et on ajoutera 1 à $newcredits.

Mammouth du PHP | 2703 Messages

16 juin 2016, 23:39

cela fonctionnera s'il n'y a qu'un seul utilisateur dans la tables users. s'il y en a plusieurs, il faut dans les 2 requetes rajouter une condition pour filtrer le seul utilisateur courant.
SELECT count(*) FROM users WHERE credits="'.mysql_escape_string(['credits']).'" and iduser=$id
UPDATE users SET credits = ? where iduser = ?

Pi4Enkaye
Invité n'ayant pas de compte PHPfrance

17 juin 2016, 21:43

Je ne parviens pas à faire marcher le code, est-il possible pour vous d'assembler ce que vous avez cité mais à la place des id, l'email de l'utilisateur ?

Merci :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 juin 2016, 00:21

Bonjour,

PHPfrance est un forum d'entraide où nous sommes tous bénévoles avec pour objectif d'aider les développeurs en difficulté pour qu'ils réussissent eux-mêmes à trouver des solutions et corriger leur code.
Nous pouvons te donner des pistes ou t'aider sur un point spécifiques, mais on ne va pas faire ton code à ta place.

Bref, qu'as tu essayé ?
Qu'est-ce qui ne marche pas ? Quels sont les messages d'erreurs ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Pi4Enkaye
Invité n'ayant pas de compte PHPfrance

18 juin 2016, 08:02

Bonjour,
enfaite, cela fait 3 jours que je n'y arrive pas, j'ai essayé avec pleins de solutions.

http://hastebin.com/yezuzamavi.vhdl

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 juin 2016, 13:53

salut,

ton code mélange l'extension mysql et pdo et n'est pas syntaxiquement correcte.
Il serait opportun de revoir les bases du langage ;)

si tu cherches simplement l'increment de la colonne credit tu fait tous en sql
il te faut bien sur une clause default 0 sur la colonne pour éviter les emmerdes.
update user set credits = credits + 1 where email='xxxx'
vu que tu utilises PDO je t'invite à utiliser les marqueurs nommé (http://php.net/manual/fr/pdo.prepare.php#example-1029).
Vu que ta requête n'est pas une "vraie" requête préparée tu peux aussi utiliser la concaténation et la méthode quote

@+
Il en faut peu pour être heureux ......

Diveur
Invité n'ayant pas de compte PHPfrance

25 juin 2016, 09:39

Bonjour,
j'ai réussit à faire ce que je voulais mais ducoup, je voudrais faire une variable qui comporte l'adresse email du client.

Code : Tout sélectionner

$mailing = $_SESSION['email']
Et cela ne fonctionne pas. Il y a bien un session start etc au début de la page.
Pouvez vous m'aider svp ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juin 2016, 12:39

salut,

la comme ça non. Nous n'avons pas assez d'information avec les quelques lignes données sur ton premier message.

il faut être sur qu'il y ait bien l'index email dans le tableau $_SESSION. D'ailleur la variable $mailing est inutile, tu peux directement utiliser $_SESSION['email'] ;)
Tu peux vois ce qu'il y a dans $_SESSION avec un var_dump($_SESSION).

Peux être faut il simplement l'ajouter à la connexion de l'utilisateur ?
Cela peux être aussi une coquille ? (email / mail ?)

@+
Il en faut peu pour être heureux ......