Foros del Web » Programando para Internet » PHP »

Coger variable INPUT en PHP

Estas en el tema de Coger variable INPUT en PHP en el foro de PHP en Foros del Web. Hola chicos!! Tengo un problemilla.... estoy haciendo una tabla....que cuando le das al botón modificar en esa fila te saca todos los datos en varios ...
  #1 (permalink)  
Antiguo 12/12/2007, 04:25
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 6 meses
Puntos: 1
Pregunta Coger variable INPUT en PHP

Hola chicos!!

Tengo un problemilla.... estoy haciendo una tabla....que cuando le das al botón modificar en esa fila te saca todos los datos en varios inputs para que se puedan modificar, pues bien, el problema es que yo esa tabla la cargo con una BD y los valores que muestra en el input, son logicamente los de la base de datos....Cuando los modifico...no soy capaz de mandarle los datos correctos que vuelven a meter en el input, lo estoy intentnado con variables ocultas pero no soy capaz, alguien tiene alguna idea?

Esto es en la página de modificar.....

Código PHP:
$codigo $_POST['codigo_modificar'];
    
$link=mysql_connect("localhost","root","");
    
mysql_select_db("laboratorio",$link);    
    
$result mysql_query("SELECT * FROM componentes");    
    
    echo 
"<table border = '0' align='center' class='Estilo6'> \n";

    echo 
"<tr> \n";

    echo 
"<td><b>Esto es una prueba: </b></td> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";    
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"</table> \n";

    echo 
"<table border = '1' bordercolordark='#000066' align='center' class = 'Estilo5'> \n";

    echo 
"<tr> \n";

    echo 
"<td align= 'center'><b>Componente</b></td> \n";

    echo 
"<td align= 'center'><b>Descripcion</b></td> \n";
    
    echo 
"<td align= 'center'><b>Descripcion</b></td> \n";

    echo 
"<td align= 'center'><b>Comentario</b></td> \n";

    echo 
"<td align= 'center'><b>Unidades</b></td> \n";
    
    echo 
"<td colspan='2' align= 'center'> <b> Botones </b></td> \n";

    echo 
