Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: satan69 en 3 Agosto 2009, 19:17 pm



Título: ayuda... lectura de string y meterlo en un array
Publicado por: satan69 en 3 Agosto 2009, 19:17 pm
hola muchachos... queria saber como puedo lograr leeer una string asi..


hola,dedo,mano,monitor,chele,blanco

lo que quiero es obtener las palabras en un array algo asi

$palabra[0] = "hola";
$palabra[1] = "dedo";
$palabra[2] = "mano";
$palabra[3] = "monitor";
$palabra[4] = "chele";
$palabra[5] = "blanco";

seria algo asi... como lo podria hacer..?


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: SnakeDrak en 3 Agosto 2009, 21:58 pm
Hola,

Pues con explode:

Código
  1. $cadena = "hola,dedo,mano,monitor,chele,blanco";
  2. $dividido = explode(",",$cadena);
  3. for($i=0;$i<sizeof($cadena);$i++)
  4.   echo $dividido[$i]."<br/>";
  5.  

Quedaría:
Citar
hola
dedo
mano
monitor
chele
blanco

Saludos!


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: Erika Vega en 3 Agosto 2009, 23:25 pm
Quizas esto te de una idea:

http://www.newbiemania.org/tutoriales-php-15-Separar%20strings%20con%20PHP.html


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: [u]nsigned en 4 Agosto 2009, 00:30 am
Como dijo SnakeDark básicamente seria esto para separar el string:

Código
  1. <?php
  2. $mi_cadena = "hola,dedo,mano,monitor,chele,blanco";
  3. $mi_array = explode(',', $mi_cadena);
  4. ?>

Y otra forma de recorrerlo usando la función foreach de PHP:

Código
  1. <?php
  2. $mi_cadena = "hola,dedo,mano,monitor,chele,blanco";
  3. $mi_array = explode(',', $mi_cadena);
  4. foreach($mi_array as $indice => $valor)
  5. {
  6. echo "$indice : $valor<br />";
  7. }
  8. ?>

Y otra útil para debuggear:
Código
  1. print_r($mi_array);

Que mostraría algo asi:

Código
  1. Array ( [0] => hola [1] => dedo [2] => mano [3] => monitor [4] => chele [5] => blanco )

Salu10


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: satan69 en 4 Agosto 2009, 01:26 am
me ha funcionado lo que me han dicho.. pero sigo teniendo problemas con el script que quiero hacer... aqui le pongo una muestra:
HAGO ESTO:
Con el $xD le meto los id.

$numx =  1;
$xD = $xD;
setcookie("id", $xD);
setcookie("num", $numx);

despues voy metiendo mas id en la cookie

$numx = $_COOKIE["num"] + 1;
$xD = $_COOKIE["id"].",".$xD;
setcookie("id", $xD);
setcookie("num", $numx);

ya despues al mismo tiempo que actualizo la cookie la leeeeeo

$cadena = $_COOKIE['id'];
$dividido = explode(",",$cadena);
for($i=0;$i<$num;$i++)
{
$divi = $dividido[$i];
$edit = mysql_query("SELECT * from char WHERE id = '".$divi."'")or die(mysql_error());
//y el resto ya lo saben... jejeje
}

mi problema radica q... usando ajax.. no se me actualiza la lista de nombres sino a la hora de recargar...

Hay alguna forma para lograrlo..?


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: [u]nsigned en 4 Agosto 2009, 02:15 am
Código
  1. $cadena = $_COOKIE['id'];
  2. $dividido = explode(",",$cadena);
  3. for($i=0;$i<$num;$i++)
  4. {
  5. $divi = $dividido[$i];
  6. $edit = mysql_query("SELECT * from char WHERE id = '".$divi."'")or die(mysql_error());
  7. //y el resto ya lo saben... jejeje
  8. }
  9.  

De donde sacas $num?  :silbar:
Creo que deberia ser $numx, no? Y no te recomiendo usar 'char' como el nombre de na tabla ya que es una palabra reservada del lenguaje SQL.

Por eso recomiendo usar foreach. Mas alla de como implementes AJAX:

