Foros del Web » Programando para Internet » PHP »

como tomar resultados de while en una variable

Estas en el tema de como tomar resultados de while en una variable en el foro de PHP en Foros del Web. hola quisiera saber como hacer para tomar con este script los resultados de while en lugar del template en una variable. Código PHP:         $tr_sql  =  ...
  #1 (permalink)  
Antiguo 03/03/2008, 07:40
p2pdownloading
Invitado
 
Mensajes: n/a
Puntos:
como tomar resultados de while en una variable

hola quisiera saber como hacer para tomar con este script los resultados de while en lugar del template en una variable.

Código PHP:
        $tr_sql mysql_query("SELECT * FROM ".DB_PREFIX."templates WHERE tID = '".$theme."' && tmName = 'cat_list'");
    
$tr=mysql_fetch_array($tr_sql);
    
$tableRow=$tr["template"];

    
$sql mysql_query("SELECT * FROM ".DB_PREFIX."categories WHERE cParent = '".$cID."' ORDER BY cOrder ASC");
     

        while(
$r=mysql_fetch_array($sql))
{        
      

    
$cat_ID=$r["cID"];
    
$cName=$r["cName"];
    
$cDesc=$r["cDesc"];
        
$scCount=$r["scCount"];
        
        
$cat_row str_replace("{php=cat_id}"$cat_ID$tableRow);
    
$cat_row str_replace("{php=cat_name}"$cName$cat_row);
    
$cat_row str_replace("{php=cat_desc}"$cDesc$cat_row);
        
        echo 
$cat_row;

  #2 (permalink)  
Antiguo 03/03/2008, 08:15
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
Re: como tomar resultados de while en una variable

Creo que ando medio lenta de entendimiento hoy, jejeje.... ¿Podrías explicar mejor tu duda, por favor? (porque por tu código pareciera que ya tienes tu respuesta...)
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 03/03/2008, 08:34
p2pdownloading
Invitado
 
Mensajes: n/a
Puntos:
Re: como tomar resultados de while en una variable

hola gracias por responder.

mira lo q hace el codigo es tomar un template de la base de datos, en el template hay ciertas cadenas entre {variable} por ejemplo

{php=cat_id}
{php=cat_name}
{php=cat_desc}

que son reemplazadas por las variables que se generan en while.

lo que necesito es hacer que en lugar de reemplazar estas cadenas, los resultados de while se metan en una variable $resultadosdewhile

y que me quede a modo de ejemolo

$resultadosdewhile = $cat_ID . $cDesc

pero por la cantidad de veces q se ejecute el bucle.

Si te sirve de ayuda, lo q quiero hacer es tomar los nombres de las categorias dentro dentro de la categoria principal y ponerlas como keywords, el script quedaria algo asi...

Código PHP:


$sql 
mysql_query("SELECT cName FROM ".DB_PREFIX."categories WHERE cParent = '".$cID."' ORDER BY cOrder ASC"); 
      

while(
$r=mysql_fetch_array($sql)) {  $cName=$r["cName"];   }  


$todas-las-categorias=RESULTADOS DE WHILE (todas las categorias)

$cat_row str_replace("{php=cat_name}"$todas-las-categorias$cat_row); 

echo 
$cat_row
  #4 (permalink)  
Antiguo 03/03/2008, 09:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: como tomar resultados de while en una variable

Guardalos en un arreglo y luego lo imprimes:
Código PHP:
$sql mysql_query("SELECT cName FROM ".DB_PREFIX."categories WHERE cParent = '".$cID."' ORDER BY cOrder ASC"); 
      
$cName[] = array();
while(
$r=mysql_fetch_array($sql)) {  $cName[]=$r["cName"];   }  


$todas=implode", "$cName );

$cat_row str_replace("{php=cat_name}"$todas$cat_row); 

echo 
$cat_row
Saludos.
  #5 (permalink)  
Antiguo 03/03/2008, 09:16
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
Re: como tomar resultados de while en una variable

GatorV, pero en el while donde guardas los nombres de las categorías ($cName) no debería ir un índice? algo como $cName[$i] que se vaya incrementando? (sino estaría pisando el mismo arreglo todo el rato? o no?)
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #6 (permalink)  
Antiguo 03/03/2008, 09:34
p2pdownloading
Invitado
 
Mensajes: n/a
Puntos:
Re: como tomar resultados de while en una variable

hola gracias por la ayuda

funciona bien pero me imprime un 'Array'

este es el resultado.

Array, categoria 1, categorie2, categorie 3

saludos
  #7 (permalink)  
Antiguo 03/03/2008, 09:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: como tomar resultados de while en una variable

No es necesario poner un índice, si tu usas $arreglo[] es como si usaras array_push, pero es más rápido usar $arreglo[].

Si te imprime un array es porque entonces en alguna parte de tu código tu consulta te devuelve mas de una columna y esta guardándola de más, prueba hacer var_dump( $cName ); antes de reemplazarla en tu plantilla para que veas si te esta almacenando los datos correctos.

Saludos.
  #8 (permalink)  
Antiguo 03/03/2008, 10:06
p2pdownloading
Invitado
 
Mensajes: n/a
Puntos:
Re: como tomar resultados de while en una variable

esto es lo q imprime en pantalla desde la categoria principal

string(67) "Array, ARES, AZUREUS, BITTORRENT, EMULE, OTROS P2P, OTROS PROGRAMAS"

esto en la categoria q te mostraba hoy

string(43) "Array, categoria 1, categorie2, categorie 3"

