Prb de requête

Résolu/Fermé
simsim - 28 mai 2008 à 16:31
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 - 30 mai 2008 à 14:19
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 */
}
}

}
}
}




?>

9 réponses

sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
29 mai 2008 à 00:30
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 ?
0
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
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
29 mai 2008 à 10:56
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 ;)
0
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
0
à 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
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
30 mai 2008 à 00:35
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 */
}
0

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
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
30 mai 2008 à 02:14
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 */
}
}

}
}
}
?>
0
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é.
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
30 mai 2008 à 03:10
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 ?
0
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;
}
0
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 118
30 mai 2008 à 14:19
Et donc ça marche ?
Content d'avoir aidé alors :D
0