Foros del Web » Programando para Internet » PHP »

problema función

Estas en el tema de problema función en el foro de PHP en Foros del Web. Hola a todos, A ver, tengo un problemilla y no se como solucionarlo. Tengo una lista multi-select que carga los datos desde una BD. Hasta ...
  #1 (permalink)  
Antiguo 24/04/2007, 14:03
 
Fecha de Ingreso: febrero-2007
Mensajes: 244
Antigüedad: 17 años, 2 meses
Puntos: 0
problema función

Hola a todos,

A ver, tengo un problemilla y no se como solucionarlo.

Tengo una lista multi-select que carga los datos desde una BD. Hasta aquí ok.

Ahora, por cabecera me están pasando un valor id="valor". Ese valor, puede ser una simple cadena, o varias cadenas separadas por comas. (id='hola' ó bien id='hola,adios,bye'). Este valor, lo capturo en la variable $asig2.

Lo que tengo que hacer, es que, los valores que me pasen en id, me tienen que aparecer seleccionados en la lista multi-select. Si es un único valor, sí me funciona, pero con más de uno no.

El código que tengo es éste:

Código PHP:
<select name="lista[]" size="4" multiple id="lista">                        <?php                                     
...
//Operaciones necesarias para cargar la lista desde la BD
                                        
while ($rows0 mysql_fetch_array($result)){
    
extract ($rows0);
?> 
        <option value="<?php echo $nombre?>"
<?php 
    $num_selects 
substr_count($asig2",") + 1;
    
$i 0;
    
$aux $asig2;
    while (
$i $num_selects) {
        
$pos1 strpos ($aux",");    
        
$aux2 substr($aux$pos1strlen($aux));
        if (
$aux2 == $nombre){
            echo 
"selected";
        }
        
$aux $aux2;
        
$i++;
    }
        
?>
       >
<?php echo $nombre?></option>
<?php
     
}
?>
</select>
Espero que me podais ayudar.

Gracias.
  #2 (permalink)  
Antiguo 24/04/2007, 14:58
Avatar de BreCkver  
Fecha de Ingreso: enero-2006
Ubicación: Mexico, D.F.
Mensajes: 96
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: problema función

Hola:

Segun creo, pues no he checado, el problema esta en la linea:
$pos1 = strpos ($aux, ",");

Puesto que recives una cadena con "," en un array por que no utilizas el metodo implode() y despues asociarlo a una variable para que despues haga la consulta con los datos en la nueva variable.

por ejemplo:

Código PHP:
$lista=implode(',',$_POST['id']);
mysql_query("SELECT FROM tabla WHERE id IN(".$lista.")"); 
Creo yo que este proceso en mejor. Pero no se muy bien como te funcione con el select

Espero haber ayudado ::
__________________

:-D No solo soy mexicano también soy del Politécnico :arriba:

  #3 (permalink)  
Antiguo 26/04/2007, 05:49
 
Fecha de Ingreso: febrero-2007
Mensajes: 244
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: problema función

Hola BreCkver,

Gracias por contestar, pero por lo que he visto, la función implode lo que hace es dado un array, separartelo con el string que le indicas, pero eso yo no es lo que quiero.

Alguna otra idea??

Gracias.
  #4 (permalink)  
Antiguo 26/04/2007, 10:10
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: problema función

Prueba con esto:

Código PHP:
<select name="lista[]" size="4" multiple id="lista">                        

<?php                                     
//Operaciones necesarias para cargar la lista desde la BD
  
    
while ($rows0 mysql_fetch_array($result)){
        
extract ($rows0);
?> 
        <option value="<?php echo $nombre?> "
            <?php 
                
if(substr_count($asig2",")>0){
                    
$asig2 explode(',',$asig2);
                    for(
$i=0;$i<count($asig2);$i++){
                        if(
$asig2[$i] == $nombre){
                            echo 
'selected';
                        }
                    }
                }
                else{
                    if(
$asig2 == $nombre){
                        echo 
'selected';
                    }
                }
            
?>
       >
<?php echo $nombre?></option>
<?php
     
}
?>
</select>
La idea es que si encuentra una coma hace un arreglo de la cadena, y trabaja atraves de eso con un for... cualquier duda me avisas.

Saludos.
  #5 (permalink)  
Antiguo 26/04/2007, 10:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 244
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: problema función

Gracias @ndreX!,

Pero mira lo que me pasa, cuando recibo más de un string, le digo que me lo imprima, y me imprime "array"......si voy posición a posición, me da los elementos, o me da caracter a caracter??
  #6 (permalink)  
Antiguo 26/04/2007, 10:50
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: problema función

Cita:
Iniciado por Vane_ Ver Mensaje
Gracias @ndreX!,

Pero mira lo que me pasa, cuando recibo más de un string, le digo que me lo imprima, y me imprime "array"......si voy posición a posición, me da los elementos, o me da caracter a caracter??
Código PHP:
<?
    
//Supongamos que llevamos esta cadena:
    
$sig2 'hola,como,estas';
    
//Lo que yo hago es esto:

     
if(substr_count($asig2",")>0){ //Si hay mas de una ',' (coma) entra
         
$asig2 explode(',',$asig2); //Hacemos un array de los datos
         
for($i=0;$i<count($asig2);$i++){
              if(
$asig2[$i] == $nombre){ //Si el valor que esta en la posicion $i del arreglo es igual al nombre entra
                   
echo 'selected'// Lo selecciona
              
}
         }
     }
     else{
         if(
$asig2 == $nombre){
              echo 
'selected';
         }
     }

    
//Entonces despues de crear el arreglo, tu puedes hacer referencia a la posición del arreglo así:
    
echo $asig2[0];
    
//Te dará como resultado: hola

        //Tambien puedes ver como esta compuesto el arreglo con:
        
print_r($asig2);
?>
Espero me haya explicado.
Sino me avisas...
Saludos.
  #7 (permalink)  
Antiguo 26/04/2007, 11:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 244
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: problema función

Muchisimas muchisimas gracias @ndreX!

Esto ya me funciona !!!!
  #8 (permalink)  
Antiguo 26/04/2007, 11:12
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: problema función

De nada, me alegra haberte ayudado.

Saludos.
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 13:24.