Foros del Web » Programando para Internet » PHP »

ayuda por favor

Estas en el tema de ayuda por favor en el foro de PHP en Foros del Web. hola a todos, si alguien me puede ayudar le agradeceria muchisimo tengo una cadena de texto de la siguiente forma Motorola,V635,V975,V220,V550,E550,C980i,C380,L7,V3 ,C651,V3i,V3x;PEBL,U6,E398,C650,C385,C975,V980,V36 0;ROKR,E1,V620,V560,V535,E1000,V80,C390,V180,E770; Siemens,S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S 75,C65,M75,SL65,C72 ...
  #1 (permalink)  
Antiguo 06/02/2007, 14:30
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
ayuda por favor

hola a todos, si alguien me puede ayudar le agradeceria muchisimo

tengo una cadena de texto de la siguiente forma

Motorola,V635,V975,V220,V550,E550,C980i,C380,L7,V3 ,C651,V3i,V3x;PEBL,U6,E398,C650,C385,C975,V980,V36 0;ROKR,E1,V620,V560,V535,E1000,V80,C390,V180,E770; Siemens,S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S 75,C65,M75,SL65,C72

como se pueden dar cuenta son modelos de celular, lo que necesito hacer es crear una matriz que me quede eje:


Motorola
V635,V975,V220,V550,E550,C980i,C380,L7,V3,C651,V3i ,V3x
PEBL
U6,E398,C650,C385,C975,V980,V360;
ROKR
E1,V620,V560,V535,E1000,V80,C390,V180,E770
Siemens
S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S75,C65,M 75,SL65,C72

he intentado de mil formas pero no me ha funcionado

gracias si alguien me puede ayudar.
  #2 (permalink)  
Antiguo 06/02/2007, 14:38
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: ayuda por favor

hola mancemo dale un vistazo a explode
__________________

  #3 (permalink)  
Antiguo 06/02/2007, 14:45
 
Fecha de Ingreso: septiembre-2002
Mensajes: 122
Antigüedad: 21 años, 7 meses
Puntos: 0
Re: ayuda por favor

intenta con la funcion split ...
ej:
$cadena="Motorola,V635,V975,V220,V550,E550,C980i,C 380,L7,V3 ,C651,V3i,V3x;PEBL,U6,E398,C650,C385,C975,V980,V36 0;ROKR,E1,V620,V560,V535,E1000,V80,C390,V180,E770; Siemens,S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S 75,C65,M75,SL65,C72";

$marcas=split(";",$cadena);
foreach($marcas as $pos =>$valor)
echo "Posicion $pos contiene $valor<br>";

bueno con esto espero puedas avanzar un poco.
  #4 (permalink)  
Antiguo 06/02/2007, 15:03
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: ayuda por favor

hola

gracias por tu ayuda

mira el codigo que tengo
Código PHP:
$compatStr = "Motorola,V635,V975,V220,V550,E550,C980i,C380,L7,V3,C651,V3i,V3x;PEBL,U6,E398,C650,C385,C975,V980,V360;ROKR,E1,V620,V560,V535,E1000,V80,C390,V180,E770;Siemens,S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S75,C65,M75,SL65,C72;SonyEricsson,W900,Z800,K310,Z550,S700i,V630,Z520,W600,D750,K800,Z1010,W300,K790,K500i,K700i,Z610,K300i,V600,V800,K750i,W800,Z530,K510,K508,W550,K610,W850,W710,J300i,W810,Z710,F500i,K600;Nokia,6270,N70,6111,7370,6600,N73,6280,3230,6235,6021,6680,6170,3220,6681,6260,8800,7610,6131,6230i,7260,6020,7270,E50,3250,5140,5300,6101,6233,6230,6630,6234,5140i,6670,N91,6030;Samsung,ZV30,D820,D500,P910,Z500,Z400,ZV40,E780,ZV10,Z510,Z140,D800,E860,D600,D900,E900,D830,E720,Z130,E870,Z300;LG,U8120,U8330,U8138,U8110,U8130,U8180,U8380;BenQ-Siemens,S68";
                echo $juego->TITULO;
                ?><BR><?
                
//echo $compatStr;
                
$compatArray explode(';',$compatStr);
                
$marcas=split(";",$compatStr);
                foreach(
$marcas as $pos =>$valor)
                echo 
"Posicion $pos contiene $valor<br>";
este codigo me devuelve

