PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 06-09-2011 18:03:20

Le_gnou
Membre
Inscription : 06-09-2011
Messages : 6

Mon script n'écrit pas dans ma BD MySQL :(

Bonjour à tous...

Je suis grand débutant en PHP que je me mets à apprendre depuis le début de la semaine dernière...

Voici mon script. Il s'agit d'un Callback, c'est à dire que ce script reçoit la réponse suite au paiement d'un utilisateur sur un site externe et utilise les données transmises pour :
   - 1/ AJOUTER DES POINTS SUR LE COMPTE DE CET UTILISATEUR
   - 2/AJOUTE UN ENREGISTREMENT DANS UNE TABLE MYSQL POUR GARDER UN HISTO DE LA TRANSACTION

VOICI MON CODE QUI NE SEMBLE PAS FONCTIONNER :

<!-- script adding Points to a user who had posted a form -->
<?php
## DATAS SENTS BACK BY THE FORM
$MYSECRETKEY = 'mysecretkey';

$docId    = (int) $_GET['docId'];
$uid    = $_GET['uid'];
$awards   = (int) $_GET['awards'];
$trId   = $_GET['trId'];
$promoId  = ((isset($_GET['promoId'])) ? (int) $_GET['promoId'] : 0 );
$hash   = $_GET['hash'];

## DATAS NEEDED TO ADD POINTS TO THE CORRECT USER
$database     = 'my_jommla_database'
$host       = 'localhost'
$main_AUP_table   = 'jos_alpha_userpoints'
$custom_AUP_table   = 'jos_alpha_userpoints_history_payments'
$DB_user      = 'myDBuser'
$DB_password    = 'myPassword'


## CHECK HASH VALUE
if(md5($uid . $awards . $trId . $MYSECRETKEY) == $hash) {
  # DB connect
  $cnx = mysql_connect($host, $DB_user, $DB_password);
  mysql_select_db($database, $cnx);
 
 
  $rs = mysql_query("SELECT COUNT(1) AS NB FROM $custom_AUP_table WHERE external_reference = ''.addslashes($trId).''", $cnx);
  $ifFindTr = (int) mysql_result($rs, 0, 'NB');
  unset($rs);
 
  if($ifFindTr == 0) {
    # all is OK
    # we can add $awards points to the user and save transaction
   
    # Adding points
    mysql_query("UPDATE $main_AUP_table SET points=points+'.$awards.' WHERE userid=''.addslashes($uid).''", $cnx);
   
    # Register in jos_alpha_userpoints_history_payments
    mysql_query( "INSERT INTO $custom_AUP_table (doc_id, user_id, awards, external_reference, promo_id, date)"
          .'VALUES('.$docId.', ''.addslashes($uid).'', '.$awards.', ''.addslashes($trId).'', '.$promoId.', NOW())', $cnx);
   
    echo 'OK';
   
  }
  else {
    # this transaction reference already added
    # add in error log  
   
    echo 'this transaction reference already added';
  }
 
  mysql_close($cnx);
}
else {
  # hash error
  # add in error log  
 
  echo 'hash error';
 
}


?>

Des idées, Mesdames et Messieurs les experts , wink

Dernière modification par Le_gnou (06-09-2011 19:13:10)

Hors ligne

#2 06-09-2011 18:07:35

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Mon script n'écrit pas dans ma BD MySQL :(

VALUES prend un S wink

a++

Hors ligne

#3 06-09-2011 18:17:54

Le_gnou
Membre
Inscription : 06-09-2011
Messages : 6

Re : Mon script n'écrit pas dans ma BD MySQL :(

Merci infiniment, Pierrot...

Mais pourquoi alors l'instruction qui se trouve avant ne s'éxécute pas ?

    # Adding points
    mysql_query( 'UPDATE $main_AUP_table SET points=points+'.$awards.' WHERE userid=''.addslashes($uid).''', $cnx);

Hors ligne

#4 06-09-2011 18:33:31

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Mon script n'écrit pas dans ma BD MySQL :(

'UPDATE $main_AUP_table SET points=points+'

les variables ne sont pas parsées entre les simples cote de porc smile
a++

Hors ligne

#5 06-09-2011 19:11:32

Le_gnou
Membre
Inscription : 06-09-2011
Messages : 6

Re : Mon script n'écrit pas dans ma BD MySQL :(

Merci... Corrigé aussi mais ça ne fonctionne toujours pas : aucune écriture dans la base de donnée sad

Hors ligne

#6 15-02-2012 20:59:23

demu73
Membre
Inscription : 06-01-2012
Messages : 14

Re : Mon script n'écrit pas dans ma BD MySQL :(

Je réactive ce sujet étant donné le problème évoquer est similaire au mien.

Mon soucis est qu'à l'enregistrement. Les données introduitent par l'arrivant ne s'enregistrent pas dans la BDD.

La page inscription.php  pour s'enregistrer


    <head>
      <meta charset="utf-8 />
        <link rel="
stylesheet" href="style.css"/>
      <title>nom du site</title>
      </head>
     
      <body>
      <form action="
add.php" method="POST">

      <p>
             <label>Votre pseudo</label> <input type="text" name="pseudo" id="pseudo" required /><br>
             <label for="
pass"> Votre mot de passe</label> <input type="password" name="mot de passe" id="mot de passe" required /><br>
       <label for="
email"> Votre email</label> <input type="email" name="email" id="email" required /><br>  
         <input type="
submit" value="Envoyer" /><br>
          </form>


Et voici ma page add.php pour mettre dans la table membre_tbl les nouveaux inscripts au site.


<html>
<?php
if(isset($_POST['pseudo']))      $nom=$_POST['pseudo'];
else      $pseudo="";

if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";

if(isset($_POST['password']))      $password=$_POST['password'];
else      $password="";
 
if(empty($pseudo) OR empty ($email) OR empty ($password));
    {
    echo '<font color="red">'Il manque un champs, veuillez réessayer !'</font>;
    }  
else
  }
  $db = mysql_connect('
sql.lhebergeur.com', '00000_site', 'motdepasse')  or die('Erreur de connexion '.mysql_error());

    mysql_select_db('membre_tbl',$db)  or die('Erreur de selection '.mysql_error());
     
    $sql = INSERT INTO membre_tbl VALUES('
','.$pseudo.','.$email.', '.$password.');
     
    mysql_query ($sql) or die( '
Erreur SQL !'.$sql.'</br>'.mysql_error());
   
    echo <h3>'
Vous êtes enregistré'</h3>;
    }
    mysql_close();
    }  
?>
 
 
</html>  
 

Il doit surement manquer quelques choses. Etant donne qu'aucune donnée arrive dans la table membre_tbl.

Pouvez-vous m'aiguiller, s'il vous plait.

Hors ligne

#7 15-02-2012 21:05:45

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Mon script n'écrit pas dans ma BD MySQL :(

l'erreur est là wink

<input type="password" name="mot de passe" id="mot de passe" required />

if(isset($_POST['password']))      $password=$_POST['password'];
else      $password="";

et là :

entre autre

$sql = INSERT INTO membre_tbl VALUES('','.$pseudo.','.$email.', '.$password.');


j'arrete là, parce que y trop d'erreur

a++

Hors ligne

#8 15-02-2012 22:17:13

demu73
Membre
Inscription : 06-01-2012
Messages : 14

Re : Mon script n'écrit pas dans ma BD MySQL :(

Si j'ai bien compris l'exemple. Je dois changer les indications "mot de passe" et mettre à la place "password" ?

Hors ligne

Pied de page des forums