Ver Mensaje Individual
  #16 (permalink)  
Antiguo 05/12/2003, 18:37
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 24 años, 3 meses
Puntos: 16
Muy sencillo. Foreach necesita que el parametro sea un array. Si no es un array da ese error. Eso quiere decir que $vehiculos2 no es un array. ¿Y por que no es un array? Pues porque la consulta no ha devuelto ningun registro. ¿Como se soluciona? Pues yo lo que hago es inicializar siempre las variables. Asi tendrias que hacer:
Código PHP:
<?php

// MUESTRA TODOS LOS COCHES EN UN DETERMINADO APARCAMIENTO

open();

$query = "SELECT coches.matricula FROM coches WHERE (aparcamiento = '$aparcamiento')";

$result = mysql_query($query) or die(mysql_error());

$vehiculos=array();  // INICIALIZAMOS $vehiculos a un array vacio

while($vehiculo = mysql_fetch_array($result))

$vehiculos[]=$vehiculo;



// TODOS LOS COCHES EN UN DETERMINADO APARCAMIENTO Y FECHA

open();

$query = "SELECT reserva.matricula FROM coches INNER JOIN reserva ON

 (coches.matricula = reserva.matricula) WHERE (fecha = '$fecha') AND (aparcamiento = '$aparcamiento')"
;

$result = mysql_query($query) or die(mysql_error());

$vehiculos2=array();  // INICIALIZAMOS $vehiculos2 a un array vacio


while($vehiculo2 = mysql_fetch_array($result))

$vehiculos2[]=$vehiculo2; 

 
// Código de Josemi

$resultado=array();

foreach (
$vehiculos as $vehiculo) {

  
$esta=false; 

foreach (
$vehiculos2 as $vehiculo2) { //Josemi esta es la línea 38 donde dice que está el error¿?

    
if ($vehiculo['matricula']==$vehiculo2['matricula']) {

      
$esta=true;

      break;

  }

  }

  if (!
$esta) $resultado[]=$vehiculo;

}

?>
Con esas inicializaciones, en caso de no haber registros y no entrar en los while, $vehiculos y $vehiculos2 todavia serian un array (vacio, pero array).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.