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 :

Addition de données [Débutant(e)] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Points : 93
    Points
    93
    Billets dans le blog
    2
    Par défaut Addition de données
    Bonjour,

    Je réalise un petit site web pour la gestion de compte. Hooooo, rien de bien de bien méchant, mais je suis bloqué sur une bête addition .

    Alors voila, je travaille avec dreamweaver 8(pour ce que ca intéresse), j'ai fait un formulair pour récuperer les données saisi (Tiers, date, ..., debit), jusque là tout va bien.

    Maintenant dans ma requete SGL, je recupère chaque entrée et je les insére dans ma BDD, la aussi tout va bien.

    Ce qui me pose problème c'est mon dernier champ, Solde. Celui-ci est égale à:
    Solde=Solde(id-1)+Crédit-Débit

    Et la je ne sais pas comment m'y prendre pour écrire ma requete .

    Voici le morceau de code qui me pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $requet="SELECT Solde FROM Compte ORDER BY id DESC LIMIT 1";
    $result=mysql_query($requet)or die(mysql_error());
    $insertSQL = sprintf("INSERT INTO compte (`Date`, Tiers, Numero, Debit, Categories, Notes, Solde) VALUES (%s, %s, %s, %s, %s, %s, $result-Debit)",
                           GetSQLValueString($_POST['Date'], "date"),
                           GetSQLValueString($_POST['Tiers'], "text"),
                           GetSQLValueString($_POST['Numero'], "int"),
                           GetSQLValueString($_POST['Debit'], "double"),
                           GetSQLValueString($_POST['Categories'], "text"),
                           GetSQLValueString($_POST['Notes'], "text"));
     
      mysql_select_db($database_Compteenligne, $Compteenligne);
      $Result1 = mysql_query($insertSQL, $Compteenligne) or die(mysql_error());
    Lorsqu'il est executé, j'ai ce message d'erreur:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #4-Debit)' at line 1
    Merci de votre aide.

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $requet="SELECT Solde FROM Compte ORDER BY id DESC LIMIT 1";
    $result=mysql_query($requet)or die(mysql_error());
    $insertSQL = sprintf("INSERT INTO compte (`Date`, Tiers, Numero, Debit, Categories, Notes, Solde) VALUES (%s, %s, %s, %s, %s, %s, $result-Debit)",
    GetSQLValueString($_POST['Date'], "date"),
    GetSQLValueString($_POST['Tiers'], "text"),
    GetSQLValueString($_POST['Numero'], "int"),
    GetSQLValueString($_POST['Debit'], "double"),
    GetSQLValueString($_POST['Categories'], "text"),
    GetSQLValueString($_POST['Notes'], "text"));
     
    mysql_select_db($database_Compteenligne, $Compteenligne);
    $Result1 = mysql_query($insertSQL, $Compteenligne) or die(mysql_error());

    On voit bien que c'est fait avec dreamweaver ... de ce coté la on sait que tu n'as pas touché au code ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $requet="SELECT Solde FROM Compte ORDER BY id DESC LIMIT 1";
    $result=mysql_query($requet)or die(mysql_error());
    /* la il faut peut etre recuperer la valeur de ta requete que tu as executer pour pouvoir calculer ton prochain solde */
    $old_solde = msql_fetch_array($result)
     
    /* credit et debit je sais pas ou ils sont ... j'invente */
     
    $insertSQL = "INSERT INTO compte (Date, Tiers, Numero, Debit, Categories, Notes, Solde) VALUES ('".$_POST['Date']."', '".$_POST['Tiers']."', ".$_POST['Numero'].", '".$_POST['Debit']."', '".$_POST['Categories']."', '".($old_solde[0]+$credit-$debit)."')";
     
    mysql_select_db($database_Compteenligne, $Compteenligne);
    $Result1 = mysql_query($insertSQL, $Compteenligne) or die(mysql_error());
    je ne sais pas du tout si c'est ce que tu veux ...
    Mais si tu bloques sur ca ... t'as pas fini ton projet. Moi a ta place je m'interreserait d'un peu plus pres au SQL (et non SGL), sinon il faut peut etre se poser la question si c'est bien ton boulot de faire de la programmation.

    @pluche

    PS : je suis pas sur de moi pour la syntaxe "mysql_fetch_array()"

  3. #3
    Membre régulier
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Points : 93
    Points
    93
    Billets dans le blog
    2
    Par défaut
    Merci par ta reponse rapide, il me semble (mais je suis novice dans la programmation PHP, ca ne fait que 15 jours que je programme avec) qu'il y a quelques erreur dans le code, voila ce que j'ai corrigé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $requet="SELECT Solde FROM Compte ORDER BY id DESC LIMIT 1";
    $result=mysql_query($requet)or die(mysql_error());
    $old_solde = mysql_fetch_array($result);
    /* le point virgule à la fin de la requete*/
     
    $insertSQL = "INSERT INTO compte (Date, Tiers, Numero, Debit, Categories, Notes, Solde) VALUES ('".$_POST['Date']."', '".$_POST['Tiers']."', ".$_POST['Numero'].", '".$_POST['Debit']."', '".$_POST['Categories']."', '".$_POST['Notes']."', '".($old_solde[0]-$debit)."')";
     
    /*pour le moment je ne m'interesse qu'aux débit, car je ne rentre qu'un débit ou un credit à la fois*/
     
      mysql_select_db($database_Compteenligne, $Compteenligne);
      $Result1 = mysql_query($insertSQL, $Compteenligne) or die(mysql_error());
    Mais voila ce qu'il me donne comme erreur il me retourne:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '50', 'essence', '', '1300')' at line 1
    Mais je ne desepere pas pour mon projet
    Merci

  4. #4
    Membre régulier
    Avatar de fenrir0680
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 49
    Points : 93
    Points
    93
    Billets dans le blog
    2
    Par défaut
    Et voilà, j'ai réussi à obtenir ce que je voulais.

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	$requet="SELECT Solde FROM Compte ORDER BY id DESC LIMIT 1";
    	$result=mysql_query($requet)or die(mysql_error());
    	$old_solde = mysql_fetch_array($result);
        $insertSQL = sprintf("INSERT INTO compte (Date, Tiers, Numero, Debit, Categories, Notes, Solde) VALUES (%s, %s, %s, %s, %s, %s, $old_solde[0]-Debit)",
                           GetSQLValueString($_POST['Date'], "date"),
                           GetSQLValueString($_POST['Tiers'], "text"),
                           GetSQLValueString($_POST['Numero'], "int"),
                           GetSQLValueString($_POST['Debit'], "double"),
                           GetSQLValueString($_POST['Categories'], "text"),
                           GetSQLValueString($_POST['Notes'], "text"));
     
      mysql_select_db($database_Compteenligne, $Compteenligne);
      $Result1 = mysql_query($insertSQL, $Compteenligne) or die(mysql_error());
    Je n'ai pas réussi à le faire fonctionner avec la simplification que tu m'avais donnée. Toujours est-il que ca fonctionne comme cela.

    Pour toute simplification de code je suis preneur.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] addition de donnée cyclique dans un liste
    Par bernadin.m dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/03/2014, 14h45
  2. [MySQL] addition de données
    Par nebil dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/01/2012, 12h10
  3. Réponses: 3
    Dernier message: 25/03/2008, 03h00
  4. Réponses: 2
    Dernier message: 16/01/2008, 09h02
  5. [SQL] Addition de données d'une base de données
    Par minusette dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/06/2007, 11h24

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