IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

UPDATE base SQL par un script


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut UPDATE base SQL par un script
    Bonjour et merci à pour ce très bon forum.

    D'habitude j'ai toujours trouvé mes réponses sans poster mais là ça bloque. Désolé de vous embêter avec une question qui peut vous paraître de base mais ça fait deux jours que je galère dessus.

    J'ai monté un site avec paiement en ligne paypal. Paypal me renvoie des variables à la fin de la transaction pour que je puisse updater ma base de données.

    Mon problème est que je sais l'updater depuis un formulaire qui va sur une autre page, mais pas en script automatique.
    Voilà la page qui récupère les variables de paypal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
     
    foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
    }
     
    // post back to PayPal system to validate
    $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
     
    // assign posted variables to local variables
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
     
    if (!$fp) {
    // HTTP ERROR
    } else {
    fputs ($fp, $header . $req);
    while (!feof($fp)) {
    $res = fgets ($fp, 1024);
    if (strcmp ($res, "VERIFIED") == 0) {
    // check the payment_status is Completed
    // check that txn_id has not been previously processed
    // check that receiver_email is your Primary PayPal email
    // check that payment_amount/payment_currency are correct
    // process payment
    }
    else if (strcmp ($res, "INVALID") == 0) {
    // log for manual investigation
    }
    }
    fclose ($fp);
    }
     
    ?>
    Et là je ne sais pas où insérer ni comment formuler mon update de la base.

    Je voudrais ça mais ça marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE commande SET ETAT = 8 WHERE ETAT = 9 SELECT *
    FROM commande
    WHERE commande.IDCLIENT = colname

    colname étant = à Si vous avez la solution ou si vous pouvez m'aiguiller concrètement, ce serait très très gentil.

    D'avance merci!

  2. #2
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE commande SET ETAT = 8 WHERE ETAT = 9 SELECT * 
    FROM commande 
    WHERE commande.IDCLIENT = colname
    le select dans ton update ne doit pas etre correcte...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE commande SET ETAT = 8 WHERE ETAT = 9 WHERE IDCLIENT = colname

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta réponse, le code suivant est le bon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE commande
    SET ETAT = 8
    WHERE ETAT = 9 AND IDCLIENT = colname
    maintenant il va me falloir trouver comment définire colname = $_POST['item_number'] et comment inclure ca en php parce que jusqu'à maintenant je passais par les jeux d'enregistrement de dreamweaver mais là ca n'en est pas un je crois...

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je pensais logiquement à ça au début de la page avant le reste du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php require_once('Connections à la base'); ?>
    <?php
    $colname = "-1";
    if (isset($_POST['item_number'])) {
      $colname = (get_magic_quotes_gpc()) ? $_POST['item_number'] : addslashes($_POST['item_number']);
    }
    mysql_select_db($database_tatata, $tatata);
    $sql = "'UPDATE commande'
            ' SET ETAT = 8'
            ' WHERE ETAT = 9 AND IDCLIENT = '%s'", $colname;
    Mais ça marche pas, toujours aucun update de la base

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Pour utiliser %s comme tu l'as fait dans ton exemple, tu as besoin d'utiliser la fonction sprintf(). Cependant, il y a plus simple en PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "UPDATE commande
             SET etat = 8
             WHERE etat = 9 AND idclient = '$colname'";

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour le tuyau Kirkis.

    Voilà mon code maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php require_once('Connection base'); ?>
    <?php
    $colname = $_POST['item_number'];
     
    $sql = "'UPDATE commande'
            ' SET ETAT = 8'
            ' WHERE ETAT = 9 AND IDCLIENT = '$colname'";
    Malheureusement ma base de données n'est toujours pas mise à jour avec ça. J'ai écrit un mail à PayPal pour savoir si je n'aurais pas omis un détail

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    C pas plutôt comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "update commande  set ETAT = '8' where ETAT = '9' and IDCLIENT = '$colname' ;";

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par xloadx
    C pas plutôt comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "update commande  set ETAT = '8' where ETAT = '9' and IDCLIENT = '$colname' ;";
    @Xload je me demande ce q tu as ajouté de nouveau dans le script.
    au fait Vanador, le update ne marche pas parce q tu met colname entre quote. ça veut dire q tu le transforme en chaine. enlève les quotes et essai


    <?php require_once('Connection base'); ?>
    <?php
    $colname = $_POST['item_number'];

    $sql = "'UPDATE commande'
    ' SET ETAT = 8'
    ' WHERE ETAT = 9 AND IDCLIENT = $colname";
    je pars du fait q idclient est de type numérique

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Ouah, c'est du post revival ça ^^

    Dites les gens, arrivez-vous vraiment à exécuter des requêtes de ce style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "'UPDATE commande'
            ' SET ETAT = 8'
            ' WHERE ETAT = 9 AND IDCLIENT = '$colname'";
    Avec des guillemets partout ?

    Ce n'est pas autour de chaque ligne qu'il faut mettre des guillemets, c'est autour des champs. Utilisez TOUJOURS or die(mysql_error()) à la suite de mysql_query().

Discussions similaires

  1. [AC-2003] Problème : connexion vers une base SQL par ODBC
    Par Cabos dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/11/2010, 15h16
  2. Acces à une base sql par 2 applications
    Par laclac dans le forum Débuter
    Réponses: 1
    Dernier message: 20/09/2009, 12h17
  3. Changer IP dans la base SQL par un texte
    Par Arthur65 dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/06/2009, 03h03
  4. [MySQL] Supprimer entrée dans base sql par un simple clique
    Par mickado dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/03/2007, 17h15
  5. Réponses: 3
    Dernier message: 21/06/2005, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo