Foros del Web » Programando para Internet » PHP »

como usar array?

Estas en el tema de como usar array? en el foro de PHP en Foros del Web. Hola, luego de tanto esfuerzo en conseguir una solucion a mi problema que ya he preguntado en otro tema, me han recomendado usar un array, ...
  #1 (permalink)  
Antiguo 12/06/2011, 10:29
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
como usar array?

Hola, luego de tanto esfuerzo en conseguir una solucion a mi problema que ya he preguntado en otro tema, me han recomendado usar un array, para que me guarde las ids de los mensajes que esta dentro de un while. Por otro lado tengo un textarea donde respondo los mensajes y que al responder quiero que me tome la id de ese mensaje que esta dentro del while y que me lo guarde ya directamente en la base de datos.

Lo mas importante que quiero saber es como usar un array, para que me guarde las ids y luego tomar la id del mensaje al responderlo asi se guarda.



Si me pueden ayudar a como hacerlo asi termino de una ves de todas con mi problema, porque creo que no hay otra forma mas que esta que es la que necesito, porque como ven es como una lista de comentarios que realiza una persona y luego es respondida por otra persona (tipo un muro de facebook pero mas basico y todo con PHP). Si necesitan una parte del codigo avisen.
  #2 (permalink)  
Antiguo 12/06/2011, 13:54
Avatar de ColdFusion  
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: como usar array?

Para que guardas las ids en un arrays?
  #3 (permalink)  
Antiguo 12/06/2011, 15:15
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

Supuestamente si las guardo a todas las ids del while (osea la lista de mensajes) en un array que luego al selecionar o al enviar la respuesta que sera escrita en un textarea se busque la id esa en el array y asi se guarda, mm no se si me explico, porque el problema es que me toma la ultima id del while y yo quiero a la que envio la respuesta..
  #4 (permalink)  
Antiguo 12/06/2011, 15:20
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como usar array?

while
$data[] = $ids;
endwhile

ahi se te guardan todos los id

foreach($data as $m){
echo $m;
}

ahi te imprime todos los id

Te dejo un mini tutorial sobre arrays
http://www.marcofbb.com.ar/vectores-...reglos-en-php/
  #5 (permalink)  
Antiguo 12/06/2011, 16:46
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

hice lo que me dijiste pero me sigue dando el ultimo numero...
  #6 (permalink)  
Antiguo 12/06/2011, 17:39
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como usar array?

Muestra el código
  #7 (permalink)  
Antiguo 12/06/2011, 18:28
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

Agradesco tu respuesta, al codigo te lo abrevio con lo importante asi no se hace largo y que se entienda mejor:

Todo esta en una misma pagina, aca esta el while, donde me muestra los mensajes y el textarea donde hago la respuestas (aparece en cada uno);

