Problèmes avec la fonction now()

Fermé
mousaki - 31 mai 2008 à 15:29
 mousaki - 31 mai 2008 à 16:42
bonjour a tous...

je suis au désespoir.. quelqu'un pourr t il me sortir de là ??

voici mon problème.. j'écris un flux RSS avec certaines données triéées de ma base de données
voici quelques clés pour comprendre mon problème
mes entrées comportent les champs suivants :
start_date : date de départ de mon événement
end_date : date de fin de mon événement
endtime : heure de fin de mon événement

si mon événement se termine à 15:30, endtime = 930 (timestamp unix)

mais voila je cherche a supprimer de mon tri toutes les entrées comportant un endtime inférieur à mon heure actuelle :
ex : entrée avec endtime à 13:00 (soit 780), et qu'il est 14:00 (soit 840) je ne voudrais pas l'afficher...

voici donc mon code et en italique et souligné l'endroit qui me pose problème.. lorsque je place ce code... cela ne marche pas.. quelqu'un aurait il une super idée ??

merci d'avance

$query = 'SELECT res.*, rs.name, rs.rphone, rs.location FROM '
. $this->get_table('reservations') . ' as res INNER JOIN '
. $this->get_table('resources') . ' as rs ON rs.machid=res.machid'
. ' WHERE res.machid=?'
. ' AND (res.start_date=? OR (res.start_date<=? AND res.end_date>=?)) '
. ' AND res.endtime>=minute(now())'
. ' AND res.is_blackout <> 1'
. " ORDER BY res.start_date DESC, rs.name, res.starttime DESC";
A voir également:

6 réponses

Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
31 mai 2008 à 15:31
NOW() ne donne pas un timestamp Oo
tu compare un BIGINT avec une DATE Oo
0
Merci,
alors comment puis je faire ??
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
31 mai 2008 à 16:00
le fonction time() recupere le timestamp actuel
0
oui mais voila, si je remplace par :
' AND res.endtime>=time()'
ou
' AND res.endtime>=minute (time())'

j'ai droit à une erreur et cela ne marche plus...
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
31 mai 2008 à 16:16
fais $tsa=time(); ( tsa pr TimeStampActuel )
puis AND res.endtime>='".$tsa."'
0
il me renvoie une parse error à la ligne concernée :
269. ' AND res.endtime>='".$tsa."'

erreur renvoyée :

Un seul élément de niveau supérieur est autorisé dans un document XML.
Ligne : 2 Caractère : 2

<b>Parse error</b>: parse error in <b>h:\www\lib\DBEngine.class.php</b> on line <b>269</b><br />

voila ma fonction en entier :
function get_resource_reservations($id, $order, $vert, $include_participating = false)
{
$return = array();
$tsa=time(); //( tsa pr TimeStampActuel )

// Clean out the duplicated order so that MSSQL is OK
$orders = trim(preg_replace("/(res|rs).$order,?/", '', 'res.start_date, rs.name, res.starttime'));
if (strrpos($orders, ',') == strlen($orders)-1) {
$orders = substr($orders, 0, strlen($orders)-1);
}

$query = 'SELECT res.*, rs.name, rs.rphone, rs.location FROM '
. $this->get_table('reservations') . ' as res INNER JOIN '
. $this->get_table('resources') . ' as rs ON rs.machid=res.machid'
//. $this->get_table('reservation_resources') . ' as resresources ON resresources.resid=res.resid'
. ' WHERE res.machid=?'
. ' AND (res.start_date=? OR (res.start_date<=? AND res.end_date>=?)) '
. ' AND res.endtime>='".$tsa."'
//. ' AND res.end_date>=date(now())'
. ' AND res.is_blackout <> 1'
. " ORDER BY res.start_date DESC, rs.name, res.starttime DESC";

$values = array($id, mktime(0,0,0), mktime(0,0,0), mktime(0,0,0));

// Prepare query
$q = $this->db->prepare($query);

// Execute query
$result = $this->db->execute($q, $values);

//print_r($result);

// Check if error
$this->check_for_error($result);

if ($result->numRows() <= 0) {
$this->err_msg = translate('You do not have any reservations scheduled.');
return false;
}

while ($rs = $result->fetchRow()) {
$return[] = $this->cleanRow($rs);
}

$result->free();

return $return;
}
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46
31 mai 2008 à 16:36
quand j'ai ecris '".$tsa."' je voulais te dire de concatener ^^
mais toi tu as commencé ton expression par ' alr concatenes a ta facon ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pour info, si je simule en dur pour voir si cela marche ex :
' AND res.endtime>=800'

tout est OK comme je veux mais pas dynamique en fonction de l'heure actuelle...
0
EUh!!! tu m'en veux si je te dis que j'ai pas tout compris à ta réponse ??
0