Problème variable dans requete SQL

[Résolu/Fermé]
Signaler
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014
-
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014
-
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

Messages postés
2480
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
616
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 ???
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014

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!

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
914
<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.
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014

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'!
Messages postés
2480
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
616 >
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014

Sur plusieurs page ? Créer un fonction ou faire une include ne serait pas mieux que de répéter le code ?
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014
>
Messages postés
2480
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018

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...
Messages postés
2480
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
616
Diviser par 1 c'est pas vraiment mieux que 0 :p
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014

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! ;)
Messages postés
2480
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
616 >
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014

-_- 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.
Messages postés
90
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2014
>
Messages postés
2480
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018

^^

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!