par
Ryle » 22 janv. 2016, 11:29
Bonjour,
Pour mettre ton code en forme sur le forum, il te suffit d'utiliser les balises [ php ] [ /php ] sans les espaces, (ou balises css, ou sql, ... en fonction de ce que tu veux mettre en forme

)
Pour ton soucis, l'information "ça ne marche pas" n'a jamais permit de corriger un problème, c'est pour ça que php ou mysql retournent des messages d'erreur pas toujours très explicites, mais quand même bien utile pour identifier l'origine du problème
Dans l'idée, lorsque tu as un soucis avec une requête SQL, il est effectivement intéressant de tester le résultat de l'exécution et d'afficher la requête que tu veux faire exécuter. Ca permet déjà de voir si ce que tu envois à mysql est bien structuré :
$sql = " SELECT ... "; // on écrit la requête
$query = mysql_query($sql) or ; // on execute la requête
if (!$query) { // on vérifie s'il y a eu une erreur
echo '<br />' . mysql_error(); // le cas échéant on affiche le message d'erreur retourné par MySQL
echo '<br />' . $sql; // on contrôle la requête envoyée
}
A noter par ailleurs que tu exécutes deux fois la même requêtes sur les mêmes tables, avec les mêmes champs, simplement avec des conditions différentes. Dans ce cas il n'est pas nécessaire de faire un UNION, il suffit simplement d'ajuster la condition dans le WHERE :
$sql = "SELECT workers.nom as Nom, day as Jour, day_month as Le, month as Mois, year as Annee, start as Debut, end as Fin
FROM worktimes ,workers
WHERE workers.id=" . $idworker . "
AND workers.id=worktimes.idworker
AND worktimes.is_active=1
AND ( month=" . $mois . " AND year=" . $annee . " OR month=0)
ORDER BY Nom,Le,Jour,Mois,Annee"
Ici on va ramener tous les enregistrement du mois/année spécifié ou ayant un mois égal à 0
A noter enfin qu'il est plutôt recommandé d'utiliser un seul champ de type date (pour lequel on pourra utiliser toutes les fonctions concernant les dates) que de découper cette information dans plusieurs champs de type int ou varchar (encore que ça dépend du contexte et du besoin, mais d'une manière générale, c'est quand même plus pratique

)
Bonjour,
Pour mettre ton code en forme sur le forum, il te suffit d'utiliser les balises [ php ] [ /php ] sans les espaces, (ou balises css, ou sql, ... en fonction de ce que tu veux mettre en forme :))
Pour ton soucis, l'information "ça ne marche pas" n'a jamais permit de corriger un problème, c'est pour ça que php ou mysql retournent des messages d'erreur pas toujours très explicites, mais quand même bien utile pour identifier l'origine du problème :)
Dans l'idée, lorsque tu as un soucis avec une requête SQL, il est effectivement intéressant de tester le résultat de l'exécution et d'afficher la requête que tu veux faire exécuter. Ca permet déjà de voir si ce que tu envois à mysql est bien structuré :
[php]$sql = " SELECT ... "; // on écrit la requête
$query = mysql_query($sql) or ; // on execute la requête
if (!$query) { // on vérifie s'il y a eu une erreur
echo '<br />' . mysql_error(); // le cas échéant on affiche le message d'erreur retourné par MySQL
echo '<br />' . $sql; // on contrôle la requête envoyée
}[/php]
A noter par ailleurs que tu exécutes deux fois la même requêtes sur les mêmes tables, avec les mêmes champs, simplement avec des conditions différentes. Dans ce cas il n'est pas nécessaire de faire un UNION, il suffit simplement d'ajuster la condition dans le WHERE :
[php]$sql = "SELECT workers.nom as Nom, day as Jour, day_month as Le, month as Mois, year as Annee, start as Debut, end as Fin
FROM worktimes ,workers
WHERE workers.id=" . $idworker . "
AND workers.id=worktimes.idworker
AND worktimes.is_active=1
AND ( month=" . $mois . " AND year=" . $annee . " OR month=0)
ORDER BY Nom,Le,Jour,Mois,Annee"[/php]
Ici on va ramener tous les enregistrement du mois/année spécifié ou ayant un mois égal à 0
A noter enfin qu'il est plutôt recommandé d'utiliser un seul champ de type date (pour lequel on pourra utiliser toutes les fonctions concernant les dates) que de découper cette information dans plusieurs champs de type int ou varchar (encore que ça dépend du contexte et du besoin, mais d'une manière générale, c'est quand même plus pratique ;))