Foros del Web » Programando para Internet » Javascript »

Validación formulario

Estas en el tema de Validación formulario en el foro de Javascript en Foros del Web. Hola gente, estoy tratando de validar un formulario en JS, después ya pasará por el servidor. La cuestión es que tengo un select con varias ...
  #1 (permalink)  
Antiguo 18/09/2010, 17:45
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Validación formulario

Hola gente, estoy tratando de validar un formulario en JS, después ya pasará por el servidor. La cuestión es que tengo un select con varias opciones, si eliges por ejemplo 4 se crean 4 campos, y así sucesivamente. Pero si por ejemplo elijo 4, introduzco los datos, y después elijo 5, sólo se quedan los datos en el primer campo, y no en los demás. He hecho 1000 pruebas y no sé qué puede ser :S Por eso acudo a vosotros, aquí os dejo el código (es un poco espeso, lo siento ;)):
Código Javascript:
Ver original
  1. function ID(id){
  2.   return document.getElementById(id);
  3.  }
  4.  var n=1, l=1;
  5.  function addI(v){
  6.    switch(v.value){
  7.     case '+7':
  8.      ID('btn').style.display = 'block';
  9.      break;
  10.     default:
  11.      if(Int(v.value) > n){
  12.       for(j=0; j<Int(v.value)-l; j++){
  13.        ID('inicio').innerHTML+="<input type='text' name='coordx[]' id='cx"+n+"' size='10' class='input' /><br />";
  14.        ID('final').innerHTML+="<input type='text' name='coordy[]' id='cy"+n+"' size='10' class='input' /><br />";
  15.        n++;
  16.       }
  17.      }
  18.      break;
  19.   }
  20.   l = ID('inicio').getElementsByTagName('input').length+1;
  21.  }
  22.  function addC(){
  23.   ID('inicio').innerHTML += "<input type='text' name='coordx[]' id='cx"+n+"' size='10' class='input' /><br />";
  24.   ID('final').innerHTML += "<input type='text' name='coordy[]' id='cy"+n+"' size='10' class='input' /><br />"
  25.   n++;
  26.  }
Código HTML:
Ver original
  1. <ul>
  2.  <li>
  3.  <select id='colonias' name='colonias' onchange="addI(this);">
  4.    <option value="0" selected="selected">0</option>
  5.    <option value="1">1</option>
  6.    <option value="2">2</option>
  7.    <option value="3">3</option>
  8.    <option value="4">4</option>
  9.    <option value="5">5</option>
  10.    <option value="6">6</option>
  11.    <option value="7">7</option>
  12.    <option value="+7">+7</option>
  13.  </select>
  14.  <br /><br />
  15.  </li>
  16.  <li>
  17.   <fieldset style='width:20%;' id='f'>
  18.    <legend>Coordenadas:</legend>
  19.    <br />
  20.    <span class="texto">&nbsp;X:</span>
  21.    <input type='text' id='cx0' name='coordx[]' size='15'/>
  22.    <span id='inicio'></span>
  23.    <br /><br /><br />
  24.    <span class="texto">&nbsp;Y:</span>
  25.    <input type='text' id='cy0' name='coordy[]' size='15' />
  26.    <br />
  27.    <span id='final'></span>
  28.    <br />
  29.   </fieldset>  
  30.  <input type="button" value="Agregar campo" id='btn' onclick="addC();if(ID('inicio').getElementsByTagName('input').length>6) ID('colonias').disabled=true;" />
  31.  </li>
  32. </ul>
Gracias y saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #2 (permalink)  
Antiguo 18/09/2010, 18:54
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

eso es normal cuando utilizas innerHTML. con dicha propiedad el navegador vuelve analizar el codigo tal como aprece en el codigo fuente. los datos introducido no son parte del codigo. para evitar eso tienes que usar funciones del DOM para crear y agregar los elementos. yo tu le doy otro enfoque. en lugar de un utilizar un select para indicar la cantidad de campos, simplemente tendria un boton que agrega los campos y al lado de cada campo la opcion de eliminarlo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 18/09/2010, 19:09
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Validación formulario

