condition where et date.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : condition where et date.

Re: condition where et date.

par Ryle » 11 mai 2012, 17:56

Ben en l'occurrence il ne te sors pas de 18 mai, et le 11/05 est bien inférieur au 11/05 16h12 .. donc à priori ta requête est bonne.

A voir peut être ce que fait ta fonction $get_date qui ne semble pas traficoter ta date comme tu le souhaiterais :)

Re: condition where et date.

par piotrowski-s » 11 mai 2012, 16:12

ça m'a sorti cela comme résultat:
2012-05-11	2012-05-11 16:12:02
2012-05-11	2012-05-11 16:12:02
2012-05-11	2012-05-11 16:12:02
donc ça doit être l'heure qui fait bugger?

Re: condition where et date.

par Mazarini » 11 mai 2012, 13:49

Via phpmyadmin, tu peux essayer de faire la requete :
SELECT date_action,now()  FROM liasse_a where   date_action < now() order by date_action
Ca te donnera peu être une idée.

Re: condition where et date.

par piotrowski-s » 10 mai 2012, 09:27

j'ai juste un tout petit soucis, en fait voici le code
 <?php if (isset($_GET['liasse']) AND $_GET['liasse']=='liasse_a') { ?>
<?php
 
$sql = "SELECT * FROM liasse_a where n_doss='".mysql_real_escape_string($_GET['n_doss'])."' AND  date_action < now() ";
$qry = mysql_query($sql) or die(__LINE__.mysql_error().$sql);
 
$get_date = function($data_jours) {
   $today = new DateTime();
   $today->setTime(0, 0);
   $jours = (isset($_POST['jours']) && ctype_digit($_POST['jours'])) ? $_POST['jours'] : 0;
   if (isset($_POST['submit']) && ($_POST['submit'] === 'moins')) {
      $jours = -$jours;
   }
   $nb       = $data_jours + $jours;
   $func     = ($nb < 0) ? 'sub' : 'add';
   $interval = new DateInterval("P{$nb}D");
   return $today->$func($interval)->format('d-m-Y');
};
$i = -1; // index des enregistrements
?>
<table cellpadding="5" cellspacing="5">
   <tr>
      <td><strong>CODE SCENARIO</strong></td>
      <td><strong>LIBELLE</strong></td>
      <td><strong>ACTION</strong></td>
      <td><strong>DESCRIPTION</strong></td>
      <td><strong>DATE</strong></td>
   </tr>
   <form action="<?php echo (isset($_POST['go'])) ? 'go2.php' : '#'; ?>" method="post">
      <input type="hidden" name="liasse" value="<?php echo $_GET['liasse']; ?>"/>
      <input type="hidden" name="n_doss" value="<?php echo $_GET['n_doss']; ?>"/>
      <?php while($row = mysql_fetch_assoc($qry)): ?>
      <tr>
         <td><input name="data[<?php echo ++$i; ?>][code_s]" type="text" value="<?php echo $row['code_s'];?>" size="10"></td>
         <td><input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['libelle']; ?>" size="45"></td>
         <td><input name="data[<?php echo $i; ?>][action]" type="text" value="<?php echo $row['action']; ?>" size="15"></td>
         <td><input name="data[<?php echo $i; ?>][libelle]" type="text" value="<?php echo $row['description']; ?>" size="55"></td>
         <td><input type="text" name="data[<?php echo $i; ?>][date]" value="<?php $jours = date('d-m-Y',strtotime($row['date_action'])) ; echo $get_date($jours) ; ?>" size="12"></td>
      </tr>
      <?php endwhile; ?>
      <p>
         <strong>Décalage des date </strong>
         <table width="150" border="0" cellspacing="0" cellpadding="0">
            <tr>
               <td align="center" bgcolor="#FFFF99">
                  <input type="image" src="images/minus_remove_green.png" width="22" height="22" name="submit"  value="moins" />
                  <input name="jours" type="text" value="" size="5" />
                  <input type="image" src="images/plus_add_green.png" width="22" height="22" name="submit" value="plus" />
               </td>
            </tr>
         </table>
d'office il m'incrémente 10 jours, sans que je ne lui ai demandé. Par exemple, j'ai des enregistrements au 8 mai dans ma bdd, et lui il m'affiche avec la condition < a now() le 18 mai, or si c'était le cas ca ne serait pas possible.

du coup je ne sais pas, je penses que cela vient de la fonction, mais je ne sais pas comment et pourquoi.

Re: condition where et date.

par albat » 09 mai 2012, 21:06

excellent, merci à tous, n'y a t'il point en ce site de bouton résolu? :)
He'll be back. Image

Re: condition where et date.

par piotrowski-s » 09 mai 2012, 17:57

excellent, merci à tous, n'y a t'il point en ce site de bouton résolu? :)

Re: condition where et date.

par Ryle » 09 mai 2012, 17:45

Il ne faut qu'un seul WHERE dans ta requête SQL :) Le message d'erreur t'indique l'endroit exact à partir duquel l'erreur survient, donc s'il te dit que l'erreur est "near 'where date_action < date('Y-m-d')'", c'est que le problème est situé juste avant ce where date_action

$sql = "SELECT * FROM liasse_a where n_doss='".mysql_real_escape_string($_GET['n_doss'])."' AND where date_action < date('Y-m-d') ";

La syntaxe est WHERE cond1 AND cond2 AND cond3 ... et non pas WHERE cond1 AND WHERE cond2 ...


Ps : la syntaxe " date('Y-m-d') ", c'est du php, pas du SQL. Tu peux utiliser NOW() sous MySQL pour obtenir la date du jour :)

Edit : Hmph.. grillé.. :)

Re: condition where et date.

par Ripat » 09 mai 2012, 17:41

N'y aurait-il pas un WHERE de trop?

condition where et date.

par piotrowski-s » 09 mai 2012, 16:58

Bonjour à tous, j'ai un soucis, lors d'une requête, il me met un message d'erreur. voici ma requête:
$sql = "SELECT * FROM liasse_a where n_doss='".mysql_real_escape_string($_GET['n_doss'])."' AND where date_action < date('Y-m-d') ";
en sachant que le champ date_action est au format DATE et non varchar. Du coup je ne sais pas
mais j'ai cette erreur:

Code : Tout sélectionner

245You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where date_action < date('Y-m-d')' at line 1SELECT * FROM liasse_a where n_doss='110015666223' AND where date_action < date('Y-m-d')
d'avance merci pour votre aide.