Prb de requête
Résolu
simsim
-
sly-bzh Messages postés 417 Statut Membre -
sly-bzh Messages postés 417 Statut Membre -
Bonjour,
j'ai un pb d'exécution d'une requête pour vérifier si un champs se trouve ds la base de données:,j'arrive à supprimer mais j'arrive pas à vérifier cette requête.
voilà moncode:
<?
if(isset($_GET['bouton_supprimer']))
{
/* Chroinologie des des heures de début et de fin du cours */
if($_GET['liste_debut'] >= $_GET['liste_fin'])
alerte("Chronologie entre les heures de début et de fin du cours incorrecte.");
else
{
// La date existe-t-elle ?
if(!checkdate($mois,$jour,$annee)) alerte("Le $jour/$mois/$annee n\'est pas une date valide !");
else
{
// Récupération de la date avec le format jj/mm/aaaa
$date = date("d/m/Y",mktime(0,0,0,$mois,$jour,$annee));
// La date fait-elle partie de l'année universitaire ?
if((ecart_entre_deux_dates($date_debut,$date)<0) || (ecart_entre_deux_dates($date_fin,$date)>0))
alerte("Le ".date_francais($jour,$mois,$annee)." ne fait pas partie de l\'année universitaire.");
else
{
$debut = $_GET['liste_debut'];
$fin = $_GET['liste_fin'];
$duree = $fin - $debut;
//$id_salle = $_GET['liste_salles'];
$id_promotion = $_GET['liste_promotion'];
if(isset($_GET['case_classe']))
{
$id_groupe = NULL;
$case_classe = $_GET['case_classe'];
}
else
{
$id_groupe = $_GET['liste_groupe'];
$case_classe = NULL;
}
/* nb groupe : si n'estpas > 1 alors $id_groupe = NULL */
/*$requete_nb_groupes = "SELECT id_groupe FROM groupes WHERE id_promotion = '$id_promotion'";
$resultat = mysql_query($requete_nb_groupes,$connect) or die ("Erreur : ".mysql_error());
$nb_groupes = mysql_num_rows($resultat);
if($nb_groupes<2) $id_groupe = NULL;*/
/* Vérification qu'aucun cours est déjà crée dans la période indiquée */
@$requete_verif_heure_cours2 =
"SELECT heure_debut,duree FROM cours
WHERE ((heure_debut < '$debut' AND heure_debut + duree > '$debut')
OR (heure_debut < '$fin' AND (heure_debut + duree) >= '$fin')
OR (heure_debut >= $debut AND (heure_debut + duree) <= '$fin'))
AND date = '$date' AND id_promotion = '$id_promotion'
AND (id_groupe='0' OR id_groupe = '$id_groupe')";
$resultat = mysql_query($requete_verif_heure_cours2,$connect) or die ("Erreur : ".mysql_error());
//echo $requete_verif_heure_cours;
// S'il y a un cours sur cette plage alors la suppression ne peut pas se faire
$nb = mysql_num_rows($resultat);
//echo "<br> $nb";
if($nb>0)
alerte("Aucun cours n'est défini sur ce créneau dans cette promotion.");
if(!isset($id_promotion) || !isset($id_module) || !isset($id_enseignant))
{
alerte("Vous ne pouvez pas supprimer ce cours car certains champs sont vides.");
exit;
}
if(isset($_GET['text_salles']) && (empty($_GET['text_salles']) || $_GET['text_salles'] == "Saisir la salle"))
alerte("La salle n\'a pas été saisie.");
else {
$id_cours=id_cours;
$id = $_GET['id'];
$requete_suppression = "DELETE FROM cours WHERE id_cours = $id_cours";
mysql_query($requete_suppression,$connect) or die ("Erreur : ".mysql_error());
alerte("Le cours a bien été supprimé");
/* Le formulaire de suppression a été envoyé, on a cliqué sur le bouton supprimer le cours */
}
}
}
}
}
?>
j'ai un pb d'exécution d'une requête pour vérifier si un champs se trouve ds la base de données:,j'arrive à supprimer mais j'arrive pas à vérifier cette requête.
voilà moncode:
<?
if(isset($_GET['bouton_supprimer']))
{
/* Chroinologie des des heures de début et de fin du cours */
if($_GET['liste_debut'] >= $_GET['liste_fin'])
alerte("Chronologie entre les heures de début et de fin du cours incorrecte.");
else
{
// La date existe-t-elle ?
if(!checkdate($mois,$jour,$annee)) alerte("Le $jour/$mois/$annee n\'est pas une date valide !");
else
{
// Récupération de la date avec le format jj/mm/aaaa
$date = date("d/m/Y",mktime(0,0,0,$mois,$jour,$annee));
// La date fait-elle partie de l'année universitaire ?
if((ecart_entre_deux_dates($date_debut,$date)<0) || (ecart_entre_deux_dates($date_fin,$date)>0))
alerte("Le ".date_francais($jour,$mois,$annee)." ne fait pas partie de l\'année universitaire.");
else
{
$debut = $_GET['liste_debut'];
$fin = $_GET['liste_fin'];
$duree = $fin - $debut;
//$id_salle = $_GET['liste_salles'];
$id_promotion = $_GET['liste_promotion'];
if(isset($_GET['case_classe']))
{
$id_groupe = NULL;
$case_classe = $_GET['case_classe'];
}
else
{
$id_groupe = $_GET['liste_groupe'];
$case_classe = NULL;
}
/* nb groupe : si n'estpas > 1 alors $id_groupe = NULL */
/*$requete_nb_groupes = "SELECT id_groupe FROM groupes WHERE id_promotion = '$id_promotion'";
$resultat = mysql_query($requete_nb_groupes,$connect) or die ("Erreur : ".mysql_error());
$nb_groupes = mysql_num_rows($resultat);
if($nb_groupes<2) $id_groupe = NULL;*/
/* Vérification qu'aucun cours est déjà crée dans la période indiquée */
@$requete_verif_heure_cours2 =
"SELECT heure_debut,duree FROM cours
WHERE ((heure_debut < '$debut' AND heure_debut + duree > '$debut')
OR (heure_debut < '$fin' AND (heure_debut + duree) >= '$fin')
OR (heure_debut >= $debut AND (heure_debut + duree) <= '$fin'))
AND date = '$date' AND id_promotion = '$id_promotion'
AND (id_groupe='0' OR id_groupe = '$id_groupe')";
$resultat = mysql_query($requete_verif_heure_cours2,$connect) or die ("Erreur : ".mysql_error());
//echo $requete_verif_heure_cours;
// S'il y a un cours sur cette plage alors la suppression ne peut pas se faire
$nb = mysql_num_rows($resultat);
//echo "<br> $nb";
if($nb>0)
alerte("Aucun cours n'est défini sur ce créneau dans cette promotion.");
if(!isset($id_promotion) || !isset($id_module) || !isset($id_enseignant))
{
alerte("Vous ne pouvez pas supprimer ce cours car certains champs sont vides.");
exit;
}
if(isset($_GET['text_salles']) && (empty($_GET['text_salles']) || $_GET['text_salles'] == "Saisir la salle"))
alerte("La salle n\'a pas été saisie.");
else {
$id_cours=id_cours;
$id = $_GET['id'];
$requete_suppression = "DELETE FROM cours WHERE id_cours = $id_cours";
mysql_query($requete_suppression,$connect) or die ("Erreur : ".mysql_error());
alerte("Le cours a bien été supprimé");
/* Le formulaire de suppression a été envoyé, on a cliqué sur le bouton supprimer le cours */
}
}
}
}
}
?>
Configuration: Windows XP Internet Explorer 6.0
9 réponses
-
Bonsoir,
Je ne vois pas d'erreurs flagrantes dans ton code hormis des parenthèses qui manquent dans ta requête SQL ://WHERE ((heure_debut < '$debut' AND heure_debut + duree > '$debut') à remplacer par : WHERE ((heure_debut < '$debut' AND (heure_debut + duree) > '$debut')
Si l'ajout de ces parenthèses ne résout pas ton problème, j'aimerais avoir 2-3 petites précisions. Mais avant cela je voudrais être sûr d'avoir bien compris : ton problème se situe bien au niveau de ta requête SQL @$requete_verif_heure_cours2 n'est-ce pas ?
Si tel est le cas pourrais-tu répondre à ces questions s'il te plait :
- J'aimerais d'abord savoir comment tu récupères $debut et $fin ou plutôt sous quelle forme tu les récupères ?
- Ensuite : es-tu sûr du format de stockage de "heure_debut" et "duree" dans ta base de donnée ?
- Enfin si tu fais un test simple du style "SELECT heure_debut,duree FROM cours WHERE date='$date'" Ca te retourne bien des données ?
Mais si ton soucis ne se situe pas dans cette requête peux-tu me dire où il se trouve s'il te plait ?-
merci bcp pour votre réponse,
ben j'ai déjà une autre requête des ajouts qui se situe sur la mm page et qu'elle fonctionne bien , ou il y a aussi la mmrequete de SQL @$requete_verif_heure_cours2 ,ben je voulais juste vous préciser que je suis pas hyperdouée en php , mais j'ai un truc à rendre et c très urgent , merci bcppp pour votre aide
-
-
L'ajout des parenthèse n'a pas résolu ton problème ?
d'ailleurs quel est ton problème EXACTEMENT ?
Un exemple aiderait je pense à bien comprendre ;)-
non ça marche pas mm avec les parenthèses.
ben mon poblème c'est k je vx k cette requête avant de supprimer les lignes de base de données ,elle doit vérifier s'il y a klk chose ou pas à supprimer , et elle doit m'afficher "alerte" "il n'ya pas de cours sur ce crénau d'horaire".
par exemple pour ma requête d'ajout: elle vérifie avant tt s'il y a un cours avant de l'ecraser .
c'est c k je vx.
merci
-
-
à l'aide svp,
non ça marche pas mm avec les parenthèses.
ben mon poblème c'est k je vx k cette requête avant de supprimer les lignes de base de données ,elle doit vérifier s'il y a klk chose ou pas à supprimer , et elle doit m'afficher "alerte" "il n'ya pas de cours sur ce crénau d'horaire".
par exemple pour ma requête d'ajout: elle vérifie avant tt s'il y a un cours avant de l'ecraser .
c'est c k je vx.
merci -
Ben justement dans ton code tu mets :
if($nb>0) { alerte("Aucun cours n'est défini sur ce créneau dans cette promotion."); }
Or si je comprend bien ce que tu as codé, si $nb est supérieur à 0 c'est justement qu'il y a un cours de défini sur ce créneau étant donné que ta requète SQL te renvois au moins une réponse
Au contraire tu devrais faire :if($nb==0) { alerte("Aucun cours n'est défini sur ce créneau dans cette promotion."); } if(!isset($id_promotion) || !isset($id_module) || !isset($id_enseignant)) { alerte("Vous ne pouvez pas supprimer ce cours car certains champs sont vides."); exit; } if(isset($_GET['text_salles']) && (empty($_GET['text_salles']) || $_GET['text_salles'] == "Saisir la salle")) { alerte("La salle n\'a pas été saisie."); } else { $id_cours=id_cours; $id = $_GET['id']; $requete_suppression = "DELETE FROM cours WHERE id_cours = $id_cours"; mysql_query($requete_suppression,$connect) or die ("Erreur : ".mysql_error()); alerte("Le cours a bien été supprimé"); /* Le formulaire de suppression a été envoyé, on a cliqué sur le bouton supprimer le cours */ } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
j'ai modifié ça , mais ça me donne la mm chose , toujours elle m'a ffiche pas l'allerte alerte("Aucun cours n'est défini sur ce créneau dans cette promotion.");
ben ça m'affole vraiment -
Bon ben on va se lancer dans le debuggage pas à pas alors...
Tu vas me lancer ce script et voir ce qui sort :<? if(isset($_GET['bouton_supprimer'])) { echo "on entre bien dans le premier if : on a cliqué sur le bouton supprimer<br/>"; /* Chroinologie des des heures de début et de fin du cours */ if($_GET['liste_debut'] >= $_GET['liste_fin']) { alerte("Chronologie entre les heures de début et de fin du cours incorrecte."); } else { echo "on est bien entré dans le 2ème if : $_GET['liste_debut'] >= $_GET['liste_fin'] <br/>"; // La date existe-t-elle ? if(!checkdate($mois,$jour,$annee)) } alerte("Le $jour/$mois/$annee n\'est pas une date valide !"); } else { echo "On est entré dans le 3ème if : la date entrée est bonne et est de la forme : "; // Récupération de la date avec le format jj/mm/aaaa $date = date("d/m/Y",mktime(0,0,0,$mois,$jour,$annee)); echo $date."<br/>"; // La date fait-elle partie de l'année universitaire ? if((ecart_entre_deux_dates($date_debut,$date)<0) || (ecart_entre_deux_dates($date_fin,$date)>0)) { alerte("Le ".date_francais($jour,$mois,$annee)." ne fait pas partie de l\'année universitaire."); } else { echo "on est entré dans le 4ème if : la date fait bien partie de l'année universitaire"; $debut = $_GET['liste_debut']; $fin = $_GET['liste_fin']; $duree = $fin - $debut; //$id_salle = $_GET['liste_salles']; $id_promotion = $_GET['liste_promotion']; echo '$debut = '.$debut.'<br/>'; echo '$fin = '.$fin.'<br/>'; echo '$duree = '.$duree.'<br/>'; if(isset($_GET['case_classe'])) { $id_groupe = NULL; $case_classe = $_GET['case_classe']; } else { $id_groupe = $_GET['liste_groupe']; $case_classe = NULL; } echo '$id_groupe = '.$id_groupe.'<br/>'; echo '$cas_classe = '.$case_classe.'<br/>'; /* nb groupe : si n'estpas > 1 alors $id_groupe = NULL */ /*$requete_nb_groupes = "SELECT id_groupe FROM groupes WHERE id_promotion = '$id_promotion'"; $resultat = mysql_query($requete_nb_groupes,$connect) or die ("Erreur : ".mysql_error()); $nb_groupes = mysql_num_rows($resultat); if($nb_groupes<2) $id_groupe = NULL;*/ /* Vérification qu'aucun cours est déjà crée dans la période indiquée */ @$requete_verif_heure_cours2 = "SELECT heure_debut,duree FROM cours WHERE ((heure_debut < '$debut' AND heure_debut + duree > '$debut') OR (heure_debut < '$fin' AND (heure_debut + duree) >= '$fin') OR (heure_debut >= $debut AND (heure_debut + duree) <= '$fin')) AND date = '$date' AND id_promotion = '$id_promotion' AND (id_groupe='0' OR id_groupe = '$id_groupe')"; echo "<br/> La requète qui va s'exécuter est la suivante : <br/> $requete_verif_heure_cours2<br/>"; $resultat = mysql_query($requete_verif_heure_cours2,$connect) or die ("Erreur : ".mysql_error()); //echo $requete_verif_heure_cours; // S'il y a un cours sur cette plage alors la suppression ne peut pas se faire $nb = mysql_num_rows($resultat); echo "on a nb = $nb<br/>"; if($nb==0) { echo 'on est dans le if testant le nombre, donc $nb est égal à 0<br/>'; alerte("Aucun cours n'est défini sur ce créneau dans cette promotion."); } if(!isset($id_promotion) || !isset($id_module) || !isset($id_enseignant)) { alerte("Vous ne pouvez pas supprimer ce cours car certains champs sont vides."); exit; } if(isset($_GET['text_salles']) && (empty($_GET['text_salles']) || $_GET['text_salles'] == "Saisir la salle")) { alerte("La salle n\'a pas été saisie."); } else { echo "on est dans le else amenant la requète de suppression qui est la suivante : <br/>"; $id_cours=id_cours; $id = $_GET['id']; $requete_suppression = "DELETE FROM cours WHERE id_cours = $id_cours"; echo $requete_suppression; mysql_query($requete_suppression,$connect) or die ("Erreur : ".mysql_error()); alerte("Le cours a bien été supprimé"); /* Le formulaire de suppression a été envoyé, on a cliqué sur le bouton supprimer le cours */ } } } } } ?>-
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\emplois_tps\creation_emplois_temps.php on line 527
la ligne est :
echo "on est bien entré dans le 2ème if : $_GET['liste_debut'] >= $_GET['liste_fin'] <br/>";
après que j'ai fait le debogage de tt le code , qd je change la date il me donne" le cours est supprimé" sans toucher au bouton supprimer et qd je clique sur ajouter il me fait cours supprimé et aussi insertion effectué.
-
-
La parse error tu l'as corrigée n'est-ce pas ? Tu remplaces la ligne par :
echo "on est bien entré dans le 2ème if : _GET['liste_debut'] >= _GET['liste_fin'] <br/>";
Et tu ne veux pas me faire un copier/coller de ce que ça sort exactement s'il te plait ? -
merci bcp pour ton aide et c'est grace à $nb=0 que tu m'avais proposé, et j'ai modifié aussi la requête.
}
/* nb groupe : si n'estpas > 1 alors $id_groupe = NULL */
/*$requete_nb_groupes = "SELECT id_groupe FROM groupes WHERE id_promotion = '$id_promotion'";
$resultat = mysql_query($requete_nb_groupes,$connect) or die ("Erreur : ".mysql_error());
$nb_groupes = mysql_num_rows($resultat);
if($nb_groupes<2) $id_groupe = NULL;*/
@$requete_verif_heure_cours =
"SELECT heure_debut,duree FROM cours
WHERE ((heure_debut < '$debut' AND (heure_debut + duree) > '$debut')
OR (heure_debut < '$fin' AND (heure_debut + duree) >= '$fin')
OR (heure_debut >= $debut AND (heure_debut + duree) <= '$fin'))
AND date = '$date' AND id_promotion = '$id_promotion'
AND (id_groupe='0' OR id_groupe = '$id_groupe')";
$resultat = mysql_query($requete_verif_heure_cours,$connect) or die ("Erreur : ".mysql_error());
//echo $requete_verif_heure_cours;
// S'il y a un cours sur cette plage alors l'insertion ne peut pas se faire
$nb = mysql_num_rows($resultat);
//echo "<br> $nb";
if($nb==0){
alerte("Aucun cours n'est défini sur ce créneau dans cette promotion.");
exit;
} -