Alerte doublons + update

Alerte doublons + update - PHP - Programmation

Marsh Posté le 19-02-2009 à 16:54:08    

Bonjour :)
 
J'aimerai vérifier que mon champs "date" n'est pas déjà dans la bdd sinon ça retourne une erreur mais pas seulement.
J'aimerai en plus effectuer une modification dans la base, si la personne confirme qu'elle souhaite écraser le contenu précédent.
 
Je suis pour le moment que sur la partie "vérification" du champs qui ne fonctionne pas bien sur :p. Je vous joints mon code pour information j'ai une boucle "for" qui me permet d'ajouter autant d'entré que d'utilisateurs car mon formulaire renvoie un listing d'utilisateur qui se trouve dans ma BDD.
J'espère être clair :x
 

Code :
  1. <?php
  2. if(isset($_POST['valider']))
  3. {
  4. $indice = $_POST['numIndice'];
  5. $valider = $_POST['valider'];
  6. $date = $_POST['date'];
  7. function user_exists($date)
  8. {
  9. $sql = 'SELECT date FROM presence WHERE date = \'' . addslashes($date) . '\' LIMIT 1';
  10. $res = mysql_query($sql) or die (mysql_error());
  11. return (mysql_num_rows($res) == 1);
  12. }
  13. if(empty($_POST["date"]))
  14. {
  15. echo "Attention un des champs n'est pas correctement remplit.<a href='accueil.php'>Verifier</a>.";
  16. }
  17. else
  18. {
  19. if (user_exists($date))
  20. {
  21. echo('date deja enregistrer!<br />');
  22. }
  23. else
  24. {
  25. if ( $indice > 0 ) {
  26. for ( $i=0; $i < $indice; $i++ )
  27. {
  28. $nservice=$_POST['nservice'.$i];
  29. $agent=$_POST['agent'.$i];
  30. $nchrono=$_POST['nchrono'.$i];
  31. $etat=$_POST['etat'.$i];
  32. $login=$_POST['login'.$i];
  33. $requete ="INSERT INTO presence (id,nservice,date,agent,nchrono,etat,login) values ('','$nservice','$date','$agent','$nchrono','$etat','$login')";
  34. mysql_query($requete);
  35. }
  36. mysql_close();
  37. echo "La date &agrave; bien &eacute;t&eacute; prise en charge pour les ".$indice." agent";
  38. }
  39. }
  40. else
  41. echo "Merci de bien remplir le formulaire";
  42. ?>


 
vous pouvez retourner au <a href="accueil.php">menu principal</a>
 
Merci de votre aide future

Reply

Marsh Posté le 19-02-2009 à 16:54:08   

Reply

Marsh Posté le 19-02-2009 à 17:03:29    

angelusflm a écrit :

Je suis pour le moment que sur la partie "vérification" du champs qui ne fonctionne pas bien sur :p.  
J'espère être clair :x


Ben justement, non...
Il ne fonctionne pas = ?
- Il plante ? Message d'erreur ?
- Le résultat n'est pas conforme aux attentes ? Pourquoi ?
- Ca dépend des cas ?
- Le PC crash et prend feu ?

Reply

Marsh Posté le 20-02-2009 à 09:30:15    

Ca ne fonctionne pas depuis que j'ai mis ma fonction tri j'ai cette erreur
 
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.2009' at line 1"

Reply

Marsh Posté le 20-02-2009 à 09:45:22    

angelusflm a écrit :

Ca ne fonctionne pas depuis que j'ai mis ma fonction tri j'ai cette erreur
 
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.2009' at line 1"


Ligne 12 :

Code :
  1. $sql = 'SELECT date FROM presence WHERE date = \'' . addslashes($date) . '\' LIMIT 1';
  2. $res = mysql_query($sql) or die ($sql.'<br />'.mysql_error());


Ca va t'afficher la requête utilisée - si c'est bien celle-là qui plante...
 
Et après, c'est un problème de syntaxe SQL (a priori)

Reply

Marsh Posté le 20-02-2009 à 09:59:11    

En faite je mal écrit ma requête je dois écrire 'SELECT `date` FROM ...
 
Maintenant il voit bien que j'ai déjà cette date d'enregistrement mais il m'ajoute quand même les donné dans la base :x

Reply

Marsh Posté le 20-02-2009 à 10:02:03    

Et je ne peux pas créer un champs UNIQUE sur date puisque plusieurs agent peuvent avoir la même date

Reply

Marsh Posté le 20-02-2009 à 11:17:39    

angelusflm a écrit :

En faite je mal écrit ma requête je dois écrire 'SELECT `date` FROM ...
 
Maintenant il voit bien que j'ai déjà cette date d'enregistrement mais il m'ajoute quand même les donné dans la base :x


Cours vite faire breveter ça ! Un PC qui voit  :sol:  
Sérieusement, tu as un IF ... THEN ... ELSE ...
Donc, soit ta condition est remplie et tu passes dans le THEN, soit elle ne l'est pas et tu passes dans le ELSE.
Tu ne peux pas passer dans les deux à la fois...
 
1. Tu es sûr de ta syntaxe php ? Parce que là, si je vois bien, ta fonction user_exists($date) est dans le IF...
 
2. Essaye d'alléger tes imbrications de IF ... THEN ... ELSE, parce que là c'est un peu le foutoir. En fait, si tu as bien envoyé ton code, il y a un ELSE ... ELSE ... !
=> Pense à bien indenter ton code, ça aide...
 
3. Si ton schéma de BDD est correct, tu ne devrais pas avoir de problème pour faire ce que tu veux faire.
Un point important quand on travaille avec des BDDs : si une tâche demande trop de travail à implémenter, c'est quasiment tout le temps un  
problème de concetpion de BDD...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed