Php /MySQL : Verification d'une requete avec if

Résolu/Fermé
Dounilab Messages postés 9 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 11 juin 2014 - 9 févr. 2013 à 17:35
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 11 févr. 2013 à 10:32
Bonjour,

Je suis entrain de programmer une application gestion de parc informatique , ou un utilisateur peut réaliser des emprunt des matériels.

J'ai une table Emprunt ( id_emprunt , date_pret, date_retour_prevu, date_retour_exact, id_personnel, Nserie)

Quand l'utilisateur veut réaliser un empunt , il doit introduire son matricule ( id_personnel) la numero de serie de materiel ( Nserie) et la date de pret et la date de retour dans un formulaire. Quand il clique Ajouter , une rechere doit s'effectuer et doit vérifier si l'user a deja realiser une emprunt à la même date de prêt , car il n'a pas le droit d'emprunter 2 matériels à la fois

Comment puis-je faire cela ?

Merciiiiiiiiiiiiii
A voir également:

1 réponse

Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
9 févr. 2013 à 18:09
Bonjour,

Pour la comparaison de date, ta date dois être en format TIMESTAMP.

Je t'ai montré la voie, une petite recherche sur les comparaisons de date et les timestamp devrai finir de répondre à tes questions.

Cordialement
Exileur


0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
9 févr. 2013 à 19:42
On ne peut pas inclure de "if" dans une requête sql. on peut y ajouter des filtres (where, distinct, etc...)

Pour ce qui est des conditions, il faut créer une requête, retranscrire les résultats dans un tableau puis traiter les informations dans celui ci.
0
Dounilab Messages postés 9 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 11 juin 2014
9 févr. 2013 à 20:27
Hello :)

Merci Exileur pour ta réponse, je pense que je me suis mal exprimée au début, voici mon problème :

J'ai un formulaire d'ajout des emprunts qui contient les informations suivantes : matricule du personnel , N° Série du matériel , Date Prêt et Date retour prévu. et la condition qu'un personnel ne peut pas realiser deux emprunt à la fois.

Pae exmeple si l'utilisateur n° 1 remplit le formulaire , les données s'enregistent à la Table Emprunt ( d_emprunt , date_pret, date_retour_prevu, date_retour_exact, id_personnel, Nserie )

Je veux faire une vérification , que si ce meme utilisateur qui a le n°1 veut réliser un emprunt à la même date que son emprunt précédant , un message s'affiche pour l'informer qu'il ne peut pas réaliser son emprunt.

Voici mon code qui surement contient des erreurs car il fonctionne pas :

$id = $_POST["id"];
$datepret = $_POST["dpret"];
$dateretour = $_POST["dretour"];
$nserie = $_POST["nserie"];

$sql="select id_personnel from emprunt where id_personnel='".$id."' and date_pret BETWEEN $datepret and $dateretour "; ( je ne suis pas sur que la requete est correcte )

$data = mysql_fetch_assoc($sql);

if($data){
?>
<script language="JavaScript">
alert(" vous ne pouvez pas emprunter ");
window.location.replace("ajout_emprunt.php");
</script>
<?php

}
Cordialement

Mercii :)
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
9 févr. 2013 à 21:10
Tu as fait une erreur sur ton select. Tu ne sélectionnes que l'id de l'utilisateur.

$sql="select * from emprunt where id_personnel='".$id."' and date_pret BETWEEN $datepret and $dateretour ";

Pense aussi à bien protéger les variables récupéré avant de les réutiliser dans ton script. Risque d'Injection SQL.
Et rajoutes des quote pour $datepret et $dateretour.

Ce qui donne (sans l'échapement de caractére)


$sql="select * from emprunt where id_personnel='".$id."' and date_pret BETWEEN '$datepret' and '$dateretour' ";

Voila.
0
Dounilab Messages postés 9 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 11 juin 2014
10 févr. 2013 à 02:26
Coucou Exileur ,

J'ai essayé ce que tu m'as dit et ça à marcher mais le problème maintenant c'est que quand un autre utilisatuer veut réaliser un emprunt , il ne peut pas je ne sais pas qu'est ce que je fais comme erreur . Voici le code complet :

<?php
session_start();
include "connx.php";
$mat = $_POST["mat"];
$dpret = $_POST["dpret"];
$dretour = $_POST["dretour"];
$nserie = $_POST["nserie"];

$sql="select id_pers from emprunt where id_pers='".$mat."' and date_pret BETWEEN '$dpret' and '$dretour'";
$data = mysql_query($sql)or die (mysql_error());

if(isset($_POST["dpret"])):
$date1 = $_POST["dpret"];
$date2 = $_POST["dretour"];

$d1 = new DateTime($date1);
$d2 = new DateTime($date2);
if ( $d1 > $d2 ):
?>
<script language="JavaScript">
alert("La date de debut doit être inferieure a la date de fin ;");
window.location.replace("ajout_emprunt.php");
</script>
<?php


endif;

endif;

if(isset ($data)):
?>
<script language="JavaScript">
alert(" vous ne pouvez pas ");
window.location.replace("ajout_emprunt.php");
</script>
<?php
endif;

$requete="insert into emprunt (id_emp,date_pret, date_retour_prevu,date_retour_exact, id_pers, Nserie) values('','$dpret','$dretour','0000-00-00','$mat','$nserie')";
$resultat=mysql_query($requete)or die (mysql_error());

if ($resultat)
{
?>
<script language="JavaScript">
alert("L'enregistrement a ete bien ajoute;");
window.location.replace("ajout_emprunt.php");// On inclut le formulaire d'identification
</script>
<?php

}

?>

Merci beaucoup :)

Cordialement
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
10 févr. 2013 à 10:19
Coucou,

$sql="select id_pers from emprunt where id_pers='".$mat."' and date_pret BETWEEN '$dpret' and '$dretour'"; ?????

Dans quel format est enregistré la date dans la base de donnée ?
As-tu essayé un mysql_fetch_array pour vérifier que les résultats de ta requête corresponde bien à ce que tu souhaites?

Je ne pense pas que le between soit une bonne solution, je m'explique :

nous sommes le 10 février.
Un utilisateur a fait un emprunt du 15 au 17 février.
Si l'utilisateur demande un nouvel emprunt du 14 au 18
puis un autre du 13 au 17 il pourra effectuer ses emprunts sans problèmes...
0