Foros del Web » Programando para Internet » PHP »

Construyendo una cadena con onclick

Estas en el tema de Construyendo una cadena con onclick en el foro de PHP en Foros del Web. Tengo una serie de check de la siguiente manera: Pongamos provincias de España con sus códigos postales como value. [checkbox] Madrid (value 28) [checkbox] Barcelona ...
  #1 (permalink)  
Antiguo 09/11/2012, 16:25
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 14 años, 10 meses
Puntos: 15
Construyendo una cadena con onclick

Tengo una serie de check de la siguiente manera:

Pongamos provincias de España con sus códigos postales como value.

[checkbox] Madrid (value 28)
[checkbox] Barcelona (value 08)
[checkbox] Vizcaya (value 48)
[checkbox] Málaga (value 29)

... y así hasta el infinito (aunque las provincias sean 48, en mi caso práctico pueden ser miles)

El caso es que cuando se vaya pinchando en los checkbox, por ejemplo en Barcelona y Málaga, consiga esta cadena:

$cadena="28,29";

y esa cadena la pasaré por AJAX para hacer algo con ella.

Es decir cuando se haga onclick en el checkbox de Málaga se hará algo así como:

$cadena .= ",29";

Claro, si se vuelve a deseleccionar, se quitará el ",29" de la $cadena.

No sé, esa podría ser la idea pero no lo tengo muy claro cómo hacerlo. Espero haberme explicado.

Alguna idea sobre cómo implementarlo.
  #2 (permalink)  
Antiguo 09/11/2012, 16:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 10 meses
Puntos: 2534
Respuesta: Construyendo una cadena con onclick

Usa arrays, las cadenas no son lo mejor para esto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/11/2012, 16:41
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 8 años, 10 meses
Puntos: 95
Respuesta: Construyendo una cadena con onclick

Coincido con lo que dice pateketrueke. No obstante, si quieres hacerlo tal y como tienes pensado:

Código PHP:
Ver original
  1. $value = ",29";
  2.  
  3.     if (substr($value, 0, 1) == ',') {
  4.         echo substr($value, 1);
  5.     }
__________________
Web Designer.
Themes-Up!, próximamente
  #4 (permalink)  
Antiguo 09/11/2012, 18:18
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 14 años, 10 meses
Puntos: 15
Respuesta: Construyendo una cadena con onclick

Creo que tal y como lo tengo, es más sencillo dejarlo todo en una variable y luego en destino ir dividiéndola por comas.

El problema es cómo hacerlo. Es decir puedo poner un evento onclick en un botón por ejemplo pero... cómo hago para que me construya la variable?

Entiendo que ese evento ejecutaría un AJAX y allí... qué haría? una variable global ¿? una variable type=hidden ¿? cómo?

es que cuando construya esa variable tengo que pasarla entera ($cadena="28,29";) otra vez por un formulario por AJAX (tipo hidden?), para allí separarla por comas y coger los id (29,28,08,48) y hacer algo con ellos.

Dicho de otra forma, entiendo en general lo que hay que hacer pero no sé el cómo.
  #5 (permalink)  
Antiguo 09/11/2012, 18:42
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 9 años, 10 meses
Puntos: 461
Respuesta: Construyendo una cadena con onclick

Pues como harás cuando sean miles y eliminen el numero 10 para ir a ese indice??
la recomendación es esta
Cita:
Iniciado por pateketrueke Ver Mensaje
Usa arrays, las cadenas no son lo mejor para esto.
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 09/11/2012, 19:18
Avatar de LuaToto  
Fecha de Ingreso: octubre-2012
Ubicación: Veracruz
Mensajes: 26
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Construyendo una cadena con onclick

En mi caso primero muestro un listado/formulario de una consulta que hago al cargar la pagina, al mostrar esta consulta le pongo un respectivo check a cada registro y como value a mi check le asigno mi campo llave del registro que se esta mostrando, lo hago de la siguiente manera
Código:
<?//ejecuto la consulta?>
<form action="t1.php" method="POST">
 <TABLE BORDER=1 bordercolor="#666666" CELLSPACING=0 CELLPADDING=0> 
 <tr><td colspan="7" bgcolor="#000000"><font color="#FFFFFF"><H3>RECIBIR OBRAS DE CAEC</H3></font></td></tr>
      <TR> 
          <TD bgcolor="#66FF66">&nbsp;RECIBIR.?<br>click para marcar</TD>
	<TD bgcolor="#CCCCCC">&nbsp;NOMBRE DE LA OBRA</TD>
        <TD bgcolor="#CCCCCC">&nbsp;TIPO</TD>
	<TD bgcolor="#CCCCCC">&nbsp;LOCALIDAD</TD>
	<TD bgcolor="#CCCCCC">&nbsp;NUMERO DE SOLICITUD</TD>
	<TD bgcolor="#CCCCCC">&nbsp;FECHA DE SOLICITUD</TD>
	<TD bgcolor="#CCCCCC">&nbsp;SOLICITADA POR...</TD>
      </TR> 

