MySql : Faire un UPDATE et un INSERT.

Résolu
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   -  
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'essaie de faire un INSERT et un UDPATE en même temps, mais il n'y que le UPDATE qui est pris en compte. Peut-on les exécuter comme suit ? :

mysql_query("INSERT INTO operations VALUES('', '$date', '$operation', '$montant', '$num')");
mysql_query("UPDATE comptes SET solde = solde+'$montant' WHERE idcompte = '$num'");

C'est juste un exercice en fait pour m'entrainer. C'est pour gérer ses comptes. Quand on enregistre une opération, elle est enregistrée dans la table operations et le solde est mis à jour dans la table comptes... Et là, le solde est modifié, mais la table operations reste vide.

11 réponses

bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Essai ça!
<?php
include ('header.html');

$num = $_POST['compte'];
$operation = $_POST['operation'];
$date = $_POST['date'];
$montant = $_POST['montant'];

if ($num != "" && $operation != "" && $date != "" && $montant != "")
{
mysql_connect("localhost","root","");
mysql_select_db("comptes");

mysql_query("INSERT INTO operations VALUES('', '$date', '$operation', '$montant', '$num')"); 

mysql_query("UPDATE comptes SET solde = solde+'$montant' WHERE idcompte = '$num'");

mysql_close();

header ('location: index.php');

}
?>
<div class="fond">

<link rel="stylesheet" type="text/css" href="styles.css" />

<div class="fond">

<br><br><br>
<p style="text-align: center; font-weight: bolder;">Enregistrer une opération</p>
<form action="gestion.php" method="post">
<p style="text-align: center;">
<label for="compte"><small><u>Sélectionner un compte :</u> </small></label><br>
<select name="compte" id="compte"><option></option>
<?php
mysql_connect("localhost","root","");
mysql_select_db("comptes");

$comptes = mysql_query("SELECT * FROM comptes ORDER BY idcompte");

while ($donnee = mysql_fetch_array($comptes))
{
echo '<option>'.$donnee['compte'].'</option>';
}
mysql_close();
?>
</select></p>


<table style="width: 500px; margin-right: auto; margin-left: auto;" cellspacing="0">
<tr class="titres">
<td class="compte" style="padding-left: -20px;">Opération</td>
<td class="solde">Date <small>(AAAA/MM/JJ)</small></td>
<td class="supprimer">Montant</td>
<td class="supprimer">Valider</td>
</tr>
<tr class="compte1">
<td><input type="text" size="50" width="50" name="operation" /></td>
<td><input type="text" name="date" /></td>
<td><input type="text" name="montant" /></td>
<td align="center"><input type="submit" class="boutons" value="v" style="color: green;" /></td>
</tr>
<tr>
<td class="footer" colspan="4"><a href="index.php">Opération dans un autre compte</a></td>
</tr>
</table>
</form>
</div>

<?php

include('footer.html');
?>

<?php



?>
</div>
<?php
include ('footer.html');
?>
2
Bigfish72 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   4
 
Salut,

Met or die(mysql_error()) à la fin de tes requêtes, histoire de voir si tu as un message d'erreur (je te conseille de mettre ça dans toutes tes requêtes, c'est plus facile après pour déboguer).

mysql_query("UPDATE comptes SET solde = solde+'$montant' WHERE idcompte = '$num'") or die(mysql_error());
1
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
salut!
on peut voir le code complet stp?
Cdt!
0
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   32
 
Je sais que c'est pas très propre. Je sais mieux faire, mais en qualité de débutant je m'entraîne sur une chose après l'autre.

Voici dond le code de la page gestion.php :

------------------------------------------------------

<?php
include ('header.html');

$num = $_POST['compte'];
$operation = $_POST['operation'];
$date = $_POST['date'];
$montant = $_POST['montant'];

if ($num != "" && $operation != "" && $date != "" && $montant != "")
{
mysql_connect("localhost","root","");
mysql_select_db("comptes");

mysql_query("INSERT INTO operations VALUES('', '$date', '$operation', '$montant', '$num')" AND "UPDATE comptes SET solde = solde+'$montant' WHERE idcompte = '$num'");

mysql_close();

header ('location: index.php');

}
?>
<div class="fond">

<link rel="stylesheet" type="text/css" href="styles.css" />

<div class="fond">

<br><br><br>
<p style="text-align: center; font-weight: bolder;">Enregistrer une opération</p>
<form action="gestion.php" method="post">
<p style="text-align: center;">
<label for="compte"><small><u>Sélectionner un compte :</u> </small></label><br>
<select name="compte" id="compte"><option></option>
<?php
mysql_connect("localhost","root","");
mysql_select_db("comptes");

$comptes = mysql_query("SELECT * FROM comptes ORDER BY idcompte");

while ($donnee = mysql_fetch_array($comptes))
{
echo '<option>'.$donnee['compte'].'</option>';
}
mysql_close();
?>
</select></p>


<table style="width: 500px; margin-right: auto; margin-left: auto;" cellspacing="0">
<tr class="titres">
<td class="compte" style="padding-left: -20px;">Opération</td>
<td class="solde">Date <small>(AAAA/MM/JJ)</small></td>
<td class="supprimer">Montant</td>
<td class="supprimer">Valider</td>
</tr>
<tr class="compte1">
<td><input type="text" size="50" width="50" name="operation" /></td>
<td><input type="text" name="date" /></td>
<td><input type="text" name="montant" /></td>
<td align="center"><input type="submit" class="boutons" value="v" style="color: green;" /></td>
</tr>
<tr>
<td class="footer" colspan="4"><a href="index.php">Opération dans un autre compte</a></td>
</tr>
</table>
</form>
</div>

<?php

include('footer.html');
?>

<?php



?>
</div>
<?php
include ('footer.html');
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   32
 
Oui j'ai un peu changer ma requête en mettant un AND entre les deux requêtes... mais le résultat est le même.
0
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   32
 
Bonne idée... mais désolé, le résultat est le même...
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
bien!
le problème viens de là
mysql_query("INSERT INTO operations VALUES('', '$date', '$operation', '$montant', '$num')"); 

alors cette requête dit que tu insères dans la table opérations,mais es-tu sûr que l'ordre d'insertion est respectée?je m'explique,tel que tu as mis ta requête ainsi,ça veut dire que ta table se présente comme ceci:(id,date,operation,montant,num).
Pour teste,zape update et dis moi!Mais réponds aussi à ma question!
0
Utilisateur anonyme
 
Bonjour,
Si tes variables sont des entiers, tu ne dois pas mettre de ' '.
0
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   32
 
J'ai trouvé :

en fait dans mon champs opération, j'ai entré: J'ai mangé un gâteau et l'apostrophe catastrophe m'a fait buguer le truc... Merci à msql_error () et surtout à tous les deux.

Je sais qu'il existe une méthode pour permettre la saisie de cotes dans un champs, mais je sais pas vraiment ou le mettre, mais ca c'est pas urgent, c'est une autre histoire... Mais si jamais c'est pas trop long et ch... à expliquer, ben, je suis peneur.

Merci à vous...
0
bissdebrazza Messages postés 2065 Date d'inscription   Statut Contributeur Dernière intervention   712
 
Salut!
Regarde avec addslashes() ça peut t'aider!
0
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   32
 
Encore merci.
0