Programación Web y Scripting > PHP
Problema Con Matriz Html Con Php Y Javascript
cluster:
hola compañeros de solocodigo tengo un problemita con un codigo, el problema es que defino varias listas desplegables en html con el mismo nombre para que se forme un matriz de esta forma:
<select size="1" name="qu[]">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<select size="1" name="qu[]">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
varias veces son 26 listas desplegables que se forman en un matriz qu[] le añado los corchetes [] para que al enviarlo al que procesa los datos en php los pueda interpretar el problema es cuando valido en la pagina atraves de javascritp de esta forma:
function validar(formulario) {
for (n=0;n<=26;n++){
if ( formulario.qu[n].value <1 || formulario.qu[n].value > 5) {
alert("seleccione en la pregunta " + (n+1) + " un valor");
formulario.qu[n].focus();
return (false);
}}
}
no me hace nada pero si le quito los corchetes [] en la declaracion html si me trabaja bien el javascript pero cuando lo envio a php me presenta dificultades.
si algien sabe de que forma hay que declara la matriz para que funcione tanto en php y javascript se lo agradeceria.
by3.
-DriverOp-:
Ponle id a cada select y usa ese id en la función JavaScript tomado una referencia con getElementById();
F_Tanori:
puedes usarlo asi por ejemplo:
--- Código: Text ---<form onSubmit='return validar(this)'><select size="1" name="qu[]"><option></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select> <select size="1" name="qu[]"><option></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select> <input type='submit'></form> <script> function validar() { qu=document.getElementsByName('qu[]'); for (n=0;n<qu.length;n++) { if ( qu[n].selectedIndex==0) { alert("seleccione en la pregunta " + (n+1) + " un valor"); qu[n].focus(); return false; } } return true; }</script>
y en php lo tomas asi
Segun el metodo de envio del form...
Get
--- Código: Text ---$Listas=$_GET['qu'];
Post
--- Código: Text ---$Listas=$_POST['qu'];
y te devolveria el arreglo con cada valor seleccionado en cada lista
Concidera usarlo por id como te recomienda -DriverOp- pues es el estandar me parece que la propiedad name quedara en desuso .... (no estoy del todo seguro si encuentro la pagina donde lei eso la coloco :P)
Saludos Espero te sirva
cluster:
gracias F_Tanori y -DriverOp- por responder coloque como me lo indicaste el qu=document.getElementsByName('qu[]'); y me funciono bien, en php capturo con
$params = data_submitted(); y $params->qu[0] el data_submitted es una funcion de moodle.
lo que comenta DriverOp sobre ponerle id a cada select como seria en html?
queria preguntarles si han modificado codigo de moodle, es que esto realizando un block y seria de gran ayuda saber si estoy realizando las cosas bien con todo el cuento de la seguridad.
gracias.
F_Tanori:
--- Cita de: "cluster" ---gracias F_Tanori y -DriverOp- por responder coloque como me lo indicaste el qu=document.getElementsByName('qu[]'); y me funciono bien, en php capturo con
$params = data_submitted(); y $params->qu[0] el data_submitted es una funcion de moodle.
lo que comenta DriverOp sobre ponerle id a cada select como seria en html?
queria preguntarles si han modificado codigo de moodle, es que esto realizando un block y seria de gran ayuda saber si estoy realizando las cosas bien con todo el cuento de la seguridad.
gracias.
--- Fin de la cita ---
a mi nunca me ha tocado modificar moodle incluso se de su existencia ahora que lo mencionas (lo vi otras veces pero no supe que era :P hasta ahora)
Para agregar un id lo haces igual que name
--- Código: Text ---<select size="1" id="lista0"><option></option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select>
y lo tomas con getElementById("lista0") la diferencia con getElementsName es que el id es unico y no puedes crear un arreglo con ids como lo haces ahora con name pero puedes nombrarlos concecutivos aqui una idea
--- Código: Text --- for ...qu=document.getElementById("lista"+n)...
Saludos
Navegación
[#] Página Siguiente
Ir a la versión completa