PDA

View Full Version : esame imminente: aiuto per PHP!!!!


l3golas84
24-07-2006, 11:44
Ringrazio innanzitutto chi legge per l'attenzione. Ho un esame in cui presento un progetto in PHP, l'unico problema è che ho un warning fastidioso... ecco il codice:
function check_reservation(){
global $db_tabella5;
global $db_database;
global $Connection;
$query ='SELECT Username FROM '.$db_tabella5.' WHERE Checking_in BETWEEN # "'.$_POST['hotel_anno'].'-'.$_POST['hotel_mese'].'-'.$_POST['hotel_giorno'].'"# AND # "'.$_POST['hotel_anno2'].'-'.$_POST['hotel_mese2'].'-'.$_POST['hotel_giorno2'].'"#';
$ris=mysql_db_query($db_database ,$query,$Connection);
$NUMROWS = mysql_num_rows($ris); <-- il warning si riferisce qua

if ($NUMROWS<5)
return TRUE;
else
return FALSE;
}

Ora il warning che mi dà è:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Qual è il problema??? AIUTOOOOOOOOOO

andbin
24-07-2006, 11:52
$query ='SELECT Username FROM '.$db_tabella5.' WHERE Checking_in BETWEEN # "'.$_POST['hotel_anno'].'-'.$_POST['hotel_mese'].'-'.$_POST['hotel_giorno'].'"# AND # "'.$_POST['hotel_anno2'].'-'.$_POST['hotel_mese2'].'-'.$_POST['hotel_giorno2'].'"#';
$ris=mysql_db_query($db_database ,$query,$Connection);
$NUMROWS = mysql_num_rows($ris); <-- il warning si riferisce quaVerifica se $ris è FALSE (che indica che la query è fallita per qualche motivo).

l3golas84
24-07-2006, 12:13
si $ris è FALSE. Quale può essere la causa?? la query è giusta??

andbin
24-07-2006, 12:19
si $ris è FALSE. Quale può essere la causa?? la query è giusta??Non sono espertissimo di SQL/MySQL :( ma il cancelletto # segna l'inizio di un commento ... sicuro che servono??

l3golas84
24-07-2006, 12:26
si perchè è una stringa sql ed è richiesto... inoltre il compilatore non lo segna come commento... provo a cambiare il tipo di query e vediamo...

l3golas84
24-07-2006, 12:27
dimenticavo... grazie dell'aiuto :)

andbin
24-07-2006, 12:33
si perchè è una stringa sql ed è richiesto... inoltre il compilatore non lo segna come commento... provo a cambiare il tipo di query e vediamo...Sì ma la query verrebbe fuori come:
SELECT Username FROM tabella WHERE Checking_in BETWEEN # ....
Quello che c'è dopo il cancelletto è preso come commento.

l3golas84
24-07-2006, 12:40
HAI RAGIONE!!!!!!!!!!! Grazie mille problema risolto.... senza # funziona.... mi hai salvato!!

l3golas84
25-07-2006, 13:19
Un ultimo problema... Ho cambiato la query della funzione precedente in questa:

$query ='SELECT Username FROM '.$db_tabella5.' WHERE "'.$_POST['hotel_anno'].'-'.$_POST['hotel_mese'].'-'.$_POST['hotel_giorno'].'" BETWEEN Checking_in AND Checking_out HAVING Room='.$_POST['room'].'';

questa query mi da il solito warning ... perchè??
senza having e quello che viene dopo funziona... Grazie per l'aiuto

andbin
26-07-2006, 09:42
Ah una precisazione per andbin... in alcuni SQL il carattere # viene utilizzato per delimitare una data (ad es. '#14/02/2006#'). Probabilmente MySQL non è uno di questi, ma con altri DBMS la precedente query potrebbe risultare esatta. ;)Grazie della precisazione. Questo non lo sapevo ... comunque sul manuale del MySQL ho letto che i commenti possono essere # ... oppure -- .... oppure ancora /* ... */
Quindi è indubbio che quella query non poteva funzionare con MySQL.
Altri DBMS purtroppo non ne conosco. ;)

l3golas84
26-07-2006, 13:31
in access le date eranodelimitate dai #.... Cmq non funziona neanche con la and
perchè mi da lo stesso warning... c'è qualcosa di strano...

l3golas84
26-07-2006, 14:00
guardando una lista di comandi mysql ho notato che non esistono ne and ne having.... possibile??

andbin
26-07-2006, 14:22
guardando una lista di comandi mysql ho notato che non esistono ne and ne having.... possibile??No, ci sono entrambi.

l3golas84
26-07-2006, 14:38
risolto... era una questione di apici.... per una cavolata non funziona niente...
Cmq grazie dell'aiuto e del tempo perso per me :)