Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con foreach

Estas en el tema de Problema con foreach en el foro de PHP en Foros del Web. Buenos días ! Tengo una consulta en SQL para sacar unos datos de mi base de datos (funciona perfectamente) y necesito recorrer los datos que ...
  #1 (permalink)  
Antiguo 12/05/2016, 03:59
 
Fecha de Ingreso: febrero-2015
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 0
Problema con foreach

Buenos días !

Tengo una consulta en SQL para sacar unos datos de mi base de datos (funciona perfectamente) y necesito recorrer los datos que obtengo de la consulta ya que necesito mostrarlos una sola vez.

Código PHP:
  $res $conexion->prepare("SELECT PID, ID from owner_autor WHERE AUTOR LIKE '%$nombrecompleto%'");
   
$res->execute();


    if(
$n $res->fetch()){
      
$pid $n[0];
      echo 
$pid;
      echo
'<td><select>';
      foreach(
$pid as $c){
        echo 
'<option>';
        echo 
$c;
        echo 
'</option>';
      }
      echo 
'</select></td>';
      echo
'<td><select>';
      while (
$n $res->fetch () ){
        
$id $n[1];
        echo 
'<option>';
        echo 
$id;
        echo 
'</option>';
      }
      echo 
'</select></td>'
$pid obtiene varios elementos de la consulta (varios números) y necesito mostrarlos en un select para que el usuario pueda elegir que valor introducir. Posteriormente hago lo mismo con la ID pero esta si me la muestra bien. He probado a hacer lo mismo con el PID y el while pero no hay manera y el foreach está vacío pero ya me he atascado y seguro es una tontería pero no la veo.

Se me olvidó mencionar que el echo $pid; de antes del foreach muestra un valor y dentro del foreach, se muestra en blanco

Gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 12/05/2016, 12:14
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años
Puntos: 8
Respuesta: Problema con foreach

Hasta donde yo recuerdo si utilizas una vez $res->fetch() ya no puedes volver a usarlo.
Lo que podrías hacer es lo siguiente.

$aDatos=array();
while($n=$res->fetch()){
$aDatos[]=$n;
}

foreach($aDatos as $row){
echo $row['PID']." - ". $row['ID']."<br>";
}

Es decir todo lo pasas a una variable array y esta puedes reutilizarla las veces que quieras.
Saludos.
  #3 (permalink)  
Antiguo 12/05/2016, 12:15
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años
Puntos: 8
Respuesta: Problema con foreach

Cita:
Iniciado por oggy_15_3 Ver Mensaje
Hasta donde yo recuerdo si utilizas una vez $res->fetch() ya no puedes volver a usarlo.
Lo que podrías hacer es lo siguiente.

Código PHP:
Ver original
  1. $aDatos=array();
  2. while($n=$res->fetch()){
  3.    $aDatos[]=$n;
  4. }
  5.  
  6. foreach($aDatos as $row){
  7.   echo $row['PID']." - ". $row['ID']."<br>";
  8. }

Es decir todo lo pasas a una variable array y esta puedes reutilizarla las veces que quieras.
Saludos.
  #4 (permalink)  
Antiguo 13/05/2016, 00:41
 
Fecha de Ingreso: febrero-2015
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Problema con foreach

Buenas !

Muchísimas gracias por su ayuda, me ha servido genial y ya me sale como deseo !

Mil gracias nuevamente !!!!
  #5 (permalink)  
Antiguo 13/05/2016, 04:44
 
Fecha de Ingreso: febrero-2015
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Problema con foreach

Una nueva pregunta con respecto a este tema, ahora necesito meterlo en un insert pero en campos separados y no me lo almacena. ¿Qué debo hacer?

echo '<option value="'.$pid.','.$id.','.$subid.'">';
echo "PID: ".$pid." - ID: ".$id." - Sub-Id: ".$subid."<br>";
echo '</option>';

if(!empty($pid) && !empty($id)){
$r =$conexion-> prepare("INSERT INTO timesheet (nombre, fecha, pid, id, sub_id, Horas, Comentarios) VALUES (:nombre, :fecha, :pid, :id, :subid, :horas, :comentarios)");
$r ->bindParam(':nombre', $nombrecompleto);
$r ->bindParam(':fecha', $fecha);
$r ->bindParam(':pid', $pid);
$r ->bindParam(':id', $id);
$r ->bindParam(':subid', $subid);
$r ->bindParam(':horas', $horas);
$r ->bindParam(':comentarios', $comentarios);
$r ->execute();
}

Etiquetas: foreach, select, sql
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 09:19.