Problème variable dans requete SQL
Résolu
naokylon
Messages postés
91
Statut
Membre
-
naokylon Messages postés 91 Statut Membre -
naokylon Messages postés 91 Statut Membre -
Bonjour,
Je souhaiterai faire un tableau avec divers requète contenu dans une boucle for.
Lorsque je fais cela:
Les erreures qui arrivent sont une suite de warning, qui ne me remplissent pas le tableau
Warning: Division by zero in c:\program files\easyphp1-8\www\site_ft\taux_production.php on line 51
(la dernière ligne, celle où il y a l'echo -> il croit que $conge = 0
J'ai donc essayé de changer la requète en question:
Au lieu de: SELECT * FROM `conge` WHERE sem = '$i+1'
j'ai mis: SELECT * FROM `conge` WHERE sem = '20' et avec d'autres chiffres aussi (les meme que ceux qu'il doit prendre automatiquement dans la boucle)
et la miracle ca marche...
Je ne comprend pas pourquoi la requète de base ne marche pas, étant donné que j'ai aussi utiliser la meme synthaxe pour les requètes précédentes...
Pouvez-vous m'aider SVP?
j'en ai vraiement besoin!!
Merci
Je souhaiterai faire un tableau avec divers requète contenu dans une boucle for.
Lorsque je fais cela:
<p>
<table width=762 height="32" border=3 BGCOLOR=white>
<tr BGCOLOR=white>
<td><div align="center"><strong>Semaine</strong></div></td>
<?php
for ($i=($semaine-$nbchoisit); $i<($semaine); $i++){
echo '<td width="54"><div align="center"><strong>S'.$i.'</strong></div></td>';
}
?>
</tr><tr><td><div align="center"><strong>DEZOBRY</strong></div></td>
<?php
for ($i=($semaine-$nbchoisit); $i<($semaine); $i++){
$querys1 = "SELECT COUNT(*) AS nombre_as FROM `table` INNER JOIN `date` ON date.jour = table.DatedagrementOEIE WHERE CAF = 'DEZOBRY' AND date.semaine = '$i+1'";
$querys2 = "SELECT COUNT(*) AS nombre_as FROM `42c` WHERE historique = 'EL_DEZOBRY' AND semaine = '$i+1'";
$querys3 = "SELECT * FROM `conge` WHERE sem = '$i+1'";
$retour11 = mysql_query($querys1);
$retour22 = mysql_query($querys2);
$retour33 = mysql_query($querys3);
$retour1 = mysql_fetch_array($retour11);
$retour2 = mysql_fetch_array($retour22);
$retour3 = mysql_fetch_array($retour33);
$eel = $retour1['nombre_as'] * $poids_eel;
$filtrage = $retour2['nombre_as'] * $poids_filtrage;
$conge = $retour3['DEZOBRY'];
echo '<td><div align="center">'.($eel + $filtrage) / $conge.'</div></td>';
}
?>
</tr>
</table>
Les erreures qui arrivent sont une suite de warning, qui ne me remplissent pas le tableau
Warning: Division by zero in c:\program files\easyphp1-8\www\site_ft\taux_production.php on line 51
(la dernière ligne, celle où il y a l'echo -> il croit que $conge = 0
J'ai donc essayé de changer la requète en question:
Au lieu de: SELECT * FROM `conge` WHERE sem = '$i+1'
j'ai mis: SELECT * FROM `conge` WHERE sem = '20' et avec d'autres chiffres aussi (les meme que ceux qu'il doit prendre automatiquement dans la boucle)
et la miracle ca marche...
Je ne comprend pas pourquoi la requète de base ne marche pas, étant donné que j'ai aussi utiliser la meme synthaxe pour les requètes précédentes...
Pouvez-vous m'aider SVP?
j'en ai vraiement besoin!!
Merci
Configuration: Windows XP Internet Explorer 6.0
2 réponses
-
Salut,
Essais avec
'$i++'
Et sinon incrément avant
$i=$i+1;
'$i'
le mieux étant de mettre un echo pour voir la valeur de $i juste avant la requète (en mettant 20 pour pas faire buger le script).
Par contre je n'ai pas trouvé la division par zero dans ton script ???-
Salut
Merci pour ces idées
ma division par zéro se trouve sur la dernière ligneecho '<td><div align="center">'.($eel + $filtrage) / $conge.'</div></td>';
avec $conge qui était toujours égal à 0
j'ai modifier le script:
au lieu de mettre ma requete$querys3 = "SELECT * FROM `conge` WHERE sem = '$i+1'";
j'ai fais:$sem = $i+1; $querys3 = "SELECT * FROM `conge` WHERE sem = '$sem'";
et ca marche...
je ne comprend pas vraiment pourquoi, mais bon, je vais y garder!
merci pour tout!
-
<edit>erreur de lecture</edit>
salut,
finalement j'ai réussi à lire…$querys3 = "SELECT * FROM `conge` WHERE sem = '$i+1'";
l'opération ne s'effectue pas, c'est tout.
le serveur te renvoie la valeur de la variable $i et les caractères "+1". donc ta requête contient "0" (false).
par ailleurs pour tes tables et tes champs tu devrais éviter d'utiliser 'date' qui est un mot réservé de sql.
-
-
-
Diviser par 1 c'est pas vraiment mieux que 0 :p