"</tr> \n";
    
    while (
$row mysql_fetch_row($result)){
        
        echo 
"<tr> \n";
        
        
        if (
$row[0] == $codigo) {
            echo 
"<td>$row[1]</td> \n";

        echo 
"<td><input type='text' value='$row[2]' id='desc1'/></td> \n";
        
        echo 
"<td><input type='text' value='$row[3]' id='desc2'/></td> \n";

        echo 
"<td><input type='text' value='$row[4]' id='desc3'/></td> \n";

        echo 
"<td><input type='text' value='$row[5]' id='desc4'/></td> \n";
        
        echo 
"<form name='form' action='eliminar.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_borrar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Eliminar' /></td> \n";  
        
        echo 
"</form> \n";
        echo 
"<form name='form' action='guardar.php' method='post'>\n";
        echo 
"<input type='hidden' name='descripcion_oculta' value=desc1.value>\n"
        echo 
"<input type='hidden' name='desc2' value='$row[3]'> \n"
        echo 
"<input type='hidden' name='desc3' value='$row[4]'> \n"
        echo 
"<input type='hidden' name='desc4' value='$row[5]'> \n"
        echo 
"<input type='hidden' name='codigo_modificar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Guardar' /></td> \n";  
        
        echo 
"</form> \n";
        exit;
        }else{
    
        echo 
"<td>$row[1]</td> \n";

        echo 
"<td>$row[2]</td> \n";
        
        echo 
"<td>$row[3]</td> \n";

        echo 
"<td>$row[4]</td> \n";

        echo 
"<td>$row[5]</td> \n";
        
        echo 
"<form name='form' action='eliminar.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_borrar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Eliminar' /></td> \n";  
        
        echo 
"</form> \n";
        
        echo 
"<form name='form' action='modificarComponente.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_modificar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Modificar' /></td> \n";  
        
        echo 
"</form> \n";
        
        echo 
"</tr> \n";
    }
    
}
    
    
?> 
y esto es la página que guarda.... pero en los valores que recoge no recoge los modificados.... ¿alguien sabe porq? jo q lio :(
Código PHP:
$codigo $_POST['codigo_modificar'];
    
$link=mysql_connect("localhost","root","");
    
mysql_select_db("laboratorio",$link);    
    
$result mysql_query("SELECT * FROM componentes");    
    
    echo 
"<table border = '0' align='center' class='Estilo6'> \n";

    echo 
"<tr> \n";

    echo 
"<td><b>Esto es una prueba: </b></td> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";    
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"<tr> \n";
    
    echo 
"</table> \n";

    echo 
"<table border = '1' bordercolordark='#000066' align='center' class = 'Estilo5'> \n";

    echo 
"<tr> \n";

    echo 
"<td align= 'center'><b>Componente</b></td> \n";

    echo 
"<td align= 'center'><b>Descripcion</b></td> \n";
    
    echo 
"<td align= 'center'><b>Descripcion</b></td> \n";

    echo 
"<td align= 'center'><b>Comentario</b></td> \n";

    echo 
"<td align= 'center'><b>Unidades</b></td> \n";
    
    echo 
"<td colspan='2' align= 'center'> <b> Botones </b></td> \n";

    echo 
"</tr> \n";
    
    while (
$row mysql_fetch_row($result)){
        
        echo 
"<tr> \n";
        
        
        if (
$row[0] == $codigo) {
            echo 
"<td>$row[1]</td> \n";

        echo 
"<td><input type='text' value='$row[2]' id='desc1'/></td> \n";
        
        echo 
"<td><input type='text' value='$row[3]' id='desc2'/></td> \n";

        echo 
"<td><input type='text' value='$row[4]' id='desc3'/></td> \n";

        echo 
"<td><input type='text' value='$row[5]' id='desc4'/></td> \n";
        
        echo 
"<form name='form' action='eliminar.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_borrar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Eliminar' /></td> \n";  
        
        echo 
"</form> \n";
        echo 
"<form name='form' action='guardar.php' method='post'>\n";
        echo 
"<input type='hidden' name='descripcion_oculta' value=desc1.value>\n"
        echo 
"<input type='hidden' name='desc2' value='$row[3]'> \n"
        echo 
"<input type='hidden' name='desc3' value='$row[4]'> \n"
        echo 
"<input type='hidden' name='desc4' value='$row[5]'> \n"
        echo 
"<input type='hidden' name='codigo_modificar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Guardar' /></td> \n";  
        
        echo 
"</form> \n";
        exit;
        }else{
    
        echo 
"<td>$row[1]</td> \n";

        echo 
"<td>$row[2]</td> \n";
        
        echo 
"<td>$row[3]</td> \n";

        echo 
"<td>$row[4]</td> \n";

        echo 
"<td>$row[5]</td> \n";
        
        echo 
"<form name='form' action='eliminar.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_borrar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Eliminar' /></td> \n";  
        
        echo 
"</form> \n";
        
        echo 
"<form name='form' action='modificarComponente.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_modificar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Modificar' /></td> \n";  
        
        echo 
"</form> \n";
        
        echo 
"</tr> \n";
    }
    
}
    
    
?> 
  #2 (permalink)  
Antiguo 12/12/2007, 04:52
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Coger variable INPUT en PHP

Ummm, vamos por partes.

Tienes una Base de Datos con una tabla con x registros.
Quieres que te muestre esos registros en una tabla HTML.
Junto a cada fila habrá un botón de modificar que te llevará a una página con un formulario donde cambiar esos datos

¿Voy bien?

Si es esto lo que quieres hacer, en éste segundo formulario no necesitarías tener todos los campos ocultos, tan sólo el ID.

El valor a modificar lo tienes que sacar de los campos de texto, que son los que el usuario modifica, es decir, cuando quieras hacer el update deberás acceder al $_POST['nombre_del_campo_de_texto']

En éste caso no necesitas los campos ocultos, ten en cuenta que tú quieres el valor que haya en el campo de texto, no en el oculto, por ello preguntas directamente por los campos de texto que te interesen.

Otra cosilla que no entiendo, ¿Por qué haces una consulta de todos los registros de la tabla? No sería más fácil buscar directamente el del ID que te interese? Es decir, en vez de esto:

Código PHP:
$result mysql_query("SELECT * FROM componentes"); 
Esto otro:

Código PHP:
$result mysql_query("SELECT * FROM componentes WHERE ID = ".$codigo);  // Donde ID es el nombre del campo... 
Con esto te ahorrarías el while y la comprobación de si el $row[0] es igual a $codigo
  #3 (permalink)  
Antiguo 12/12/2007, 05:02
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 6 meses
Puntos: 1
Pregunta Re: Coger variable INPUT en PHP

mmm hago la consulta al select porque necesito que se muestre toda la tabla igual, exactamente igual pero con esa variable modificada en la que haya inputs.... Y....si lo hago de la forma que me dices...con lo del POST no me recoge ningun valor... mira...

Esto me muestra la tabla, la va haciendo poco a poco y cuando llega al registro qu quiero modificar lo cambia y lo pone con inputs (me acabo de dar cuenta q no funciona bien del todo, pero weno)

Código PHP:
    while ($row mysql_fetch_row($result)){
        
        echo 
"<tr> \n";
        
        
        if (
$row[0] == $codigo) {
            echo 
"<td>$row[1]</td> \n";

        echo 
"<td><input type='text' value='$row[2]' id='desc1'/></td> \n";
        echo 
$variable1 'desc1.value';
        echo 
"<td><input type='text' value='$row[3]' id='desc2'/></td> \n";

        echo 
"<td><input type='text' value='$row[4]' id='desc3'/></td> \n";

        echo 
"<td><input type='text' value='$row[5]' id='desc4'/></td> \n";
        
        echo 
"<form name='form' action='eliminar.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_borrar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Eliminar' /></td> \n";  
        
        echo 
"</form> \n";
        echo 
"<form name='form' action='guardar.php' method='post'>\n";
    
        echo 
"<input type='hidden' name='codigo_modificar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Guardar' /></td> \n";  
        
        echo 
"</form> \n";
        exit;
        }else{
    
        echo 
"<td>$row[1]</td> \n";

        echo 
"<td>$row[2]</td> \n";
        
        echo 
"<td>$row[3]</td> \n";

        echo 
"<td>$row[4]</td> \n";

        echo 
"<td>$row[5]</td> \n";
        
        echo 
"<form name='form' action='eliminar.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_borrar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Eliminar' /></td> \n";  
        
        echo 
"</form> \n";
        
        echo 
"<form name='form' action='modificarComponente.php' method='post'>\n";
        
        echo 
"<input type='hidden' name='codigo_modificar' value='$row[0]'> \n"
            
        echo 
"<td><input type='submit' name='Submit' value='Modificar' /></td> \n";  
        
        echo 
"</form> \n";
        
        echo 
"</tr> \n";
    }
    

Ahora, una vez que doy al botón guardar, me voy a la página PHP de guardar.... que hace esto
Código PHP:
$nombre_material $_POST['campo1'];
    
$desc1$_POST['desc1'];
    
$desc2 $_POST['desc2'];
    
$comentario $_POST ['desc3'];
    
$unidades $_POST['desc4'];

    
$link=mysql_connect("localhost","root","");
    
mysql_select_db("laboratorio",$link);    
    
$modificar mysql_query ("UPDATE componentes SET Desc1= '$desc1'; Desc2='$desc2'; Comentario='$desc3'; Unidades ='$unidades'; where Codigo_componente='$codigo'");
    echo 
$nombre_material;
    echo 
$desc1;
    echo 
$desc2;
    echo 
$comentario;
    echo 
$unidades
Pero al hacer el echo de todas las variables....no me devuelve nada...no lo coge... :S xq pasa eso? jo :S
  #4 (permalink)  
Antiguo 12/12/2007, 05:06
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Coger variable INPUT en PHP

Cambia los id por name, es decir, en vez de esto:
id='desc1'
Pon esto:
name='desc1'
Y así con todos
  #5 (permalink)  
Antiguo 12/12/2007, 05:10
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 6 meses
Puntos: 1
Sonrisa Re: Coger variable INPUT en PHP

Vale....y me acabo de dar cuenta....que si lo meto en un formulario...casi mejor que mejor, no? jejejeje creo q ya va a ir... voy a intenarlo....gracias :) ahora te cuento si funciona o no :)
  #6 (permalink)  
Antiguo 12/12/2007, 05:13
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Coger variable INPUT en PHP

Umm, ni me había dado cuenta que no estaba en el formulario!

Sí, tiene que estar dentro del formulario. Ten en cuenta que cuando le das al botón enviar se envían los datos de ese formulario, nada más! así que todo lo que quieras recoger en la otra página debe estar dentro de ese formulario (al menos si utilizas POST).
  #7 (permalink)  
Antiguo 12/12/2007, 05:18
 
Fecha de Ingreso: octubre-2006
Mensajes: 128
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Coger variable INPUT en PHP

Vale, gracias muchas gracias ya va :D
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:11.