Sql

Résolu
Bonjour,
j'aimerais savoir comment "écrire" dans la base de registre...
je m'explique je veut mètre un ''module'' de payement par allopass sur mon site
a chaque fois que un membre valide un code allopass il gagne 1 000point

''je connais presque rien en sql donc voila merci :$ ''

--
L'orthographe c'est pas mon fort mais je fait un effort XD
De plus j'ajouterais simplement que... vous êtes en train de lire ma signature : )
Configuration: Windows XP
Firefox 3.0.6

37 réponses

Résumé de la discussion

Le problème porte sur l’incrémentation des crédits d’un membre après la validation d’un code Allopass et sur la modification des données dans une base de données via PHP et MySQL. Plusieurs propositions suggèrent d’utiliser une requête UPDATE sur la table des utilisateurs pour augmenter les crédits existants, en ciblant l’identifiant du membre et en ajoutant le nombre de crédits. D'autres réponses précisent les aspects techniques, comme la connexion à la base, l’initialisation des variables et l’importance de tester le code côté serveur plutôt que côté client. Enfin, l’échange souligne l’importance de tester le script sur un environnement sûr et de corriger les éventuelles erreurs d’exécution côté serveur, afin d’assurer une opération fiable.

Bobot (l’IA à votre service)
  1. Si je comprends bien :

    cat
    clear
    idm_idc
    idu_idc
    language
    pass
    site
    tmp_mail
    user

    sont les noms de tes tables.

    id
    name
    email
    pass
    share
    own
    credits
    ....

    Sont les noms des champs de la table 'user';

    Si tu veux augmenter le nombre de credits de tes membres, il ne faut pas insérer un nouvel enregistrement mais en modifier un existant :

    mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits+" WHERE id='".$id_du_membre_qui_recoit_les_credits."';");
    2
    1. oui tout fonctionne comme il faut : D

      juste un peut de manque de sécurité ''suffi de rechargé la page'',,, mais je vais cherché un peut mintenan que j'ai compris le principe
      0
      1. tout fonctionne à présent comme ça devrait ?

        (T'inquiètes pas, la prochaine fois que tu feras quelque chose dans le même genre, ça devrait aller beaucoup (beaucoup !) plus vite ... )
        0
        1. haaaa voila : D

          mille merci : $

          surtout vue le temp passé : S
          0
          1. ha ben voilà, on y arrive ...

            ta requête devient donc ...

            mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits." WHERE id='".$_SESSION['id']."';");

            ?

            (bien sur, tu peux virer le print_r($_SESSION) maitenant)
            0
            1. voila le resultat :

              Array ( [login] => monemail@hotmail.fr [pwrd] => lemotdepasse [id] => 3 )
              0
              1. En effet, ça n'a rien à voir ... :D

                Identifie-toi sur ton site et mets ensuite quelque part en bas de ton code

                <?php
                print_r($_SESSION);
                ?>

                Tu listeras ainsi toutes les variables de session et pourras peut-être voir dans quelle variable session est stocké l'id unique du membre
                0
                1. et quand je vais dans mysql/user/id/afficher et que je fait crée source php sa me donne :

                  $sql = "SELECT COUNT(*) AS `Enregistrements`, `id` FROM `user` GROUP BY `id` ORDER BY `id` LIMIT 0, 30 ";

                  sa a peut être rien a voir mais si sa peut aidé a m'aidai ^_^
                  0
                  1. Si si, mysql sait très bien que 'credits' correspond à la valeur contenue dans le champ 'credits' avant que l'enregistrement (sélectionné avec 'WHERE id=' ) ne soit modifié.

                    L'erreur doit plutôt venir du id='".$id."'. $id n'a probablement pas la bonne valeur.
                    0
                    1. et comment remédié a sa ? : (

                      0
                      1. Contributeur
                        mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits+" WHERE id='".id"';"); 

                        je suppose que c'est parce que MySQL ne sait pas ce que vaut "credits" dans "credits+le nombre".
                        0
                        1. Voila plus de message d'erreur : )

                          mais les point ne s'ajoute pas : (

                          ''dsl reponse placé au mauvaise endroit''
                          0
                          1. Boah, apparemment tu as trouvé l'erreur sans avoir eu besoin de ce numéro de ligne ... mais ça aurait été certainement plus simple avec !

                            J'ai ne sais pas pourquoi, mais il me semble que la solution finale n'est pas encore pour tout de suite ... enfin, qui sait ?
                            0
                            1. la ligne 12 c'est celle la :

                              mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits+" WHERE id='".id"';");
                              0
                              1. La ligne 12, c'est laquelle ??
                                0
                                1. Contributeur
                                  mdr !
                                  c'est pas faute de lui avoir demandé !
                                  -:oD
                                  0
                              2. Contributeur
                                je remé toujours toute la page mais bon au moins c'est le plus clair possible
                                ben non parce que là il faut qu'on colle le code dans un éditeur pour trouver la bonne ligne…

                                c'est ta concaténation :
                                mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits+" WHERE id='".id"';"); 
                                
                                mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits." WHERE id='".$id."';"); 
                                

                                0
                                1. dalida me remé dans le droit chemin du forum bravo ^_^
                                  0
                                2. voila plus de message d'erreur : )

                                  mais les point ne s'ajoute pas : (
                                  0
                                3. Contributeur
                                  @Utilisateur anonymeDalida me remé dans le droit chemin du forum
                                  et j'ai du mérite parce qu'il y a pas mal de boulot…
                                  -:oD
                                  0
                              3. Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/tosurf1/www/+1.php on line 12

                                j'ai fait quélque modification qui on rien changé : )

                                <?php

                                unset($login,$pwrd,$id);
                                session_start();
                                session_register("login","pwrd","id");

                                require('config_real_inc.php');
                                require('config_inc.php');

                                mysql_connect($hostnm,$usernm,$pwd);
                                mysql_select_db($dbName);
                                mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits+" WHERE id='".id"';");
                                mysql_close();
                                ?>

                                oui je remé toujours toute la page mais bon au moins c'est le plus clair possible
                                0
                                1. je confirme sa fonctionne pas : (

                                  Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/tosurf1/www/+1.php on line 13
                                  0
                                  1. Contributeur
                                    ah ben voilà !

                                    quand tu donnes une erreur il faut le message complet (ça c'est fait) plus la ligne de code incriminée plus la ligne précédente et la ligne suivante, merci !
                                    0
                                2. alors peut étre sa :

                                  <?php

                                  unset($login,$pwrd,$id);
                                  session_start();
                                  session_register("login","pwrd","id");

                                  require('config_real_inc.php');
                                  require('config_inc.php');

                                  mysql_connect($hostnm,$usernm,$pwd);
                                  mysql_select_db($dbName);
                                  mysql_query("UPDATE user SET credits=credits+".$nombre_de_credits+" WHERE id='".$usernm"';");
                                  mysql_close();
                                  ?>
                                  0
                                  1. Contributeur
                                    et quand tu testes ça donne quoi ?

                                    c'est de la programmation, pas de la théorie.
                                    tu vas pas écrire ton script en entier sur le forum en le faisant valider par des tiers avant de tester !

                                    tu essaies et tu vois !
                                    si il y a une erreur tu la donnes et comme ça tu vas avancer !
                                    0
                                3. En relisant ... non, finalement, c pas bon ... :D

                                  $t_user= "user";

                                  -> ca c'est nimporte quoi ...

                                  Tous tes utilisateurs n'ont pas 'user' pour id ... l'id ($t_user) doit être un nombre unique et propre à chaque utilisateur !!
                                  0
                                  • 1
                                  • 2