Page 1 sur 1

condition where et date.

Posté : 09 mai 2012, 16:58
par piotrowski-s
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.

Re: condition where et date.

Posté : 09 mai 2012, 17:41
par Ripat
N'y aurait-il pas un WHERE de trop?

Re: condition where et date.

Posté : 09 mai 2012, 17:45
par Ryle
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.

Posté : 09 mai 2012, 17:57
par piotrowski-s
excellent, merci à tous, n'y a t'il point en ce site de bouton résolu? :)

Re: condition where et date.

Posté : 09 mai 2012, 21:06
par albat
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.

Posté : 10 mai 2012, 09:27
par piotrowski-s
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.

Posté : 11 mai 2012, 13:49
par Mazarini
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.

Posté : 11 mai 2012, 16:12
par piotrowski-s
ç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.

Posté : 11 mai 2012, 17:56
par Ryle
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 :)