Código
  1. $dividido = explode(",",$_COOKIE['id']);
  2. foreach($dividido as $valor)
  3. {
  4.   $edit = mysql_query("SELECT * from USA_OTRO_NOMBRE_D_TABLA WHERE id = '$valor'")or die(mysql_error());
  5.  //Acostumbremos a sangrar el código ;)
  6. }

como veras eh quitado $cadena porque no tiene ninguna utilidad, asigna con un explode a $_COOKIE directo (si no vas a parsear dicha variable).


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: SnakeDrak en 4 Agosto 2009, 02:33 am
Hola,

Yo siempre uso en las consultas SQL las comillas ``, así puedes llamarle FROM si quieres a un campo y no te dará problemas.

Código
  1. SELECT `FROM` FROM `una_tabla` WHERE `un_campo` = 'un_valor';
  2.  

Saludos!


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: [u]nsigned en 4 Agosto 2009, 03:01 am
Hola,

Yo siempre uso en las consultas SQL las comillas ``, así puedes llamarle FROM si quieres a un campo y no te dará problemas.

Código
  1. SELECT `FROM` FROM `una_tabla` WHERE `un_campo` = 'un_valor';
  2.  

Saludos!

Habiendo TANTAS otras palabras justo así le tienen que poner a un campo/tabla?  :xD

Saludos  :)


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: SnakeDrak en 4 Agosto 2009, 03:05 am
Hola,

 :xD bueno de esa manera evitan ese tipo de errores, no sé a mi me gusta ponerle los ``, me siento más seguro  :xD y me es más bonito  :P

Además campos como from son palabras muy utilizadas xD o char para personajes.. etc.

Pero vamos, solo era por qe lo supiese, de todas formas cada cual programa como más le gusta, mientras funcione y esté bien optimizado pues perfect!

Saludos!!


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: satan69 en 4 Agosto 2009, 08:06 am
Código
  1. $cadena = $_COOKIE['id'];
  2. $dividido = explode(",",$cadena);
  3. for($i=0;$i<$num;$i++)
  4. {
  5. $divi = $dividido[$i];
  6. $edit = mysql_query("SELECT * from char WHERE id = '".$divi."'")or die(mysql_error());
  7. //y el resto ya lo saben... jejeje
  8. }
  9.  

De donde sacas $num?  :silbar:
Creo que deberia ser $numx, no? Y no te recomiendo usar 'char' como el nombre de na tabla ya que es una palabra reservada del lenguaje SQL.

Por eso recomiendo usar foreach. Mas alla de como implementes AJAX:

Código
  1. $dividido = explode(",",$_COOKIE['id']);
  2. foreach($dividido as $valor)
  3. {
  4.   $edit = mysql_query("SELECT * from USA_OTRO_NOMBRE_D_TABLA WHERE id = '$valor'")or die(mysql_error());
  5.  //Acostumbremos a sangrar el código ;)
  6. }

como veras eh quitado $cadena porque no tiene ninguna utilidad, asigna con un explode a $_COOKIE directo (si no vas a parsear dicha variable).

le puse char.. es decir, por poner cualquier nombre... fijense que el codigo me funciona bien.. pero las cookie se actualizan solo cuando refresco la pagina..? alguna otra sugerencia


Título: Re: ayuda... lectura de string y meterlo en un array
Publicado por: WHK en 11 Agosto 2009, 18:33 pm
Debe ser porque estás declarando dos vece la cookie, intenta con esto:

Código
  1. <?php
  2. $numx =  1;
  3. $xD = $xD;
  4.  
  5. // Obtiene data
  6. $data = obtiene_data();
  7. $numx = $data['num'] + 1;
  8. $xD = $data['id'].','.$xD;
  9.  
  10. // Establece data nuevamente
  11. establece_data($numx, $xD);
  12.  
  13. $dividido = explode(',', $xD);
  14. foreach($dividido as $id)
  15. $edit = @mysql_query("SELECT * from char WHERE id = '".(int)$divi."'");
  16. //y el resto ya lo saben... jojojo
  17. }
  18.  
  19. function obtiene_data(){
  20. return unserialize($_COOKIE['data']);
  21. }
  22.  
  23. function establece_data($numx, $id){
  24. return setcookie('data', serialize(array('num' => $numx, 'id' => $xD)));
  25. }
  26. ?>