Foros del Web » Programando para Internet » PHP »

Varios formularios en la misma pagina

Estas en el tema de Varios formularios en la misma pagina en el foro de PHP en Foros del Web. Hola, Tengo el siguiente código en el que selecciono un ítem de una lista para luego modificarlo. Con el primer formulario selecciono el ítem de ...
  #1 (permalink)  
Antiguo 06/12/2010, 16:20
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Varios formularios en la misma pagina

Hola,

Tengo el siguiente código en el que selecciono un ítem de una lista para luego modificarlo. Con el primer formulario selecciono el ítem de la lista, y en el segundo escribo la nueva descripción del ítem. Me falta actualizar el ítem en la base de datos con esa nueva descripción pero no soy capaz.
Lo intenté pero no actualiza y vuelve al primer "if".
Este es el código, sin la línea de actualizar:

Código PHP:
include ("conexion.php");

  
$valor $_GET['accion'];
  
  if(
$valor==''){
  
    echo 
'<form method="get" action="admin_modificar_item.php">';
    
$query mysql_query("SELECT * FROM item");
    if (
mysql_num_rows($query)==0){ 
            echo 
"No hay elementos.";
            }
            else{
            
                if (
$row mysql_fetch_array($query)){ 
                echo 
'<select name= "comboitems">';
                do { 
                   echo 
'<option value= "'.$row["descripcion_item"].'">'.$row["descripcion_item"].'</option>';
                } while (
$row mysql_fetch_array($query)); 
                echo 
'</select>';
                }
        }
    echo 
'<p>
        <input type="submit" name="accion" value="Modificar" />
        <input type="submit" name="accion" value="Cancelar" />
        </p>'
;
    echo 
'</FORM>';
    
  
    
 }
//fin if
 
else if($valor=='Modificar'){
 
 
$item $_GET['comboitems'];
 
$descripcion $_GET['descripcionitem'];
 
    
 
$idmetodo mysql_query("SELECT iditem FROM item WHERE descripcion_item='$item' ") or die(mysql_error());
 
       while(
$row mysql_fetch_array($idmetodo))  
    {  
    
$numeroitem$row['iditem']; 
    
    }
    
     echo 
'<FORM action="admin_modificar_item.php" method="get">';
    echo 
"<br>";
    echo 
"<b>Descripción:  </b>".$item."<br>";
    echo 
"<b>Nueva descripción:  </b><input name='nuevadescripcion' type='text' size='40' /><br>";
    echo 
"<br>";
    echo 
'<input type="submit" name="accion2" value="Actualizar" />';
    echo 
'<input type="submit" name="accion2" value="Cancelar" />';
    echo 
'</FORM>';
 
    
                        
 }
//fin if modificar 
  #2 (permalink)  
Antiguo 06/12/2010, 16:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios formularios en la misma pagina

bueno, es porque cambias el name de tu otro formulario... simplemente inicialmente lo recibes como accion, y en el segundo formulario usas accion2 de modo que claramente no te funciona por eso...

intenta usar hidden pasando la acción correcta, sería lo ideal!!
Código HTML:
<input type="hidden" name="accion" value="editar,actualizar,etc"/> 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/12/2010, 07:42
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Varios formularios en la misma pagina

Hola, he probado tu sugerencia pero no me funciona. Cuando pasa al segundo formulario no tengo ningún botón para ejecutar la actualización.

Este es el código actualizado, he incluído la sentencia que actualiza, pero no modifica nada en la base de datos.

El accion2 lo puse para que entre en el if que tiene dentro la sentencia mysql, si no saldría del "else if($valor=='Modificar')"


Código PHP:
include ("conexion.php");

  
$valor $_GET['accion'];
  
  if(
$valor==''){
  
    echo 
'<form method="get" action="admin_modificar_item.php">';
    
$query mysql_query("SELECT * FROM item");
    if (
mysql_num_rows($query)==0){ 
            echo 
"No hay elementos.";
            }
            else{
            
                if (
$row mysql_fetch_array($query)){ 
                echo 
'<select name= "comboitems">';
                do { 
                   echo 
'<option value= "'.$row["descripcion_item"].'">'.$row["descripcion_item"].'</option>';
                } while (
$row mysql_fetch_array($query)); 
                echo 
'</select>';
                }
        }
    echo 
'<p>
        <input type="submit" name="accion" value="Modificar" />
        <input type="submit" name="accion" value="Cancelar" />
        </p>'
;
    echo 
'</FORM>';
    
  
    
 }
//fin if
 
