Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/12/2003, 15:09
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tines razon, el primer while solo hace que se almacene el ultimo $row1["idp"] en la variable $idp. De hecho eso es lo que le mandas con ese codigo. Si quieres almacenar mas de un valor en una variable, esa variable debe ser un array. Y para crear ese array con esos valores puedes usar este codigo:
Código PHP:
<?php
$ssql1
=("SELECT * FROM tabla");
$result1=mysql_query($ssql1,$conn);
while (
$row1=mysql_fetch_array($result1))
{
$idp[]=$row1["idp"];
}
?>
Asi $idp es un array con todos los idp de la consulta.

Ahora la segunda consulta. Como $idp ya no es un valor sino un array, mas que mirar si un campo es igual a un valor, lo que necesitas saber es si ese campo esta en una lista de valores. Para eso esta el operador IN de SQL. Pero primero debemos convertir el array en una cadena para que sea el segundo operando del IN:
Código PHP:
$idp_cadena=implode("','",$idp);
$idp_cadena="('$idp_cadena'); 
Puedes hacer un echo de cada paso, pero lo unico que hago es crear una lista de valores entrcomillados separados por comas y puestos entre parentesis.

Y la consulta quedaria como:
Código PHP:
<?php
$ssql
=("SELECT * FROM tabla2 WHERE idp1 IN $idp_cadena or idp2 IN $idp_cadena or idp3 IN $idp_cadena");
$result=mysql_query($ssql,$conn);
while (
$row=mysql_fetch_array($result))
{
echo 
"idrs':".$row['idr']."<br>";
}
?>
Haz un echo $ssql para ver como queda la consulta.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.