Prb de requête
Résolu
simsim
-
sly-bzh Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
sly-bzh Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
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 */
}
}
}
}
}
?>
A voir également:
- Prb de requête
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Erreur de requete facebook - Forum Facebook
- Requete sql pix - Forum PHP
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Windev
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 :
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 ?
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 ?
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 ;)
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
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
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 :
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."); }
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
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 :
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 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 ?
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;
}
}
/* 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;
}
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