else if($valor=='Modificar'){
 
 
$item $_GET['comboitems'];
 
$descripcion $_GET['descripcionitem'];
 
    
 
$idmetodo mysql_query("SELECT iditem FROM item WHERE descripcion_item='$item' ") or die(mysql_error());
 
       while(
$row mysql_fetch_array($idmetodo))  
    {  
    
$numeroitem$row['iditem']; 
    
    }
    
     echo 
'<FORM action="admin_modificar_item.php" method="get">';
    echo 
"<br>";
    echo 
"<b>Descripción:  </b>".$item."<br>";
    echo 
"<b>Nueva descripción:  </b><input name='nuevadescripcion' type='text' size='40' /><br>";
    echo 
"<br>";
    echo 
'<input type="submit" name="accion2" value="Actualizar" />';
    echo 
'<input type="submit" name="accion2" value="Cancelar" />';
    echo 
'</FORM>';
 
     
$valor=$_GET['accion2'];
    
    if(
$valor=='Actualizar'){
    
mysql_query("UPDATE item SET iditem='$numeroitem', descripcion_item='$nuevades', idmetodo='$idmetodo'",$conexion) or die(mysql_error());
    }
                                

 }
//fin if modificar 

Resumiendo lo que intento hacer: me aparece un combobox lleno de items, selecciono el que quiero modificar, pulso "Modificar" y me lleva a otro formulario, dentro de la misma página, donde hay un cuadro de texto para escribir la nueva descripción del item seleccionado, pulso "Actualizar" y me debería actualizar ese item en la base de datos.
  #4 (permalink)  
Antiguo 07/12/2010, 11:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios formularios en la misma pagina

lo que no entiendes es que jamás va a entrar a tu segundo if() si la comparación la sigues haciendo exactamente igual...

¿y como es eso de que en tu segundo formulario no tienes botones para ejecutar la actualización?

¡¡si yo veo dos botones!!

mira, este es un ejemplo corto de una solución mas práctica:

