Bon alors, déjà avec les [code/] ca serais plus lisible !
Ensuite, je pense qu’il faut que tu revois ta façon de faire ton code avant de passé à faire de l’Ajax ou autre.
Des choses du style :
$listarticle = mysql_query($requetarticles);
$listarticle1 = mysql_query($requetarticles);
C’est intolérable :). Si tu as besoin de la liste deux fois (Et que tu comptes la modifier, c’est pas le cas chez toi) tu peut faire :
$listarticle = mysql_query($requetarticles);
$listarticle1 = $listarticle;
Mais dans ton cas, tu utilises juste en lecture, rien de t’empeche de faire un foreach() 2 fois de suite (sachant que la fonction s’occupe de remettre le pointeur du tableau au debut toute seule ).
Après, tu refais une requête pour récupérer les articles qui ont une description égale au “prix” passé en POST. Si je met de coté le fait que dans ta table, tu met les prix dans un champ nommé description… tu vérifies pas ce qui se trouve dans ton $_POST[‘prix’] et c’est grave. En plus on sait pas trop d’où vient ce “prix” mais passons, essayons de régler ton “soucis”.
Donc, si j’ai bien compris, tu veux afficher deux fois les articles avec deux et affiche le prix de chacun d’entre eux dans une div, puis faire la somme de ces deux valeurs. Je tien à te préciser que “Ajax” n’intervient aucunement dans tout ca !
<?php
// Connexion à la base de donnée.
// ...
// Configs
$numArticle = 2; // Nombre d'article au choix
// On récupère la liste des articles, ainsi que leurs prix. Pas besoin de plus.
$sql = 'SELECT `description`, `prix` FROM `soft_articles`'; // La requête en question
$req = mysql_query( $sql ); // On éxécute la requete, et on met la ressouce du résultat dans $req
$result = mysql_fetch_array( $req ); // On recupéré les données et on les met dans un tableau
?>
<html>
<head>
<script type="text/javascript">
var numArticle = <?php echo $numArticle; ?>; // On passe le nombre d'article à Javascript pour le calcul du total.
function maj() {
var total = 0;
for( var i = 0; i < numArticle; i++ ) {
value = document.getElementById( 'select_'+i ).value;
total -= -parseFloat(value);
setPrix( 'prix_'+i, parseFloat( value ) );
}
setPrix( 'total', total );
}
function setPrix( id, prix ) {
document.getElementById( id ).innerHTML = prix;
}
</script>
</head>
<body>
<form action="" method="post">
<?php
for( $i = 0; $i < $numArticle; $i++ ) {
// On crée autant de select que d'article voulut.
?>
Article <?php echo $i; ?> : <select onchange="javascript:maj()" id="select_<?php echo $i; ?>">
<?php
// On parcours la tableau pour faire les options du select.
foreach( $result as $article ) {
// On crée les options avec comme valeur le prix et comment label la description de l'article
?>
<option value="<?php echo $article['prix']; ?>"><?php echo $article['description']; ?></option>
<?php
}
?>
</select>
<br/>
<?php
}
?>
</form>
<div id="values">
<?php
for( $i = 0; $i < $numArticle; $i++ ) {
?>Article n°<?php echo $i; ?> : <div id="prix_<?php echo $i; ?>"></div><?php
}
?>
</div>
Prix Total :
<div id="total"></div>
</body>
J’ai pas testé, j’ai pas de BD pour le faire, et ca me fait chier de faire un jeu d’essais. Je me suis un peu emporté sur le script, mais c’est pour te faire voir ce que ca peu donner comme script en y mettant du sien.
PS : Je dit pas que ma methode est la meilleure toussa. Mais c’est déjà plus carré
Edité le 15/05/2009 à 16:26