Foros del Web » Programando para Internet » PHP »

foreach despues de una query

Estas en el tema de foreach despues de una query en el foro de PHP en Foros del Web. Hola, tengo un problema... estoy haciendo un script para hacer una consulta al db y despues quisiera hacer un par de foreach para obtener un ...
  #1 (permalink)  
Antiguo 20/11/2012, 05:34
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 12 años, 11 meses
Puntos: 28
foreach despues de una query

Hola, tengo un problema...

estoy haciendo un script para hacer una consulta al db y despues quisiera hacer un par de foreach para obtener un select con optgroup...

algo "igual" lo he hecho con CodeIgneter para hacer un menu son sub-menu (la logica es la misma)...

(estoy usando wordpress pero el script es php, por eso he puesto el post aca)...

query:

Código PHP:

$query 
mysql_query("SELECT wp_term_taxonomy.term_id AS id, name FROM wp_term_taxonomy, wp_terms 
                    WHERE parent = '$id' 
                    AND wp_terms.term_id = wp_term_taxonomy.term_id"
);
$query2 mysql_query("SELECT name, wp_terms.term_id AS id, parent 
                    FROM wp_term_taxonomy, wp_terms 
                    WHERE wp_terms.term_id = wp_term_taxonomy.term_id 
                    AND count >'0' AND term_taxonomy_id >'3'"
); 
mi idea era hacer lo siguiente:

Código PHP:
$regioni mysql_fetch_array($query);
$citta mysql_fetch_array($query2);

echo 
'<select size="1" name="city" id="city" class="city">';
foreach(
$regioni as $r){
    echo 
'<optgroup label="'.$r->name.'">';
    foreach(
$citta as $c){
        if(
$r->id == $c->parent){
            echo 
'<option value="'$c->id .'">'$c->name .'</option>';
        }
    }
    echo 
'</optgroup>';
}  
echo 
'</select>'
lo mas cercano como output a lo que quiero es:

Código PHP:
echo '<select size="1" name="city" id="city" class="city">';
while(
$regioni mysql_fetch_array($query)){
    echo 
'<optgroup label="'$regioni['name'] .'">';
    while(
$citta mysql_fetch_array($query2)){
        if(
$regioni['id'] == $citta['parent']){
            echo 
'<option value="'$citta['id'] .'">'$citta['name'] .'</option>';
        }
    }
    echo 
'</optgroup>';
}
echo 
'</select>'
pero de esta manera el segundo optgroup no muesta ninguna option (y debe ser porque el segundo while ($citta) termina en el primer giro del primer while ($regioni)

gracias de antemano...
  #2 (permalink)  
Antiguo 20/11/2012, 07:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: foreach despues de una query

recuerda que fetch utiliza un puntero interno (pivote), por el cual cuando llega al EOF no devuelve más nada, o vuelves a generar la consulta o simplemente regresas el cursor al principio, con mysql_seek (o algo así, no recuerdo, búscalo en la documentación)
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 20/11/2012, 09:57
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 12 años, 11 meses
Puntos: 28
Respuesta: foreach despues de una query

Gracias... solucione poniendo mysql_data_seek($query2, 0); antes del segundo while...

Cita:
Iniciado por maycolalvarez Ver Mensaje
recuerda que fetch utiliza un puntero interno (pivote), por el cual cuando llega al EOF no devuelve más nada, o vuelves a generar la consulta o simplemente regresas el cursor al principio, con mysql_seek (o algo así, no recuerdo, búscalo en la documentación)

Etiquetas: foreach, mysql, query
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




La zona horaria es GMT -6. Ahora son las 02:33.