¿Insertar otro else, mysql_fetch_object?
Hola, Tengo una base de datos donde guardo reservas, en la base cada día que ya esta reservada se marca con una N.
Tengo hecha una calculadora que calcula precio y comprueba disponibilidad. Funciona a perfección.
Ahora si una vivienda solo esta disponible para larga tempora se marca con una L, y eso no lo tengo metido en el script de la calculadora, no consigo meterlo, me parece que hay que usar mysql_fetch_object.
Aqui esta la parte del script donde quiero meter que si esta marcado con una L en vez de N en el echo me diga: Esta vivienda solo esta disponible para larga temporada.
En el script primero compruebo si esta disponible, si no esta disponible sale un echo donde dice que no esta disponible y me dice cuando esta ya alquilado, en el else que viene despues (que no pego aqui, es largisimo, se dice que esta disponible y se calcula el precio.
<code>
//miramos si disponible (= marcado con algo que es N o L)
$result = mysql_query ("SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, DATE_FORMAT(salida, '%e %b %Y') as sal, propiedad, TO_DAYS('$salida') - TO_DAYS('$llegada') as dias from bookings where ( propiedad = '$propiedad' )
AND (('$llegada' BETWEEN llegada AND date_sub(salida, interval +1 day))
or ('$salida' BETWEEN date_sub(llegada, interval -1 day) AND salida) or (llegada <= '$llegada' AND salida >= '$salida') or (llegada >= '$llegada' AND salida <= '$salida'))", $dbh);
if ($row = mysql_fetch_array($result)){
do {
$propiedad = str_replace("_", " ", $propiedad);
echo "<span class="red\">$propiedad is occupied from ".$row["lleg"]." until ".$row["sal"]."</span><br>";
} while ($row = mysql_fetch_array($result));
$propiedad = str_replace("_", " ", $propiedad);
$availability="<span class="red\">No, $propiedad is not available from $arrival_display to $departure_display.</span>";
echo "</table> \n";
}
//aqui se dice que esta disponible y calcula el precio
else {
$sql = "SELECT llegada, salida, propiedad, TO_DAYS('$salida') - TO_DAYS('$llegada') as dias from bookings where ( propiedad = '$propiedad' ) AND ((llegada = '$salida') OR (salida = '$llegada'))";
$rows = mysql_fetch_assoc(mysql_query($sql));
etc..
</code>
A ver si alguien me puede echar un cable que no doy con la solución.
Esto es más o menos lo que quiero meter:
while ($row = mysql_fetch_object($result)) {
if ($row->lleg=="L"){ echo "This property is available only for long term rentals"; }
elseif ($row->lleg=="N"){ que haga el resto
comprobar si es una N no hará falta comprobar
mejor un else creo
Gracias
helenp
caso resuelto,
el semicolon en el if statement :)
helenp
No sé si abrir otro hilo o seguir en este, porque mucho lo que dije antes no es correcto, tenia malamente los nombres de las filas de la base, y claro que no iba...
Este código abajo funciona, pero el problema es ahora que cuando añado el resto del codigo, todos los elses que viene despues de la sentencia
if ($row = mysql_fetch_object($result)); { entonces me sale error unexpted T_ELSE...
<code>
if ($row = mysql_fetch_object($result)); {
if ($row->tiporeserva=="larga"){ echo "This property is available only for long term rentals"; }
else {
$propiedad = str_replace("_", " ", $propiedad);
echo "<span class='red'>$propiedad is occupied from ". $row->lleg ." until ". $row->sal ."</span><br>";
$availability="<span class='red'>No, $propiedad is not available from $arrival_display to $departure_display.</span>";
echo "</table> \n";
}
}
</code>
Aqui viene ahora varios elses... y no sé como hacerlo funcionar
helenp
Más que lo miro, más correcto lo veo, pero no va ni da error...???
para simplificarlo el fallo tiene que estar en este trocito:
<code>
if ($row = mysql_fetch_object($result)){
if ($row->lleg=="L"){ echo "This property is available only for long term rentals"; }
elseif ($row->lleg=="N") {
$propiedad = str_replace("_", " ", $propiedad);
echo "<span class="red\">$propiedad is occupied from ".$row->lleg." until ".$row->sal."</span><br>";
$availability="<span class="red\">No, $propiedad is not available from $arrival_display to $departure_display.</span>";
echo "</table> \n";
}
}
else { etc.......</code>
helenp
Para mi debería de ser algo así, pero no va....:
estoy un poco oxidada en php creo
<code>
//miramos si disponible
$result = mysql_query ("SELECT DATE_FORMAT(llegada, '%e %b %Y') as lleg, DATE_FORMAT(salida, '%e %b %Y') as sal, propiedad, TO_DAYS('$salida') - TO_DAYS('$llegada') as dias from bookings where ( propiedad = '$propiedad' )
AND (('$llegada' BETWEEN llegada AND date_sub(salida, interval +1 day))
or ('$salida' BETWEEN date_sub(llegada, interval -1 day) AND salida) or (llegada <= '$llegada' AND salida >= '$salida') or (llegada >= '$llegada' AND salida <= '$salida'))", $dbh);
if ($row = mysql_fetch_object($result)){
if ($row->lleg=="L"){ echo "This property is available only for long term rentals"; }
elseif ($row->lleg=="N") {
$propiedad = str_replace("_", " ", $propiedad);
echo "<span class="red\">$propiedad is occupied from ".$row->lleg." until ".$row->sal."</span><br>";
$availability="<span class="red\">No, $propiedad is not available from $arrival_display to $departure_display.</span>";
echo "</table> \n";
}
}
else {
$sql = "SELECT llegada, salida, propiedad, TO_DAYS('$salida') - TO_DAYS('$llegada') as dias from bookings where ( propiedad = '$propiedad' ) AND ((llegada = '$salida') OR (salida = '$llegada'))";
$rows = mysql_fetch_assoc(mysql_query($sql));
</code>