<? 
//aqui con el bucle wheli mostramos los registros que no an sido aprobados
while($registros=mysql_fetch_assoc($query)) {?>
  <tr>
  <td bgcolor="#66FF66" align="center"><input name="recibir[]" value="<? echo $registros['Id'];?>" type="checkbox" style=" width:40px;"/></td>
    <td bgcolor="#FAFACC" align="left"><? echo $registros['Nombre_obra']; ?></td>
    <td bgcolor="#FAFAFA" align="center"><? echo $registros['Tipo_obra']; ?></td>
    <td bgcolor="#FAFAFA" align="center"><? echo $registros['Municipio']; ?></td>
    <td bgcolor="#FAFACC" align="center"><? echo $registros['Solic_PEMEX1']; ?></td>
    <td bgcolor="#FAFAFA" align="center"><? echo $registros['Fechasolic_PEMEX1']; ?></td>
    <td bgcolor="#FAFAFA" align="center"><? echo $registros['t1_user']; ?></td>
    
  </tr>
<? }?>
  <tr>
    <td bgcolor="#66FF66" colspan="7" align="left"><input name="Enviar" type="submit" value="Etiquetar como recibidas"><img src="flechaiz.gif">Haga click despues de haber seleccionado las obras que desee marcar como recibidas.</td>
  </tr>
 </table>
</form>
Notese que abro y cierro PHP (<?...?>) esto me permite salir del html y procesar con PHP

Despues proceso el formulario con los checks palomeados como muestro en el codigo siguiente:
Código:
<?
if($_POST['recibir']==true) 
{
	foreach ($_POST['recibir'] as $v)
	{
 	//para cada registro seleccionado ejecutamos un sql UPDATE
	$cuando1=date("Y/n/d");
	$situ1="La solicitud llego a ventanilla el ".$cuando1.", En espera de generar Oficio de comision ";
	$sql = "UPDATE historial_obras SET t2_user = '$quien', t2_fecha='$cuando1', situacion='$situ1' WHERE Id = $v";
	$res = mysql_query($sql,$conexion);
	}
}?>
Al pulsar el boton recibir se actualiza la pagina y vuelve a ejecutar la consulta inicial, de esta manera las que se actualizaron ya no se muestran, talvez no sea especifico a tus necesidades pero te muestro un ejemplo de como procesar un listado de registros seleccionados en por el usuario en modo discontinuo

Espero haberte ayudado
  #7 (permalink)  
Antiguo 09/11/2012, 20:03
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 10 meses
Puntos: 406
Respuesta: Construyendo una cadena con onclick

Para comenzar lo que pretendes hacer es con javascript no con PHP, en cambio, si lo haces como dice @pateketrueke no necesitarás de javascript para enviar los mismos datos dentro de un array...

Cita:
...Creo que tal y como lo tengo, es más sencillo dejarlo todo en una variable y luego en destino ir dividiéndola por comas....
Es redundante lo que pretendes, el navegador ya puede enviar el array construido y no es necesario gastar recursos en el servidor para partir un string en un array usando explode...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 10/11/2012, 03:49
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 14 años, 10 meses
Puntos: 15
Respuesta: Construyendo una cadena con onclick

Vale, pues entiendo que tengo que hacerlo con Arrays.

El tema es cómo construyo el array y con qué evento, onclick supongo. Luego al pasar por AJAX, entiendo q bastará con pasar el array tal cual.

No sé por dónde empezar

Última edición por humanista; 10/11/2012 a las 04:05
  #9 (permalink)  
Antiguo 10/11/2012, 05:00
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 14 años, 10 meses
Puntos: 15
Respuesta: Construyendo una cadena con onclick

Vale, creo que ya he encontrado algo que espero funcione:

Código PHP:
Ver original
  1. echo "<input name='provincias[]' type='checkbox' value='$idprovincia'>";

Luego sería tratarlo en el PHP del AJAX en destino con un foreach.

Hasta ahí parece que no habría problema.

El tema es el paso intermedio.

Es decir desde el formulario hasta javascript. Allí en javascript lo recojo con:

Código Javascript:
Ver original
  1. var provincias= document.formsend.provincias.value;

Ahí me da un error, creo que no puedo hacerlo así directamente. Alguna idea?
  #10 (permalink)  
Antiguo 10/11/2012, 05:58
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 14 años, 10 meses
Puntos: 15
Respuesta: Construyendo una cadena con onclick

Dicho de otra forma, el tema es poder tratar el array con AJAX.

O para ser más explícito, cómo pasar el array:

- desde PHP a javascript: es decir cómo recogerlo en javascript ya que var provincias= document.formsend.provincias.value; no me funciona

- desde javascript a PHP: una vez recogido en javascript no sé si habrá que tratarlo antes de pasarlo a PHP como ajax.send("provincias="+provincias)


El problema que yo veo es que no puedo usar json_encode ni serialize/unserialize ya que el array se crea justo en el momento de pulsar en el botón de enviar el formulario por POST.

Última edición por humanista; 10/11/2012 a las 07:04
  #11 (permalink)  
Antiguo 10/11/2012, 11:03
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 14 años, 10 meses
Puntos: 15
Respuesta: Construyendo una cadena con onclick

Bueno al estilo Juan Palomo (yo me lo guiso y yo me lo como), lo he resuelto.

Código PHP:
Ver original
  1. echo "<input name='provincias[]' type='checkbox' value='$idprovincia'>";

después recojo en javascript con:

Código Javascript:
Ver original
  1. var myForm = document.formsend;
  2.     var myControls = myForm.elements['provincias[]'];
  3.  
  4.     var arrayprovincias=""; // Inicializo la variable
  5.    
  6.     for (var i = 0; i < myControls.length; i++)
  7.     {
  8.         if (myControls[i].checked==true)
  9.         {
  10.             arrayprovincias+=myControls[i].value + ',';
  11.         }
  12.     }
  13.  
  14.     // Se quita la última coma de la variable
  15.     arrayprovincias= arrayprovincias.substring(0, arrayprovincias.length-1);


Se pasa por js la variable tal cual, con comas, y en destino se separa con explode y se recorre con for.

Y listo! va perfectamente, por si a alguien le interesa.

Etiquetas: onclick, cadenas
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 23:37.