y esto donde no hay subcategorias

string(5) "Array"
  #9 (permalink)  
Antiguo 03/03/2008, 10:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: como tomar resultados de while en una variable

Esta muy raro, ¿cual es el código que estas utilizando?

Saludos.
  #10 (permalink)  
Antiguo 03/03/2008, 10:19
p2pdownloading
Invitado
 
Mensajes: n/a
Puntos:
Re: como tomar resultados de while en una variable

mira esta es la BD donde estan las categorias


cID cName cDesc cParent cOrder cPwd scCount dCount noFiles
1 OTROS P2P los mejores software programas p2p 0 5 1 29 5
2 AZUREUS descargar azureus mods de azureus azureus vuze 0 2 1 0 5
3 EMULE descargar emule mods de emule 0 4 0 4 5
4 BITTORRENT descargar bittorrent mods de bittorrent 0 3 0 1 5
5 ARES descargar ares mods de ares 0 1 0 1 5
6 categoria 1 1 0 1 0 10
7 categorie2 1 0 0 0 10
8 categorie 3 1 0 0 0 10
9 categoria 1 2 0 0 0 10
10 subcattegoria 1 6 0 0 0 10
11 OTROS PROGRAMAS descargar programas gratis download programas 0 6 0 0

y el script para el titulo y los meta es este

Código PHP:
$valor=$_GET['action'];

if(
$_GET['id'] != '')
{
    
$cID mysql_real_escape_string(stripslashes($_GET['id']));
} else {
    
$cID '0';
}

if(
$valor=='category')

{
      
$sql mysql_query("SELECT * FROM ".DB_PREFIX."categories WHERE cID = '".$cID."' ORDER BY cOrder ASC");
      
      
$r=mysql_fetch_array($sql);
      
$cName=$r["cName"];
      
$cDesc=$r["cDesc"];
      
$dDesc='';

      
$databaseName="Descargar ".$cName." Gratis| Download ".$cName." Gratis";
        
} elseif(
$valor=='downloads') {
      
      
$sql mysql_query("SELECT dName, dDesc, version, cID FROM ".DB_PREFIX."downloads WHERE dID = '".$cID."'");
     
      
$r=mysql_fetch_array($sql);
      
$dName=$r["dName"];
      
$dDesc=$r["dDesc"];
      
$version=$r["version"];
      
$cID=$r["cID"];
     
      
$dow mysql_query("SELECT cName FROM ".DB_PREFIX."categories WHERE cID = '".$cID."' ORDER BY cOrder ASC");
      
$m=mysql_fetch_array($dow);
      
$cName=$m["cName"]. " ";
    
      
$databaseName="Descargar "$dName." ".$version." Gratis| Descargar ".$cName." Gratis";

}else {
        
        
$sql mysql_query("SELECT * FROM ".DB_PREFIX."categories WHERE cID = '".$cID."' ORDER BY cOrder ASC");

}
    

    if(
mysql_num_rows($sql) == '0')

{

$sqll mysql_query("SELECT cName FROM ".DB_PREFIX."categories WHERE cParent = '0' ORDER BY cOrder ASC"); 
      
$cNames[] = array();


while(
$r=mysql_fetch_array($sqll)) {  $cNames[]=$r["cName"];   }  


$cat=implode", "$cNames );

var_dump$cat ); 
        
$h_sql mysql_query("SELECT * FROM ".DB_PREFIX."templates WHERE tID = '".$theme."' && tmName = 'header'");
$h=mysql_fetch_array($h_sql);
$header=$h["template"];


    
$header str_replace("{php=database_name}"$databaseName " |"$header);
    
$header str_replace("{php=site_url}"$siteURL$header);
        
$header str_replace("{php=cat_desc}"$cDesc$dDesc$header);
        
$header str_replace("{php=cat}"$cat$header); 
        
$header str_replace("{php=dow_desc}"$dDesc$header); 

} else { 

  

$sqll mysql_query("SELECT cName FROM ".DB_PREFIX."categories WHERE cParent = '".$cID."' ORDER BY cOrder ASC"); 
      
$cNames[] = array();


while(
$r=mysql_fetch_array($sqll)) {  $cNames[]=$r["cName"];   }  


$cat=implode", "$cNames );

var_dump$cat ); 

$h_sql mysql_query("SELECT * FROM ".DB_PREFIX."templates WHERE tID = '".$theme."' && tmName = 'header'");
$h=mysql_fetch_array($h_sql);
$header=$h["template"];

    
$header str_replace("{php=database_name}"$databaseName " |"$header);
    
$header str_replace("{php=site_url}"$siteURL$header);
        
$header str_replace("{php=cat_desc}"$cDesc$dDesc$header);
        
$header str_replace("{php=cat}"$cat$header);
        
$header str_replace("{php=dow_desc}"$dDesc$header); 


  #11 (permalink)  
Antiguo 03/03/2008, 10:20
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: como tomar resultados de while en una variable

En vez de
Código PHP:
$cNames[] = array(); 
debería ir sólo
Código PHP:
$cNames = array(); 
Saludos,
  #12 (permalink)  
Antiguo 03/03/2008, 10:40
p2pdownloading
Invitado
 
Mensajes: n/a
Puntos:
Re: como tomar resultados de while en una variable

funciona perfectamente

gracias a todos!!

  #13 (permalink)  
Antiguo 03/03/2008, 11:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: como tomar resultados de while en una variable

Ups, mi error, jeje, no es bueno estar enfermo de gripa, uno no ve las cosas igual
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 21:29.