Creo que en la funcion deberias primero recorrer los elementos que ya hayas creados y almacenar el valor de estos... para luegos asignarlos a los que vuelves a crear.

Espero te sirva la idea...

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 18/09/2010, 19:13
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

Ok, ya probé usando appendChild, pero tenía que definir todas las propiedades del input. Por otro lado, lo del select lo hago porque después el formulario lo enviaré a mi correo con PHP, y entonces era para tener una visión a simple vista de cuantos campos había, pero no es imprescindible.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 18/09/2010, 19:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

para ese fin pudieras tener un campo hidden donde la funcion de agregar/eliminar campos escribe la cantidad de campos presentes.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 18/09/2010, 19:18
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

Cierto, entonces lo haré como tú dices. Voy a ver cómo empezar porque lo del DOM no lo domino xD
Muchas gracias (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 18/09/2010, 19:53
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

revisa el tema capturar onclick distintos objetos, no va responder especificamente tu problema pero te debe servir de idea al menos para una de las partes que requieres.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 18/09/2010, 21:29
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

Cita:
Iniciado por _cronos2 Ver Mensaje
Cierto, entonces lo haré como tú dices. Voy a ver cómo empezar porque lo del DOM no lo domino xD
Muchas gracias (:
pensandolo bien, seria mas conveniente que manejes ese aspecto desde el lado servidor, a no ser que no lo consideres algo tan importante. me refiero, el valor del campo hidden se puede modificar antes de ser enviado. es cuestion desde el servidor obtengas la longitud de uno de los arrays de coordenadas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 19/09/2010, 13:56
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

Vale, solucioné lo del select y lo hice como tú decías, pero ahora me surge un problema. Cuando hago click en el botón Agregar campo, se crean 2, uno para las coordenadas x y otro para las y. Pero si hago click en Eliminar campo, sólo se elimina el campo que está al lado del botón. Con el código creo que se verá mejor:
Código Javascript:
Ver original
  1. // Agregar campos
  2. var n=1;
  3. function ID(id){
  4.  return document.getElementById(id);
  5. }
  6. function sAt(elemento, atributo, valor){
  7.  elemento.setAttribute(atributo, valor);
  8. }
  9. function addI(e,f){
  10.  var c=document.createElement(e),i=document.createElement(e),b=document.createElement(e),a=document.createElement(e),l=document.createElement(f),s=document.createElement(f);
  11.  sAt(c,'type','text');
  12.  sAt(i,'type','text');
  13.  sAt(c,'name','coordx[]');
  14.  sAt(i,'name','coordy[]');
  15.  sAt(c,'id','cx'+n);
  16.  sAt(i,'id','cy'+n);
  17.  sAt(c,'size','10');
  18.  sAt(i,'size','10');
  19.  sAt(c,'class','input');
  20.  sAt(i,'class','input');
  21.  sAt(a,'type','button');
  22.  sAt(b,'type','button');
  23.  sAt(a,'onclick',"removeI(this,valor(this));");
  24.  sAt(b,'onclick',"removeI(this,valor(this));");
  25.  sAt(a,'value','Eliminar campo');
  26.  sAt(b,'value','Eliminar campo');
  27.  ID('inicio').appendChild(c);
  28.  ID('inicio').appendChild(a);
  29.  ID('inicio').appendChild(l);
  30.  ID('final').appendChild(i);
  31.  ID('final').appendChild(b);
  32.  ID('final').appendChild(s);
  33.  n++;
  34. }
  35. function removeI(c,id){
  36.  c.parentNode.removeChild(c.previousSibling);
  37.  c.parentNode.removeChild(c);
  38.  c.parentNode.removeChild(c.nextSibling);
  39.  ID(id).parentNode.removeChild(ID(id).previousSibling);
  40.  ID(id).parentNode.removeChild(ID(id));
  41.  ID(id).parentNode.removeChild(ID(id).nextSibling);
  42.  n--;
  43. }
  44. function valor(c){
  45.  var s=c.id.substring(1,2);
  46.  var d='c'+(s=='x')?'y':'x'+n;
  47.  return d;
  48. }
Código HTML:
Ver original
  1. <fieldset style='width:20%;' id='f'>
  2.  <legend>Coordenadas:</legend>
  3.  <br />
  4.  <span class="texto">&nbsp;X:</span>
  5.  <input type='text' id='cx0' name='coordx[]' size='15'/>
  6.  <span id='inicio'></span>
  7.  <br /><br /><br />
  8.  <span class="texto">&nbsp;Y:</span>
  9.  <input type='text' id='cy0' name='coordy[]' size='15' />
  10.  <br />
  11.  <span id='final'></span>
  12.  <br />
  13. </fieldset>  
  14. <input type="button" value="Agregar campo" id='btn' onclick="addI();" />
He probado usando una función (valor) que devoviera el id del campo, pero no me funciona. También me gustaría saber cómo hacer para que a la función sAt() no tuviera que pasarle el elemento como argumento, sino hacer elemento.sAt(atributo,valor).
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 19/09/2010, 16:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

opino que te estas complicando mucho. esto es lo que yo haria. en el html, pondria cada par de campos dentro de listas <li> juntamente con el boton de eliminar. luego, cuando el documento termine de cargar, creas un clon de esa lista. en la funcion de agregar, creas un clon del clon. de esta forma no tienes que crear cada elemento y atributo, solo te ocupas de agregar ese segundo clon al listado. para la funcion de remover, es cuestion de subir por los elementos acestrales hasta el contenedor de las listas y eliminar la lista correspondiende. asi no tienes dos botones para cada campo el cual puede resultar en un numero de campos imparejos.

alguna de las funciones que necesitaras: cloneNode(), parentNode, removeChild(), appendChild().

Cita:
También me gustaría saber cómo hacer para que a la función sAt() no tuviera que pasarle el elemento como argumento, sino hacer elemento.sAt(atributo,valor).
aunque ya te expuse una mejor solucion igual lo mencionare por si te sirve en un futuro. una forma, el cual no se cuan recomendable es porque creo que no funciona en todos los navegadores, consiste en implementar la funcion en los modulos que define el DOM. resulta que el DOM -reitero que puede no funcionar en algunos navegadores- crea una serie de objetos/funciones/wrapper del cual derivan algunas funciones y propiedades de elementos. por ejemplo, document.body representa un objeto HTMLBodyElement en lugar de un simple objeto javascript y el constructor de este objeto lleva el mismo nombre. entonces, desde ese constructor podemos definir funciones y propiedades en el objeto prototype.
Código:
HTMLBodyElement.prototype.toogle=function(){this.style.display=(this.style.display)?'':'none';}
document.body.toogle();
si tienes duda del constructor de un elemento, es cuestion de obtener la referencia del elemento en cuestion -o crearlo- y luego leer la propiedad constructor.
Código:
document.createElement('div').constructor;
otro factor a tener en cuenta es que hay otros constructores genericos, por ejemplo Node representa todo los nodos de un documento, sin importar del tipo. Element representa todos los elementos de un documento html o xml y hereda las caracterisitcas de Node. HTMLElement representa todo los elementos HTML y hereda de Element y a su vez de Node. el punto es que dependiendo del alcance que necesites, algunos constructores genericos serian mas conveniente.

otro modo de lograr esta caracteristica seria hacer lo mismo que hace jquery. la funcion $ devuelve un objeto que contiene funciones para operar con el elemento.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #11 (permalink)  
Antiguo 19/09/2010, 17:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Validación formulario

Hola:

Para añadir campos dinámicamente, siempre clono alguno oculto, puedes ver el código de alguna de mis páginas: Caricaturas de grupos a color en acuarelas

Creo que es el concepto que tiene ZK

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #12 (permalink)  
Antiguo 20/09/2010, 15:58
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

Bueno creo que al final lo solucioné, posteo el código por si a alguien le pudiera servir y por si hay alguna crítica:
Código HTML:
Ver original
  1.  <legend>Coordenadas:</legend>
  2.  <br />
  3.  <div id='l'>
  4.   <span class="texto">&nbsp;X:</span>
  5.   <input type='text' id='cx0' name='coordx[]' size='10' />
  6.   <span class="texto">&nbsp;Y:</span>
  7.   <input name="coordy[]" type="text" id="cy0" size="10" />
  8.   <br />
  9.  </div>
  10. </fieldset>  
  11. <input type="button" value="Agregar campo" id='btn' onclick="addI(ID('l'),'input','br');" />
Código Javascript:
Ver original
  1. var n=1;
  2. function ID(id){
  3.  return document.getElementById(id);
  4. }
  5. function sAt(elemento,atributo,valor){
  6.  elemento.setAttribute(atributo,valor);
  7. }
  8. function addI(d,e,f){
  9.  var c=document.createElement(e),i=document.createElement(e),b=document.createElement(e),s=document.createElement(f);
  10.  sAt(c,'type','text');
  11.  sAt(i,'type','text');
  12.  sAt(c,'name','coordx[]');
  13.  sAt(i,'name','coordy[]');
  14.  sAt(c,'id','cx'+n);
  15.  sAt(i,'id','cy'+n);
  16.  sAt(c,'size','10');
  17.  sAt(i,'size','10');
  18.  sAt(c,'class','input');
  19.  sAt(i,'class','inputy');
  20.  sAt(b,'type','button');
  21.  sAt(b,'onclick',"removeI(this);");
  22.  sAt(b,'value','Eliminar campos');
  23.  sAt(b,'class','button');
  24.  d.appendChild(c);
  25.  d.appendChild(i);
  26.  d.appendChild(b);
  27.  d.appendChild(s);
  28.  n++;
  29. }
  30. function removeI(c){
  31.  c.parentNode.removeChild(c.previousSibling.previousSibling);
  32.  c.parentNode.removeChild(c.previousSibling);
  33.  c.parentNode.removeChild(c.nextSibling);
  34.  c.parentNode.removeChild(c);
  35. }
Código CSS:
Ver original
  1. .texto {font:100&#37; "Colonna MT"; color:#FFF;}
  2. .input {margin:1.5% 4% 1.5%;}
  3. .inputy {margin:1.5% 1.75% 1.5%;}
  4. .button {margin:1.5% 1.4% 1.5%; margin-right:0;}
  5. li {list-style-type:none;}
  6. #l {position:relative; width:120%; height:100%;}
  7. fieldset {width:32%; height:auto;}
No lo hice con cloneNode() porque no entendí muy bien lo de los hidden, y tampoco entendí lo del DOM de @zerokilled, si me lo pudiérais explicar (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #13 (permalink)  
Antiguo 20/09/2010, 16:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

otro ejemplo utilizando cloneNode y el objeto event para determinar que el evento haya ocurrido en el elemento correcto.
Código:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Test Development</title>
<script type='text/javascript'>
self.onload = function(){
var list = document.getElementById("coords"), clone = list.firstChild.cloneNode(true);
document.getElementById('btn').onclick = function(){
list.appendChild(clone.cloneNode(true));
};

list.onclick = function(_evt){
var evt = _evt || event, elem = evt.target || evt.srcElement;
if(/input/i.test(elem.nodeName) && /button/i.test(elem.type))list.removeChild(elem.parentNode);
};
}; //onload;
</script>
<style type='text/css'>
fieldset{
width:24em;
}

li input[type="text"]{
width:6em;
margin-right:2em;
}
</style>
</head>

<body>
<fieldset><legend>Coordenadas:</legend>
<ol id="coords"><li>X: <input type='text' name='coordx[]' /> Y: <input name="coordy[]" type="text" /> <input type="button" value="x" /></li>
</ol></fieldset>  
<input type="button" value="Agregar campo" id='btn' />
</body></html>
critica del codigo... no le veo sentido a la funcion setA. practicamente estas haciendo lo mismo que invocar la funcion setAttribute. pero como te decia, con cloneNode no necesitas asignar los atributos que comparten el mismo valor como name.

@edit: en el ejemplo no aparece el campo hidden que te sugeri antes... pues como te comentaba, es mejor que obtengas la longitud del array desde lenguaje servidor, asi obtienes control de ese dato en lugar de indicarlo desde javascript y correr el riesgo de que introduzcan otra informacion antes de enviarse.
Código PHP:
$registros count($_REQUEST['coordx']); 
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 20/09/2010 a las 19:19
  #14 (permalink)  
Antiguo 21/09/2010, 08:24
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

Ya pero si uso cloneNode(), ¿cómo valido? Podría hacer getElementsByTagName pero con id creo que es más sencillo. Y lo de sAt() es simplemente para no tener que escribir setAttribute 40 veces, aunque al final acabé copiando y pegando sAt xD Por otro lado, ahora que la parte del JS ya está, me imagino que tendré que ir al foro de PHP, pero me gustaría tener algo de información sobre cómo recoger los valores de coordx[] y coordy[].
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #15 (permalink)  
Antiguo 21/09/2010, 09:55
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Validación formulario

puedes usar document.getElementsByName -fijate que no dice ByTagName- indicando como parametro el nombre del campo. este te devuelve una coleccion y lo recorres con un bucle.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #16 (permalink)  
Antiguo 21/09/2010, 12:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Validación formulario

Hola

Por fin puedo meter baza. Para recoger los campos usa
Cita:
$valores = array($_POST["nombrecampo"]); // Matriz con todos los valores de los campos con ese nombre
Pero antes puede probar esto otro. Intenta se una adaptación de ASP
Cita:
$valores = array($_POST);
print_r($valores);
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #17 (permalink)  
Antiguo 21/09/2010, 13:23
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

Jajajaja, ya me extrañaba que no hubieras posteado
Me imagino que print_r() será como una especie de echo, ¿no? Pero entonces, ¿qué diferencia hay entre uno y otro?
Por cierto, tu firma mola ;)
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #18 (permalink)  
Antiguo 21/09/2010, 13:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Validación formulario

Hola

print_r es para imprimir los valores de un array, con echo no se puede. De cualquier modo olvida eso último, lo he probado y marca error. Tendrás que hacerlo usando la primera manera. Ten en cuenta que se generará un array bidimensional, por lo tanto creo que no podrás usar la función array_merge() para unir los 3 arrays. Así que la manera mas sencilla sería darle el mismo nombre a todos los campos campos[]. Una vez recogidos todos los campos solamente hay que ordenarlos para que casen y sea sencilla la inserción en bd, es lo que finalmente vas a hacer. El ordenamiento lo haces creando 3 array y llenandolos con la función array_push().
Si no lo entiendes dimelo y intento montarte un ejemplo

Suerte

<offtopic>Es ya cansado ver una y otra vez que intentan enviar formularios con enlaces</offtopic>
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #19 (permalink)  
Antiguo 21/09/2010, 14:19
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validación formulario

No, el propósito del formulario es enviarlo como un e-mail. Además, no puedo unirlo todo en un array, porque uno son las coordenadas X (abscisas) e Y (ordenadas). Luego, lo de array_merge() y array_push() no lo entendí, si pudieras explicármelo o darme algún enlace donde lo explique, lo que menos te cueste.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #20 (permalink)  
Antiguo 21/09/2010, 14:40
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Validación formulario

Hola

Mejor que eso, te he montado un ejemplo
Código HTML:
Ver original
  1. </head>
  2. <form action="pagina.php" method="post">
  3. <table border="1px">
  4. <tr>
  5. <td>Noticia</td>
  6. <td>Mes</td>
  7. <td>Fecha / Hora</td>
  8. <td>Actualizada (Fecha /Hora)</td>
  9. <tr></tr>
  10. <td><textarea id="txtarea1" name="cam_form[]" tabindex="1"></textarea></td>
  11. <td><input type="text" id="txt1" name="cam_form[]" value="" tabindex="2" /></td>
  12. <td><input type="text" id="txt11" name="cam_form[]" value="" tabindex="3" /></td>
  13. <td><input type="text" id="txt111" name="cam_form[]" value="" tabindex="4" /></td>
  14. <tr></tr>
  15. <td><textarea id="txtarea2" name="cam_form[]" tabindex="5"></textarea></td>
  16. <td><input type="text" id="txt2" name="cam_form[]" value="" tabindex="6" /></td>
  17. <td><input type="text" id="txt22" name="cam_form[]" value="" tabindex="7" /></td>
  18. <td><input type="text" id="txt222" name="cam_form[]" value="" tabindex="8" /></td>
  19. <tr></tr>
  20. <td><textarea id="txtarea3" name="cam_form[]" tabindex="9"></textarea></td>
  21. <td><input type="text" id="txt3" name="cam_form[]" value="" tabindex="10" /></td>
  22. <td><input type="text" id="txt33" name="cam_form[]" value="" tabindex="11" /></td>
  23. <td><input type="text" id="txt333" name="cam_form[]" value="" tabindex="12" /></td>
  24. <tr></tr>
  25. <td><textarea id="txtarea4" name="cam_form[]" tabindex="13"></textarea></td>
  26. <td><input type="text" id="txt4" name="cam_form[]" value="" tabindex="14" /></td>
  27. <td><input type="text" id="txt44" name="cam_form[]" value="" tabindex="15" /></td>
  28. <td><input type="text" id="txt444" name="cam_form[]" value="" tabindex="16" /></td>
  29. <tr></tr>
  30. <td colspan="4">
  31. <input type="submit"  value="Enviar" />
  32. </td>
  33. <tr>
  34. </form>
  35. </body>
  36. </html>
pagina.php
Código PHP:
Ver original
  1. <?php
  2. $valores = array($_POST["cam_form"]);
  3.  
  4.  
  5. $Arr2 = array();
  6. $Arr3 = array();
  7. $Arr4 = array();
  8. $Arr5 = array();
  9.  
  10. $j = 0;
  11. for($i = 0; $i < sizeof($valores[0]); $i+=4) {
  12. if ($valores[0][$i] != "") {
  13. array_push($Arr2, $valores[0][$i]);
  14. $j += 1;
  15. }
  16. }
  17.  
  18.  
  19. for($i = 1; $i < sizeof($valores[0]); $i+=4) {
  20. if ($valores[0][$i] != "") {
  21. array_push($Arr3, $valores[0][$i]);
  22. }
  23. }
  24.  
  25.  
  26. for($i = 2; $i < sizeof($valores[0]); $i+=4) {
  27. if ($valores[0][$i] != "") {
  28. array_push($Arr4, $valores[0][$i]);
  29. }
  30. }
  31.  
  32.  
  33. for($i = 3; $i < sizeof($valores[0]); $i+=4) {
  34. if ($valores[0][$i] != "") {
  35. array_push($Arr5, $valores[0][$i]);
  36. }
  37. }
  38.  
  39.  
  40. for($i = 0; $i < $j; $i++) {
  41. echo $Arr2[$i].  ",";
  42. echo $Arr3[$i].  ",";
  43. echo $Arr4[$i].  ",";
  44. echo $Arr2[$i].  "<br />";
  45. }
  46. ?>
Fíjate que se muestran todos los valores ordenados

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: formulario, validar
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 14:57.