Problème variable dans requete SQL

Résolu/Fermé
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014 - 16 juil. 2007 à 10:21
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014 - 20 juil. 2007 à 15:40
Bonjour,

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

2 réponses

s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 620
16 juil. 2007 à 17:08
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 ???
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
16 juil. 2007 à 21:18
Salut

Merci pour ces idées

ma division par zéro se trouve sur la dernière ligne
echo '<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!

0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
16 juil. 2007 à 22:26
<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.
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
17 juil. 2007 à 08:27
OK!
Merci!!

Je viens de voir que j'avais moulte travail a faire encore, car il faut que je modifi cela sur plusieurs pages...
Je pensais que cela marchait de mettre
'$i+1'
dans la requète sql, car j'avais un résultat dans les requètes précédentes!

Merci pour l'astuce du 'date'!
0
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 620 > naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
17 juil. 2007 à 16:34
Sur plusieurs page ? Créer un fonction ou faire une include ne serait pas mieux que de répéter le code ?
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014 > s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018
19 juil. 2007 à 10:25
Si, mais c'est pas le meme code, c'est pas les meme requetes, ni les memes tableaux, mais c'est la meme variable '$i+1' que j'utilisais...
0
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 620
16 juil. 2007 à 21:58
Diviser par 1 c'est pas vraiment mieux que 0 :p
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
19 juil. 2007 à 10:27
Diviser par 1 c'est pas vraiment mieux que 0 :p

ha ben bravo!
10/1 = 10
10/0 = ERREUR car non défini!! => infini

donc je pense quand meme que de diviser par 1 n'est pas du tout pareil que de diviser par 0, mais ca ca devrait être acquis depuis le CM1! ;)
0
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 620 > naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
19 juil. 2007 à 15:40
-_- pend moi pour un con te gêne pas, la question n'était pas là, ce que je voulais dire c'est que ça sert à rien.
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014 > s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018
20 juil. 2007 à 15:40
^^

Si, j'en ai besoin pour faire un quotient d'études faites sur le nombre de jour travaillé, pour connaitre le taux de production.

Merci pour ces aides!
0