Código PHP:
if ( ! empty($_POST['form2_save']))
{
  
// submit del segundo formulario, fin
}
elseif ( ! empty(
$_POST['form1_save']))
{
  
// submit primer formulario, mostramos el segundo
  
echo '<input name="form2_save"/>';
}
else
{
  
// mostramos el primer formulario
  
echo '<input name="form1_save"/>';

también el orden de ejecución es importante, la idea es descartar los último pasos primero... pues por lógica se ejecutan al revés, pero si no lo haces así jamás entraría a las comparaciones...

otro detalle sería usar los name de forma mas inteligente, porque si a varios <input/> los nombras distinto, y la comparación es la misma siempre...

¿cuando funcionaría?

o también pudiste hacerlo así:
Código PHP:
if ($valor == 'Actualizar'// ..
elseif ($valor == 'Modificar'// ..
else // ... 
si lo piensas, debías comparar el último valor que podrías recibir primero... (:

claro que para que funcione los <input/> deben tener el mismo name para que $valor siempre venga de los mismos submit!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/12/2010, 13:10
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Varios formularios en la misma pagina

Estoy modificandolo como me has dicho, de esta forma:

Código PHP:
if ($valor == 'Actualizar'// ..
elseif ($valor == 'Modificar'// ..
else // ... 
Pero tengo un problema... Dentro de elseif ($valor == 'Modificar') obtengo el valor de "idmetodo", y necesito ese valor dentro de if ($valor == 'Actualizar'), pero cuando entra en el if de actualizar, no sabe cuál es el valor de idmetodo, puesto que está dentro del if modificar, y el valor de esta variable la obtengo del formulario que hay en if modificar.
  #6 (permalink)  
Antiguo 07/12/2010, 13:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios formularios en la misma pagina

pero $idmetodo no lo usas en Modificar, ¿porque lo defines ahí?

¿no te suena mas lógica declarar $idmetodo en el if() donde si lo usarás?
Código PHP:
if ($valor == 'Modificar'// ...
elseif ($valor == 'Actualizar')
{
  
// $idmetodo = ...
}
else
{
  
// ...

además también puedes pasar los valores que necesites por hidden, yo no veo el inconveniente...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/12/2010, 13:35
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Varios formularios en la misma pagina

Este es el código modificado:

Código PHP:
$valor $_GET['accion'];

if(
$valor=='Modificar'){
 
 
$item $_GET['comboitems'];
 
$descripcion $_GET['descripcionitem'];

     echo 
'<FORM action="admin_modificar_item.php" method="get">';
    echo 
"<br>";
    echo 
"<b>Descripción:  </b>".$item."<br>";
    echo 
"<b>Nueva descripción:  </b><input name='nuevadescripcion' type='text' size='40' /><br>";
    echo 
"<br>";
    echo 
"<input type=\"submit\" name=\"accion\" value=\"Actualizar\" />";
    echo  
"<input type=\"button\" name=\"Cancelar\" value=\"Cancelar\" onClick=\"location.href='admin_opciones.php'\" />";
    echo 
'</FORM>';
                 

 }
//fin if modificar    
 
else if($valor=='Actualizar'){
  
 
$idmetodo mysql_query("SELECT iditem, idmetodo FROM item WHERE descripcion_item='$item' ") or die(mysql_error());

       while(
$row mysql_fetch_array($idmetodo))  
    {  
    
$numitem=$row['iditem']; 
    
$nummetodo$row['idmetodo']; 
    }

    
//mysql_query("UPDATE item SET descripcion_item='$nuevades', idmetodo='$idmetodo' WHERE iditem='$numitem'",$conexion) or die(mysql_error());
    
}//fin if actualizar
else{


    echo 
'<form method="get" action="admin_modificar_item.php">';
    
$query mysql_query("SELECT * FROM item");
    if (
mysql_num_rows($query)==0){ 
            echo 
"No hay elementos.";
            }
            else{
            
                if (
$row mysql_fetch_array($query)){ 
                echo 
'<select name= "comboitems">';
                do { 
                   echo 
'<option value= "'.$row["descripcion_item"].'">'.$row["descripcion_item"].'</option>';
                } while (
$row mysql_fetch_array($query)); 
                echo 
'</select>';
                }
        }
    echo 
"<p>";
    echo 
"<input type=\"submit\" name=\"accion\" value=\"Modificar\" />";
    echo  
"<input type=\"button\" name=\"Cancelar\" value=\"Cancelar\" onClick=\"location.href='admin_opciones.php'\" />";
    echo 
"</p>";
    echo 
'</FORM>';



He probado a imprimir por pantalla los valores de $numitem y $nummetodo tras salir del while pero no muestra nada.
  #8 (permalink)  
Antiguo 07/12/2010, 13:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios formularios en la misma pagina

lo que sucede es que no estas recuperando $item dentro del if() de Actualizar, y lo usas para la consulta...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 07/12/2010, 13:49
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Varios formularios en la misma pagina

cómo puedo recuperarlo?
  #10 (permalink)  
Antiguo 07/12/2010, 13:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios formularios en la misma pagina

Cita:
Iniciado por Tram Ver Mensaje
cómo puedo recuperarlo?
¡¡pues de la misma forma que lo recuperas en el if() de Modificar!!

pero si no lo pasas de alguna forma jamás lo vas a conseguir, por eso debes usar hidden para pasar el valor de un formulario al otro...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 07/12/2010, 14:36
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Varios formularios en la misma pagina

He puesto esto dentro del if Modificar:

Código PHP:
echo "<input type=\"hidden\" name=\"item\" value=".$item.">"
Imprimo su valor y es correcto, muestra: "Proporciona prevención de errores".

En el if Actualizar he puesto:

Código PHP:
$valoritem $_GET['item']; 

Pero cuando muestro el valor de $valoritem por pantalla, me lo muestra cortado, es decir, en vez de mostrar "Proporciona prevención de errores", sólo muestra "Proporciona".
  #12 (permalink)  
Antiguo 07/12/2010, 14:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Varios formularios en la misma pagina

a ver, por pasos, primero aprende HTML... ¿te parece?

todos los valores deben ir encerrados en comillas dobles, y claramente no lo haces así...
Código PHP:
// MAL
echo "<input type=\"hidden\" name=\"item\" value=".$item.">";  

// BIEN
echo "<input type=\"hidden\" name=\"item\" value=\"".$item."\">"
te invito a leer lo siguiente:
http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 07/12/2010, 14:43
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Varios formularios en la misma pagina

Ok gracias, ahora ya funciona
  #14 (permalink)  
Antiguo 07/12/2010, 14:48
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Varios formularios en la misma pagina

Cita:
Iniciado por pateketrueke Ver Mensaje
a ver, por pasos, primero aprende HTML... ¿te parece?

todos los valores deben ir encerrados en comillas dobles, y claramente no lo haces así...
Código PHP:
// MAL
echo "<input type=\"hidden\" name=\"item\" value=".$item.">";  

// BIEN
echo "<input type=\"hidden\" name=\"item\" value=\"".$item."\">"
te invito a leer lo siguiente:
[url]http://www.forosdelweb.com/f18/como-usar-las-comillas-bien-588701/#post2414268[/url]
En intriga saber como es que la gente aprende a programar últimamente y más con que programa.
Me parece que la sigla IDE no existe todavía para muchos.
Sin contar que se lanzan a programar PHP+HTML+MYSQL todo junto, así es imposible que no te quede una ensalada.

Etiquetas: formulario
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 20:11.