Ver Mensaje Individual
  #7 (permalink)  
Antiguo 25/03/2010, 13:42
Avatar de bng5
bng5
 
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: Duda getElementById

Te hago un par de sugerencias, algunas pueden sonar triviales, vos ves que te sirve y que no.

Primero que nada tengo por norma nunca realizar peticiones que efectuen cambios en servidor vía GET, o sea efectuar altas, bajas y modificaciones siempre vía POST (y si es posible y según el caso también PUT). Si se trata de un resultado de búsqueda uso GET, ya que su finalidad es entregar datos al cliente e incluso lo puede guardar en un bookmark.

Yo fusionaría los 2 archivos php (eliminar.php y cambio.php) y mandaría todas las acciones al mismo y dentro del php discriminar de que acción se trata.

De esta manera tenés la funcionalidad sin javaScript (tiene dos submit):

Origen
Código HTML:
<form name="frm" action="php/cambio.php" method="post">
 <ul>
  <li>
   <label>Nueva Parcela:</label>
   <input type="text" size="3" maxlength="3"name="id" id="id" />
  </li>
  <li>
   <label>Nuevos m2:</label>
   <select size="1" name="m2">
    <option selected="selected" value="40">40</option>
    <option value="50">50</option>
    <option value="65">65</option>
    <option value="75">75</option>
   </select>
  </li>
  <li>
   <input name="modificar" type="submit" class="btn" value="Modificar" />
   <input name="eliminar" type="submit" class="btn" value="Eliminar" />
  </li>
 </ul>
</form> 
Destino
Código PHP:
<?php

if(isset($_POST['eliminar']))
 {
  
// uso el valor de $_POST['id'] para eliminar e ignoro todos los demás
 
}
elseif(isset(
$_POST['modificar']))
 {
  
// acá va el código para la modificación
 
}

?>
Hasta acá la parte funcional

------------------------------------------------------------------------------------------------------------------

Ahora entra javaScript.

Código HTML:
<form name="frm" action="php/cambio.php" method="post" onsubmit="return confirmacion(this)"> 
De esta manera podés usar la confirmación para ambas acciones

Código:
<script type="text/javascript">
/* <![CDATA[ */

function confirmacion(formulario) {

  // si acción es modificar pregunto si quiere modificar, de lo contrario pregunto si quiere borrar
  var textoConfirmacion = (accion == 'modificar') ? '¿Desea modificar...?' : '¿Desea eliminar...?';
  var confirmado = confirm(textoConfirmacion);
  if(confirmado) {
    // si el usuario confirma: le concateno a la ruta del action del formulario el parametro GET 'confirmado'
    formulario.action += '?confirmado=1';
  }
  return confirmado;
}

/* ]]> */
</script>

Creo la variable global 'accion' y le asigno el valor de name del botón seleccionado.
Código HTML:
 <input name="modificar" type="submit" class="btn" onclick="cambiarAccion(this)" value="Modificar" />
   <input name="eliminar" type="submit" class="btn" onclick="cambiarAccion(this)" value="Eliminar" /> 
Código:
<script type="text/javascript">
/* <![CDATA[ */

var accion;

function cambiarAccion(boton) {
  accion = boton.name;
}

/* ]]> */
</script>
Volviendo al PHP, si no se recibe el parámetro 'confirmado' es porque seguramente se hizo el submit sin javaScript y el usuario no vió la pregunta de confirmación.
(Ya se que es duplicar código)

Código PHP:
<?php

if(!isset($_GET['confirmado']))
 {
  
// muestro al usuario la confirmación, esta vez en HTML
 
}

?>

Como te decía: son sólo un par de sugerencias no muy desarrolladas.