Posicion 0 contiene Motorola,V635,V975,V220,V550,E550,C980i,C380,L7,V3 ,C651,V3i,V3x
Posicion 1 contiene PEBL,U6,E398,C650,C385,C975,V980,V360
Posicion 2 contiene ROKR,E1,V620,V560,V535,E1000,V80,C390,V180,E770
Posicion 3 contiene Siemens,S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S 75,C65,M75,SL65,C72
Posicion 4 contiene SonyEricsson,W900,Z800,K310,Z550,S700i,V630,Z520,W 600,D750,K800,Z1010,W300,K790,K500i,K700i,Z610,K30 0i,V600,V800,K750i,W800,Z530,K510,K508,W550,K610,W 850,W710,J300i,W810,Z710,F500i,K600
Posicion 5 contiene Nokia,6270,N70,6111,7370,6600,N73,6280,3230,6235,6 021,6680,6170,3220,6681,6260,8800,7610,6131,6230i, 7260,6020,7270,E50,3250,5140,5300,6101,6233,6230,6 630,6234,5140i,6670,N91,6030
Posicion 6 contiene Samsung,ZV30,D820,D500,P910,Z500,Z400,ZV40,E780,ZV 10,Z510,Z140,D800,E860,D600,D900,E900,D830,E720,Z1 30,E870,Z300
Posicion 7 contiene LG,U8120,U8330,U8138,U8110,U8130,U8180,U8380
Posicion 8 contiene BenQ-Siemens,S68


ahora lo que necesito hacer es lo siguiente, validar que en esa matriz exista un modelo de celular antes dicho, por ejemplo
Código PHP:
$marca 'Motorola';
$modelo 'V3'
necesito devolver que ese modelo de celular esta en la lista inicial, no se si voy bien, y no se si me entienden, de antemano muchas gracias.
  #5 (permalink)  
Antiguo 06/02/2007, 16:02
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: ayuda por favor

ayudenme por fa, es algo urgente y la verdad no se me ocurre como hacerlo

gracias
  #6 (permalink)  
Antiguo 06/02/2007, 16:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: ayuda por favor

Puedes utilizar strpos para evaluar si esta una cadena dentro de otra.
  #7 (permalink)  
Antiguo 06/02/2007, 16:31
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: ayuda por favor

