Foros del Web » Programando para Internet » PHP »

duda en enviar todo un while

Estas en el tema de duda en enviar todo un while en el foro de PHP en Foros del Web. hola a todos es que tengo este pequeno problema de poder enviar todo el resultado que obtengo para poder enviarlo de esta manera. Ejempo tengo ...
  #1 (permalink)  
Antiguo 28/07/2014, 17:24
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
duda en enviar todo un while

hola a todos es que tengo este pequeno problema de poder enviar todo el resultado que obtengo para poder enviarlo de esta manera.

Ejempo tengo un usuarios que a creado un x usuarios y quiero poder hacer posible delecionar todos los ID de todas sus cuentas para poder mostrarlas

quiero poder sacarlas asi de esta manera los ID

'4', '76', '3', '11'

para poder utilizarlo en una variable y meterla en un nueva busqueda asi

Código PHP:
Ver original
  1. $var = "'4', '76', '3', '11'";
  2. mysql_query("select * from users where owner in ($var)") or die(mysql_error());

yo tengo esto echo pero solo me sale el ultimo ID
Código PHP:
Ver original
  1. function collect($G_username)
  2.     {
  3.         $result = mysql_query("select * from users where owner = '$user'") or die(mysql_error());
  4.             while( ($row = mysql_fetch_assoc( $result )) )
  5.                 $temp = $row['username'];
  6.               return $temp;
  7.     }
  #2 (permalink)  
Antiguo 28/07/2014, 17:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: duda en enviar todo un while

Cita:
yo tengo esto echo pero solo me sale el ultimo ID
Bueno, tu error es que en cada vuelta del while() sobreescribes la variable $temp y eso en definitiva está mal.

Debes ir acumulando cada valor en un array, para eso debes crear el array antes del while() y en cada vuelta agregas el valor al array.

Al final sólo debes devolver el array y nada más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/07/2014, 18:40
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en enviar todo un while

como seria eso posible
  #4 (permalink)  
Antiguo 28/07/2014, 20:06
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: duda en enviar todo un while

cambia lo que tienes dentro del while por esto:

Código PHP:
Ver original
  1. $temp[] = $row['username'];

eso lo guardara como array.
para asegurarte, despues de que el while se ejecute, comprueba los datos con un print

Código PHP:
Ver original
  1. echo '<pre>';
  2. print_r($temp);

y para tomar cada valor del array:

Código PHP:
Ver original
  1. echo $temp[0];
  2.  
  3. //donde [0] es cada dato guardado,
  4. //asi el siguiente sera [1]....

por ultimo te recomiendo que uses el while asi:

Código PHP:
Ver original
  1. while($row = mysql_fetch_assoc( $result ) )
  2. {
  3.      $temp[] = $row['username'];
  4. }
  5.  
  6. return $temp;
  7.  
  8. // quita los parentesis () demas que tienes en el while y agregale las llaves {}

tambien cambia la conexion a PDO ya que mysql_query esta obsoleta y a futuro sera removida de php.

suerte! y cualquier cosa enviame un mp.
  #5 (permalink)  
Antiguo 29/07/2014, 09:29
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en enviar todo un while

me funciono pero haora me sale asi

Array ( [0] => T1 [1] => T2 )

y quiero lograr poder haora sacarlo de esta manera

'T1', 'T2'

para poder utlizarlo en un

owner in ('T1', 'T2')

para buscar esos dos y mostrarlos
  #6 (permalink)  
Antiguo 29/07/2014, 10:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: duda en enviar todo un while

Para eso necesitas usar join(), consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/07/2014, 16:25
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: duda en enviar todo un while

claro, te los muestra como array porque quizas los estas imprimiendo asi:

Código PHP:
Ver original
  1. echo '<pre>';
  2. print_r($temp);

eso te dara como resultado Array ( [0] => T1 [1] => T2 )

si lo que quieres es solo obtener cada uno de los datos del array pon esto:

Código PHP:
Ver original
  1. echo $temp[0];// eso imprime T1
  2. echo $temp[1];// eso imprime T2
  3.  
  4. // de igual forma para guardarlos en variables
  5. $var = $temp[0];
  6.  
  7. // en otras funciones es exactamente igual
  8. if( $temp[0] == 'T1')
  9. {
  10.      //codigo...
  11. }
  12.  
  13. ($temp[0], $temp[1])// asi seria en lo que lo quieres usar

espero haber ayudado y que te funcione.
  #8 (permalink)  
Antiguo 30/07/2014, 18:13
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en enviar todo un while

la forma a que quiero que salga es de esta forma

'T1', 'T2'

ok y tengo esta function

Código PHP:
Ver original
  1. function collect($user)
  2.     {
  3.         $result = mysql_query("select * from users where owner = '$user'") or die(mysql_error());
  4.         if( mysql_num_rows( $result ) == 0 )
  5.         {
  6.             return FALSE;
  7.         } else {
  8.         while($row = mysql_fetch_assoc( $result ) )
  9.         {
  10.           $temp[] = $row['username'];
  11.         }
  12.         foreach($temp as $temp2)
  13.           {
  14.            $cadena = "'".$temp2."',";
  15.            echo $cadena;
  16.           }
  17.         }
  18.     }

donde me sale asi 'T1','T2',

y quiero eliminar la ultima coma que esta de mas

Última edición por xoceunder; 30/07/2014 a las 18:30
  #9 (permalink)  
Antiguo 30/07/2014, 19:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: duda en enviar todo un while

Eso es mejor hacerlo con arrays, no hay necesidad de ir colocando las comas a mano.

Código PHP:
Ver original
  1. $foo = arrray('a', 'b');
  2. $bar = array();
  3.  
  4. foreach ($foo as $v) {
  5.   $bar []= "'$v'";
  6. }
  7.  
  8. echo join('|', $bar);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: todo
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 13:47.