Código PHP:
Ver original
  1. <?php
  2. $SQL = mysql_query("SELECT * FROM  mensajes WHERE name='".$name."' AND indicador=0 ORDER BY id desc LIMIT 0, 10");
  3. while($row = mysql_fetch_array($SQL)){
  4.  
  5. $id = $row['id'];
  6. echo $id;
  7.  
  8. ?>
  9. <form name="FORM" method="post" action="muro.php?name=<?=$name;?>">
  10. <textarea name="msg[]" wrap="off" style="width:480px; height: 20px;" onkeypress="iSubmitEnter(event, document.FORM);"></textarea>
  11. </span></div>

Y aca donde se guarda el mensaje:

Código PHP:
Ver original
  1. if(isset($_POST['msg'])){
  2.  
  3. foreach($_POST['msg'] AS $valor){
  4.  
  5. if($valor != ''){
  6. $name=$_SESSION['nick'];
  7. $mensaje=$valor;
  8. $id=$id;
  9. $insert = mysql_query("INSERT INTO mensajes(name,fecha,mensaje,indicador)
  10. values('$name',NOW(),'$mensaje','$id')"  );
  11. echo $iden;
  12. }
  13. else {
  14. if($valor == ''){
  15. echo "error";
  16. }
  17. }
  18. }
  19. }


Todo me lo guarda a la perfeccion menos la ID de los mensajes, me toma cualquier ID en este caso me toma la ultima de la fila de los 10 mensajes que aparecen en pantallas.

Espero que puedas ayudarme.
  #8 (permalink)  
Antiguo 13/06/2011, 08:27
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: como usar array?

Saludos

Tal vez seria conveniente que lo manejaras de la siguiente manera:

Creas un valor hidden donde guardas el id. No veo necesario que lo manejes como un arreglo.
Código PHP:
Ver original
  1. <?php
  2. $SQL = mysql_query("SELECT * FROM  mensajes WHERE name='".$name."' AND indicador=0 ORDER BY id desc LIMIT 0, 10");
  3. while($row = mysql_fetch_array($SQL)){
  4.  $id = $row['id'];
  5. ?>
  6. <form name="FORM" method="post" action="muro.php?name=<?=$name;?>">
  7. <textarea name="msg" wrap="off" style="width:480px; height: 20px;" onkeypress="iSubmitEnter(event, document.FORM);"></textarea>
  8. <input type="hidden" name="id" value="<?php echo $id?>"/>
  9. </span></div>

En el insert lo manejarias

Código PHP:
Ver original
  1. if($_POST['msg'] != '' OR $_POST['id']!=""){
  2. $name=$_SESSION['nick'];
  3. $mensaje=$valor;
  4. $id=$_POST['id'];
  5. $insert = mysql_query("INSERT INTO mensajes(name,fecha,mensaje,indicador)
  6. values('$name',NOW(),'$mensaje','$id')"  );
  7. echo $iden;
  8. }
  9. else {
  10. echo "error";
  11. }

Seria que lo probaras
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #9 (permalink)  
Antiguo 13/06/2011, 08:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: como usar array?

Esto que significa:

$id=$id;

Me figuro que tu error estará en que cuando envías el formulario y se recarga la página, el valor que tenía $id se pierde. Supongo que lo intentas guardar para que no se pierda, pero no lo hacer bien.
Como no has puesto el código completo solo puedo hablar por suposición.
  #10 (permalink)  
Antiguo 13/06/2011, 15:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

Disculpen la tardanza de mi respuesta (ando muy ocupado). Probe el codigo que me pasaste, pero me da el ultimo y ahora no me guarda el mensaje... pero el mensaje es lo de menos se puede arreglar, si podes tratame de ayudar mejor en la ID. Gracias por las respuestas!!
  #11 (permalink)  
Antiguo 13/06/2011, 21:48
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como usar array?

Código PHP:
Ver original
  1. <?php
  2. $SQL = mysql_query("SELECT * FROM  mensajes WHERE name='".$name."' AND indicador=0 ORDER BY id desc LIMIT 0, 10");
  3. while($row = mysql_fetch_array($SQL)){
  4.  
  5. $id[] = $row['id'];
  6.  
  7. ?>
  8. <form name="FORM" method="post" action="muro.php?name=<?=$name;?>">
  9. <textarea name="msg" wrap="off" style="width:480px; height: 20px;" onkeypress="iSubmitEnter(event, document.FORM);"></textarea>
  10. </span></div>

Código PHP:
Ver original
  1. foreach($id as $valor){
  2. $name=$_SESSION['nick'];
  3. $mensaje=$_POST['msg'];
  4. $insert = mysql_query("INSERT INTO mensajes(name,fecha,mensaje,indicador)
  5. values('$name',NOW(),'$mensaje','$valor')"  );
  6. echo "TODO OK";


Igual no entiendo bien lo que quered hacer explícate mejor por ahí la solución es otra
  #12 (permalink)  
Antiguo 13/06/2011, 22:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

Me da este error:
Fatal error: [] operator not supported for strings in...


Bueno te explico, yo tengo una lista de comentarios que se muestra a traves un un while. Por otro lado dentro del while tengo un formulario, donde hago las respuesta (tipo facebook, pero mas basico, como preguntas y respuestas). Supongamos que son preguntas, cada preguntas tienen una ID, cuando yo respondo, quiero tomar esa ID de la pregunta y guardarla como un "segundo ID" para que aparescan en la preguntas como respuestas. Pero no logro tomar la ID correctamente, sino que me toma la ID siempre de la ultima fila del while, osea de 10 preguntas me toma la 1 y supongamos que yo respondo a la 5, en ves de 5 me guarda 1.

Ese es el tema, no me toma la ID y no se como hacerlo correctamente para que se guarde sin problemas en la base de datos.


Gracias igual por la respuesta!!
  #13 (permalink)  
Antiguo 13/06/2011, 22:07
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: como usar array?

Tenes que utilizar un input hidden con el id por cada form ( responder pregunta ) y listo
  #14 (permalink)  
Antiguo 14/06/2011, 18:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

ya lo hice acá, pero no funciono, si podes leerlo de vuelta mas despacio y tranquilo te daras cuenta a lo que voy, espero que me puedas darme una mano en esto... tiene que haber una solucion
  #15 (permalink)  
Antiguo 16/06/2011, 03:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: como usar array?

Cita:
Iniciado por Helmfrid Ver Mensaje
Agradesco tu respuesta, al codigo te lo abrevio con lo importante asi no se hace largo y que se entienda mejor:

Todo esta en una misma pagina, aca esta el while, donde me muestra los mensajes y el textarea donde hago la respuestas (aparece en cada uno);

Código PHP:
Ver original
  1. <?php
  2. $SQL = mysql_query("SELECT * FROM  mensajes WHERE name='".$name."' AND indicador=0 ORDER BY id desc LIMIT 0, 10");
  3. while($row = mysql_fetch_array($SQL)){
  4.  
  5. $id = $row['id'];
  6. echo $id;
  7.  
  8. ?>
  9. <form name="FORM" method="post" action="muro.php?name=<?=$name;?>">
  10. <textarea name="msg[]" wrap="off" style="width:480px; height: 20px;" onkeypress="iSubmitEnter(event, document.FORM);"></textarea>
  11. </span></div>

Y aca donde se guarda el mensaje:

Código PHP:
Ver original
  1. if(isset($_POST['msg'])){
  2.  
  3. foreach($_POST['msg'] AS $valor){
  4.  
  5. if($valor != ''){
  6. $name=$_SESSION['nick'];
  7. $mensaje=$valor;
  8. $id=$id;
  9. $insert = mysql_query("INSERT INTO mensajes(name,fecha,mensaje,indicador)
  10. values('$name',NOW(),'$mensaje','$id')"  );
  11. echo $iden;
  12. }
  13. else {
  14. if($valor == ''){
  15. echo "error";
  16. }
  17. }
  18. }
  19. }


Todo me lo guarda a la perfeccion menos la ID de los mensajes, me toma cualquier ID en este caso me toma la ultima de la fila de los 10 mensajes que aparecen en pantallas.

Espero que puedas ayudarme.

La parte del código donde guarda el mensaje modifícala así:

Código PHP:
if(isset($_POST['msg'])){
 
foreach(
$_POST['msg'] AS $key => $valor){
 
   if(
$valor != ''){
      
$name=$_SESSION['nick'];
      
$mensaje=$valor;
      
$id=$key 1;
      
$insert mysql_query("INSERT INTO mensajes(name,fecha,mensaje,indicador) 
      values('$name',NOW(),'$mensaje','$id')"  
);
      echo 
$iden;
   }
   else {
      if(
$valor == ''){
          echo 
"error";
      }
   }
}

Comprueba que id te guarda poniéndolo de esta forma.
Por cierto, le dices ahí que imprima la variable $iden, pero esa variable no aparece definida en ningún sitio. ¿Que significa esa variable?.
  #16 (permalink)  
Antiguo 17/06/2011, 17:55
 
Fecha de Ingreso: mayo-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 0
Respuesta: como usar array?

no, tampoco me lo devuelve al resultado como debería ser.

Etiquetas: Ninguno
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 00:02.