Código PHP:
$cadena 'Motorola,V635,V975,V220,V550,E550,C980i,C380,L7,V3 ,C651,V3i,V3x;PEBL,U6,E398,C650,C385,C975,V980,V36 0;ROKR,E1,V620,V560,V535,E1000,V80,C390,V180,E770; Siemens,S65,SL75,SK65,C75,CX75,CX70,CX65,M65,C70,S 75,C65,M75,SL65,C72';
$datos explode(';',$cadena);
while(list(
$key,$var) = each($datos)) {
 
$nuevo_datos[$key] = explode(',',$var);
}
for(
$i=0;$i<sizeof($nuevo_datos);$i++) {
 
$marca array_shift($nuevo_datos[$i]);
 for(
$m=0;$m<sizeof($nuevo_datos[$i]);$m++) {
  echo 
'Marca: ' $marca ' - Modelo: ' $nuevo_datos[$i][$m] . '<br>';
 }
 echo 
'<br><br>';

devuelve esto:
Marca: Motorola - Modelo: V635
Marca: Motorola - Modelo: V975
Marca: Motorola - Modelo: V220
Marca: Motorola - Modelo: V550
Marca: Motorola - Modelo: E550
Marca: Motorola - Modelo: C980i
Marca: Motorola - Modelo: C380
Marca: Motorola - Modelo: L7
Marca: Motorola - Modelo: V3
Marca: Motorola - Modelo: C651
Marca: Motorola - Modelo: V3i
Marca: Motorola - Modelo: V3x


Marca: PEBL - Modelo: U6
Marca: PEBL - Modelo: E398
Marca: PEBL - Modelo: C650
Marca: PEBL - Modelo: C385
Marca: PEBL - Modelo: C975
Marca: PEBL - Modelo: V980
Marca: PEBL - Modelo: V36 0


Marca: ROKR - Modelo: E1
Marca: ROKR - Modelo: V620
Marca: ROKR - Modelo: V560
Marca: ROKR - Modelo: V535
Marca: ROKR - Modelo: E1000
Marca: ROKR - Modelo: V80
Marca: ROKR - Modelo: C390
Marca: ROKR - Modelo: V180
Marca: ROKR - Modelo: E770


Marca: Siemens - Modelo: S65
Marca: Siemens - Modelo: SL75
Marca: Siemens - Modelo: SK65
Marca: Siemens - Modelo: C75
Marca: Siemens - Modelo: CX75
Marca: Siemens - Modelo: CX70
Marca: Siemens - Modelo: CX65
Marca: Siemens - Modelo: M65
Marca: Siemens - Modelo: C70
Marca: Siemens - Modelo: S 75
Marca: Siemens - Modelo: C65
Marca: Siemens - Modelo: M75
Marca: Siemens - Modelo: SL65
Marca: Siemens - Modelo: C72
__________________

  #8 (permalink)  
Antiguo 06/02/2007, 17:26
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: ayuda por favor

hola gerson

gracias por responder

mira mi codigo

Código PHP:
require_once('include/funcs.inc');

$marcas = 'Motorola';
$modelo = 'V3';
$tipo = 'JUEGO';

    if ($tipo==JUEGO)
    {

        $m=0;
        $xmlFile = './xmls/8_categorias.xml';
        $xml_parser = simplexml_load_file($xmlFile);
        $arregloTEMP = simplexml2array($xml_parser);
        $cantidad = count($arregloTEMP[CATEGORIA]);
        //echo $cantidad;
        //echo "  ";
        $tipos = $xml_parser->CATEGORIA;
        for($i=0; $i<$cantidad; $i++)
        {
            $tipo = $tipos[$i];
            $codigo = $tipo->ID;
            $categoria = $tipo->NOMBRE;
            ?><BR><BR><?
            
echo "categoria: "; echo $categoria; echo " --- ";
            
$xmlfile2 './xmls/8_'.$codigo.'.xml';
            echo 
"archivo xml: "; echo $xmlfile2; echo " --- ";
            
$xml_parse simplexml_load_file($xmlfile2);
            
$arregloTE simplexml2array($xml_parse);
            
$cantid count($arregloTE[JUEGOS]);
            
$juegos $xml_parse->JUEGOS;
            echo 
"id categoria: "; echo $codigo; echo " --- ";
            
?><BR><?
            
for($j=0$j<$cantid$j++)
            {
                
$juego $juegos[$j];
                
$nombre $juego->TITULO;
                
?><BR><?
                
echo "nombre juego: "; echo $nombre;
                
?><BR><?
                $compatStr 
$juego->COMPATIBLE;
                
$datos explode(';',$compatStr);
                while(list(
$key,$var) = each($datos))
                {
                 
$nuevo_datos[$key] = explode(',',$var);
                }
                for(
$i=0;$i<sizeof($nuevo_datos);$i++) 
                {
                    
$marca array_shift($nuevo_datos[$i]);
                    for(
$m=0;$m<sizeof($nuevo_datos[$i]);$m++) 
                    {
                        if (
$marca == $marcas && $modelo==$nuevo_datos[$i][$m])
                        {
                            
$matrizresulta = array();
                            
$matrizresulta[]= $nombre;
                            
//echo 'Marca: ' . $marca .  '<br>';
                            //echo 'Modelo: ' . $nuevo_datos[$i][$m] . '<br>';
                            
                        
}
                    }
                } 

            }
        }
    
$ca count($matrizresulta);
    echo 
$ca;
    echo 
$matrizresulta[0];    
    }
    
?>
mi problema radica que en $matrizresulta no me quedan todos los resultados que quiero, unicamente me muestra el ultimo valor que inserta, ý no se por que

gracias por tu ayuda.
  #9 (permalink)  
Antiguo 06/02/2007, 17:50
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: ayuda por favor

bueno es por q $matrizresulta = array(); esta dentro en el centro de todo vale decir q cada vez que el "if" sea correcto se declara de nuevo mas no se agrega. declara esa matriz entes del primer "FOR":

$tipos = $xml_parser->CATEGORIA;
$matrizresulta = array();
.....
__________________

  #10 (permalink)  
Antiguo 06/02/2007, 18:27
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: ayuda por favor

Gerson gracias me has ayudado muchisimo, una ultima, una matriz la puedo devolver de una funcion, con return....

Gracias
  #11 (permalink)  
Antiguo 06/02/2007, 18:35
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: ayuda por favor

Pues si se puede
__________________

  #12 (permalink)  
Antiguo 06/02/2007, 18:39
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: ayuda por favor

si ya vi, y la ultima ultima, tengo en una variable $marca=motorla y necesito que qeude $marca=Motorla, me podes indicar como, o sea que siempre reemplaze la primera letra por mayuscula independiente de cual sea.

muchsimias gracias por tu ayuda, con eso creo que ya termine y no te molesto mas.
  #13 (permalink)  
Antiguo 06/02/2007, 18:51
 
Fecha de Ingreso: marzo-2006
Mensajes: 194
Antigüedad: 18 años, 1 mes
Puntos: 1
Re: ayuda por favor

gracias

ya pude es con esta funcion $marcas = ucfirst($marca);

les agradezco su colaboracion.
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 22:49.