8791 sujets

Développement web côté serveur, CMS

bonjour,
j'ai un probleme probablement avec une requette
j'ai une fonction calcul 'qui marche bien' qui genere des chiffre aleatoire a partire d'un total passer en parametre, et qui doit inserer ces chifre dans une autre table.
le total est recuperer d'un table total contenant de total1 à total 12.

ici je recupere les tot1....tot12 avec un requette et j'apel ma fonction qui dois faire le calcule pour chak total et l'inserer ds la table ins.
pour chak total passer en parametre a la fonction cela genere 31 valeur aleatoire qui seront inserer ds la table table_ins qui contient justement 31 champs
mais ca marche pas, il genere bien les valeur aleatoir mais ca enregistre n'importe koi(la meme valeur sur toute ma table)
voila la fonction+ l'apel a la fonction

function calcul($total)
{
    
$nb_valeurs = 31;
$val_moy = $total / $nb_valeurs;
$val_min = $val_moy * (1 - 20/100);
$val_max = $val_moy * (1 + 20/100);
$total_valeurs = 0;
$valeurs = array();
for($i = 0; $i < $nb_valeurs-1; $i++) {
    $valeurs[$i] = mt_rand($val_min, $val_max);
    $total_valeurs += $valeurs[$i];
}
$valeurs[$nb_valeurs-1] = $total - $total_valeurs;
for($i=1;$i<=$nb_valeurs;$i++){
    $nb++;
    $tot += $valeur;
        echo '<p>'.$valeurs[$i-1].' - '.$nb.' - '.$tot.'</p>';
        
        $requette_insertion=db_fetch_row("update table_ins set total'".$i."'='".$valeurs[$i-1]."' ");
       


}
}


$total= db_query("select produits, tot1,tot2,tot3,tot4,tot5,tot6,tot7,tot8,tot9,tot10,tot11,tot12 from report_reel_n");
while($t=db_fetch_row($total))
{
    for($j=1;$i<count($t);$j++)
{
   echo calcul($t[$j]);
 
}
}



en faite ce ne m'enregistre rien et on dirais que le programme tourne en boucle infinie!!!!
bizard
Modifié par timo (27 Nov 2009 - 15:52)
Modérateur
Hello,

Que vaut $tot ? Smiley cligne

$tot += $valeur;

0 = 0 + array() Smiley biggol

* db_fetch_row = fonction exotique ou de toi ? Quelle est sa définition alors ?
* db_query = fonction exotique ou de toi ? Quelle est sa définition alors ?


Logiquement la fin de ton script devrait être plutôt ceci je crois :


while($t=db_fetch_row($total)){
    for($j=1;$j<count($t);$j++){
        echo calcul($t[$j]);
    }
}

Modifié par Nolem (28 Nov 2009 - 16:23)
J'avais rapidement survoler mais y a pas mal de problème quand même
Comme la dit Nolem avec $tot, mais aussi $valeur qui n'existe pas.

Affiche le maximum d'erreur avec error_reporting (à mettre au début du script)

error_reporting(E_ALL | E_STRICT);//php5
error_reporting(E_ALL); //autre version