Newsgroup: it.comp.www.php
Titolo: Utilizzo della funzione between

Ciao a tutti! Ho un problema sul quale sto sbattendoci la testa da due
giorni.
Il mio problema è questo: ho due date ddata1(Data di arrivo) e ddata2(data
di partenza) formattate così:
<?
$data1 = mktime(0,0,0,$mm,$gg,$yy);
$ddata1= date("j/n/Y",$data1);
$data2 = mktime(0,0,0,$mm2,$gg2,$yy2);
$ddata2= date("j/n/Y",$data2);
?>
Per la ricerca delle disponibilità natiralmente utilizzo un form:
----------------------------------------------------------------------------
<form name="form1" method="post" action="disponibilita.php">
    <table width="723" border="1" cellspacing="2" cellpadding="0"
align="center" bgcolor="#D5E6EE" bordercolor="#CCCCCC">
      <tr> 
        <td width="224" align="left" valign="baseline"
class="css"><b><font face="Verdana, Arial, Helvetica, sans-serif"
size="2">Tipologia 
          di camera</font></b></td>
        <td align="left" valign="baseline" colspan="4"> <b><font
face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
         <?
          echo"  <select name=\"camere\" class=\"css\">";
          echo"  <option>Nessuna camera</option>";
          echo"  <option>Camera singola</option>";
          echo"  <option>Camera doppia uso singola</option>";
          echo"  <option>Camera doppia</option>";
          echo"   <option>Camera matrimoniale</option>";
          echo"   <option>Camera tripla</option>";
          echo"   <option>Suites</option>";
          echo"   </select>";
 
          ?>
 
          <br>
          </font></b></td>
      </tr>
      <tr> 
        <td width="224" align="left" valign="baseline"
class="css"><b><font face="Verdana, Arial, Helvetica, sans-serif"
size="2">Periodo</font></b></td>
        <td width="47" align="left" valign="baseline"><b><font
face="Verdana, Arial, Helvetica, sans-serif" size="2">dal 
               </font></b></td>
        <td width="162" align="left" valign="baseline"> <b><font
face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <select name=gg size=1 align=left>
            <option>01 
            <option>02 
            <option>03 
            <option>04 
            <option>05 
            <option>06 
            <option>07 
            <option>08 
            <option>09 
            <option>10 
            <option>11 
            <option>12 
            <option>13 
            <option>14 
            <option>15 
            <option>16 
            <option>17 
            <option>18 
            <option>19 
            <option>20 
            <option>21 
            <option>22 
            <option>23 
            <option>24 
            <option>25 
            <option>26 
            <option>27 
            <option>28 
            <option>29 
            <option>30 
            <option>31 
          </select>
          <select name=mm size=1 align=left>
            <option>01 
            <option>02 
            <option>03 
            <option>04 
            <option>05 
            <option>06 
            <option>07 
            <option>08 
            <option>09 
            <option>10 
            <option>11 
            <option>12 
          </select>
          <select name=yy size=1 align=left>
            <option>2003</option>
            <option>2004</option>
            <option>2005</option>
            <option>2006</option>
            <option>2007</option>
            <option>2008</option>
            <option>2009</option>
            <option>2010</option>
          </select>
          </font></b></td>
        <td width="48" align="left" valign="baseline"><b><font
face="Verdana, Arial, Helvetica, sans-serif" size="2">al 
                <br>
          </font></b></td>
        <td width="242" align="left" valign="baseline"> <b><font
face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <select name=gg2 size=1 align=left>
            <option>01 
            <option>02 
            <option>03 
            <option>04 
            <option>05 
            <option>06 
            <option>07 
            <option>08 
            <option>09 
            <option>10 
            <option>11 
            <option>12 
            <option>13 
            <option>14 
            <option>15 
            <option>16 
            <option>17 
            <option>18 
            <option>19 
            <option>20 
            <option>21 
            <option>22 
            <option>23 
            <option>24 
            <option>25 
            <option>26 
            <option>27 
            <option>28 
            <option>29 
            <option>30 
            <option>31 
          </select>
          <select name=mm2 size=1 align=left>
            <option>01 
            <option>02 
            <option>03 
            <option>04 
            <option>05 
            <option>06 
            <option>07 
            <option>08 
            <option>09 
            <option>10 
            <option>11 
            <option>12 
          </select>
          <select name=yy2 size=1 align=left>
            <option>2003</option>
            <option>2004</option>
            <option>2005</option>
            <option>2006</option>
            <option>2007</option>
            <option>2008</option>
            <option>2009</option>
            <option>2010</option>
          </select>
          </font></b></td>
      </tr>
      <tr> 
        <td colspan="5" align="left" valign="baseline"> 
          <table width="152" border="0" cellspacing="0" cellpadding="0"
align="center">
            <tr> 
              <td width="58" class="css"> <font face="Verdana, Arial,
Helvetica, sans-serif" size="2"><br>
                <input type="submit" name="invia" value="Invia">
                </font></td>
              <td width="80" class="css"> 
                <div align="center"> <font face="Verdana, Arial,
Helvetica, sans-serif" size="2"><br>
                  <input type="reset" name="Submit2" value="Reimposta">
                  </font></div>
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
  </form> 
----------------------------------------------------------------------------
utilizzando questa query:
$sql ="SELECT * FROM camere WHERE camere = '$camere' and ddata1 between
ddata1 AND ddata2; 
non ottengo il risultato sperato, cioè i valori di $ddata1 and $ddata2
compresi nell'intervallo tra i campi ddata1 e ddata2 e la tipologia di
camera all'interno dell'intervallo, ma un semplice elenco di camere a
seconda della scelta della tipologia.
C'è qualcuno in grado di aiutarmi per favore? 
Grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 C'č qualcuno in grado di aiutarmi per favore?
Hai provato ad inserire i $ per referenziare le variabili?
$sql = "SELECT * " .
       "FROM camere " .
       "WHERE camere = '$camere' " .
       "AND ddata1 BETWEEN $ddata1 AND $ddata2";
Inoltre, il campo che identifica la data (nel database) si chiama ddata1?
Ciao
Marco

 Marco


 Nel i campi ddata1 and ddata2 sono char
Mi sono riletto il post, avevo frainteso il funzionamento.
Dunque, quello che tu fai tramite il form, è selezionare una tipologia di
camera e 2 date (partenza e arrivo).
Lo script che riceve i dati crea le variabili $ddata1 e $ddata2.
A parole, tu cosa vuoi ottenere dalla query?
Tutte le camere di tipo $camere che...?
Inoltre, le date non devono essere CHAR, ma DATE se vuoi fare dei confronti
di tempo.
Ciao
Marco

 Marco


 nel range di date ddata1 and ddata2
SELECT *
FROM camere
WHERE camere = '$camere'
AND ddata1 >= $ddata1
AND ddata2 <= $ddata2
ORDER BY ddata1, ddata2;
Oppure puoi usare = anzichè <= e >=.
Ciao
Marco

 ddata1 AND ddata2; 
mi pare che manchi qualche make-up:
$sql ="SELECT * FROM camere WHERE camere = '$camere' and ddata1 between
'$ddata1' AND '$ddata2'";