Foros del Web » Programando para Internet » PHP »

problemas con array

Estas en el tema de problemas con array en el foro de PHP en Foros del Web. Hola tengo problemas para que me saque TODOS los datos de un array (solo me sale el último registro): Tengo este array: Código: $refh[] = ...
  #1 (permalink)  
Antiguo 10/04/2012, 03:20
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
problemas con array

Hola
tengo problemas para que me saque TODOS los datos de un array (solo me sale el último registro):

Tengo este array:

Código:
$refh[] = $row[4];
Con esto me lista los registros:
Código:
    foreach($refh as $datos){
echo "*".$datos."*/<br>";     
    }
que son datos pertenecientes a la tabla1 de mi BD.

Y quiero que me saque todos los registros de mi tabla2 excepto los que hay en el array. Para ello le pongo esto:
Código:
$ha = mysql_query("SELECT * FROM habitaciones WHERE IdHabitaciones !=$datos", $conexion);
¿Algún consejo porque me saca todos menos el último?
  #2 (permalink)  
Antiguo 10/04/2012, 05:13
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años, 1 mes
Puntos: 160
Respuesta: problemas con array

Segun como lo escribiste, la variable $datos cuando haces el sql no vale nada puesto que esta por fuera del for que es en donde existe la variable $datos, por fuera del ciclo no existe esa variable.

Si lo tenes distinto postea el codigo completo para encontrar la falla.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 10/04/2012, 05:48
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: problemas con array

Cita:
Iniciado por linuxzero Ver Mensaje
Segun como lo escribiste, la variable $datos cuando haces el sql no vale nada puesto que esta por fuera del for que es en donde existe la variable $datos, por fuera del ciclo no existe esa variable.

Si lo tenes distinto postea el codigo completo para encontrar la falla.
Gracias, creo que lo he solucionado de otra manera, usando una consulta múltiple de las dos tablas.
  #4 (permalink)  
Antiguo 10/04/2012, 07:39
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 10 meses
Puntos: 29
Respuesta: problemas con array

Si no lo solucionas bajo consulta SQL directa, siempre puedes rellenar el array de otra forma comprobando si la clave ya existe.

Código PHP:
Ver original
  1. $array = array();
  2. while($resultados) {
  3.  
  4.    if( !in_array ($array, $resultados->id) ) {
  5.       /*si ya está en el array no lo incluimos. */
  6.       $array[] = $resultados->id;
  7.    }
  8.  
  9. }

Saludos
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 10/04/2012, 08:46
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: problemas con array

Cita:
Iniciado por linuxzero Ver Mensaje
Segun como lo escribiste, la variable $datos cuando haces el sql no vale nada puesto que esta por fuera del for que es en donde existe la variable $datos, por fuera del ciclo no existe esa variable.

Si lo tenes distinto postea el codigo completo para encontrar la falla.
HOla, gracias por contestar.

Efectivamente lo tengo fuera porque si no, me saca todos los datos por cada id que existe en el array....
O sea, tengo el foreach {} por un lado y la consulta por otro.

TAmbién he probado esto:

Código:
  foreach($refh as $datos){
 echo $datos."<br>";  

$hf = mysql_query("SELECT * FROM habitaciones WHERE IdHabitaciones LIKE $datos", $conexion);

echo "<br>";
}

while ($row = mysql_fetch_array($hf))
{
echo "Hab: ".$row[0]."  <br>  ";

}
pero me sigue sacando solo el último registro...
estoy desesperándome.
  #6 (permalink)  
Antiguo 10/04/2012, 08:55
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años, 1 mes
Puntos: 160
Respuesta: problemas con array

Estas realizando la consulta correctamente por cada valor pero lo estas guardando el resultado de esa consulta en la misma variable por lo que la estas pisando, y al salir del ciclo foreach en $hr vas a tener el resultado del ultimo registro, eh ahi tu error.

Yo te pongo a mi criterio como deberias hacer:

Código PHP:
Ver original
  1. // $refh es tu vector con los ids, entones podes utilizar la funcion join() o implode() para generar un string con todos los ids, separados por una coma y realizar la consulta de una utilizando un IN, entonces sin hacer foreach ni nada por el estilo directamente haces lo siguiente.
  2.  
  3. $hf = mysql_query("SELECT * FROM habitaciones WHERE IdHabitaciones IN (" . join(',', $refh) . ")", $conexion);
  4.  
  5. while ($row = mysql_fetch_array($hf)) {
  6.      echo "Hab: " . $row[0] . "<br/>";
  7. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 10/04/2012, 09:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: problemas con array

Cita:
Iniciado por linuxzero Ver Mensaje
Estas realizando la consulta correctamente por cada valor pero lo estas guardando el resultado de esa consulta en la misma variable por lo que la estas pisando, y al salir del ciclo foreach en $hr vas a tener el resultado del ultimo registro, eh ahi tu error.

Yo te pongo a mi criterio como deberias hacer:

Código PHP:
Ver original
  1. // $refh es tu vector con los ids, entones podes utilizar la funcion join() o implode() para generar un string con todos los ids, separados por una coma y realizar la consulta de una utilizando un IN, entonces sin hacer foreach ni nada por el estilo directamente haces lo siguiente.
  2.  
  3. $hf = mysql_query("SELECT * FROM habitaciones WHERE IdHabitaciones IN (" . join(',', $refh) . ")", $conexion);
  4.  
  5. while ($row = mysql_fetch_array($hf)) {
  6.      echo "Hab: " . $row[0] . "<br/>";
  7. }
Mil gracias, lo pruebo ahora mismo.
  #8 (permalink)  
Antiguo 10/04/2012, 09:45
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: problemas con array

Gracias otra vea linuxzero, va perfecto pero necesitaría sacar todos los id que no estén en resultado de la consulta (para saber las habitaciones que no están reservadas)

Es decir, tengo esto:
Código:
$hf = mysql_query("SELECT * FROM habitaciones WHERE IdHabitaciones IN (" . join(',', $refh) . ")", $conexion);
 
while ($row = mysql_fetch_array($hf)) {
     echo "Hab: " . $row[0] . "<br/>";
}
y quiero que saque los id que no entren dentro del while. He probado con
Código:
while ($row != mysql_fetch_array($hf))
pero me sale vacío...
  #9 (permalink)  
Antiguo 10/04/2012, 09:46
 
Fecha de Ingreso: diciembre-2003
Mensajes: 474
Antigüedad: 21 años
Puntos: 5
Respuesta: problemas con array

Qué tal con not in??
  #10 (permalink)  
Antiguo 10/04/2012, 10:12
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años, 1 mes
Puntos: 160
Respuesta: problemas con array

Cita:
Iniciado por jota2 Ver Mensaje
Qué tal con not in??
Te respondiste vos mismo ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: mysql, registro, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:56.