MySql : Faire un UPDATE et un INSERT.

Résolu/Fermé
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 - 4 avril 2009 à 17:02
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 - 4 avril 2009 à 17:50
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
4 avril 2009 à 17:17
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 samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
4 avril 2009 à 17:28
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
4 avril 2009 à 17:07
salut!
on peut voir le code complet stp?
Cdt!
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
4 avril 2009 à 17:09
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 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
4 avril 2009 à 17:15
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 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
4 avril 2009 à 17:19
Bonne idée... mais désolé, le résultat est le même...
0
bissdebrazza Messages postés 2065 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
4 avril 2009 à 17:25
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
4 avril 2009 à 17:28
Bonjour,
Si tes variables sont des entiers, tu ne dois pas mettre de ' '.
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
4 avril 2009 à 17:40
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 vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
4 avril 2009 à 17:42
Salut!
Regarde avec addslashes() ça peut t'aider!
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
4 avril 2009 à 17:50
Encore merci.
0