Foros del Web » Programando para Internet » PHP »

actualizar campos obtenidos con consulta. Ayuda

Estas en el tema de actualizar campos obtenidos con consulta. Ayuda en el foro de PHP en Foros del Web. Hola, estoy intentando hacer una consulta y que me devuelva una seria de cajas con los datos que contiene ese registro, ese numero de dni, ...
  #1 (permalink)  
Antiguo 24/09/2005, 09:51
 
Fecha de Ingreso: enero-2005
Mensajes: 19
Antigüedad: 19 años, 3 meses
Puntos: 0
actualizar campos obtenidos con consulta. Ayuda

Hola,
estoy intentando hacer una consulta y que me devuelva una seria de cajas con los datos que contiene ese registro, ese numero de dni, pero no hace nada, muestra el formulario de inicio, le doy a buscar y vuelve a mostrar el formulario de inicio. Alguien me puede decir por qué? Es muy urgente...
Gracias!

<?
session_start();
?>
<html>

<head>

<title>ERASMUS EI3. Buscar un estudiante</title>
<link rel="stylesheet" type="text/css" href="FormTabla.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<h1>B&uacute;squeda de un
estudiante</h1>
<FORM ACTION=BusqEditEst.php METHOD=post>
Introduce el DNI o pasaporte del estudiante: <INPUT TYPE=text NAME=dni><BR><br>
<div align="center"><INPUT TYPE=submit NAME=OK VALUE="BUSCAR"></div><BR>
</FORM>
<?php
//$dni = $_POST['dni'];

if ($OK == "BUSCAR") {
// conexion al servidor de bases de datos
$db=mysql_connect ("localhost", "mpombo", "mcubas") or die ('problema conectando porque :' . mysql_error());
// seleccionado la base de datos
mysql_select_db ("erasmus",$db);
// preparando la instruccion sql

$q = "select * from estudiantes where dni= ".$dni;
// ejecutando el query select regresa un rowset
$estudiantes = mysql_query($q, $db) or die ("problema con query") ;
// regresando renglon con registro
$reg = mysql_fetch_row($resultado) or die("problema con registros");

// construyendo forma dinamica
echo "<FORM ACTION=BusqEditEst.php METHOD=post>";
// recordar que strings se encadenan con .

echo "DNI:<INPUT TYPE=text NAME=dni value=$reg[0]><BR>";
echo "NOMBRE:<INPUT TYPE=text NAME=nombre value=$reg[1]><BR>";
echo "APELLIDOS:<INPUT TYPE=text NAME=apellidos value=\"".$reg[2]."\"><BR>";
echo "DIRECCIÓN:<INPUT TYPE=text NAME=direccion value=\"".$reg[3]."\"><BR>";
echo "TELEFONO:<INPUT TYPE=text NAME=telefono value=$reg[4]><BR>";
echo "EMAIL:<INPUT TYPE=text NAME=email value=$reg[5]><BR>";
echo "CURSO:<INPUT TYPE=text NAME=curso value=$reg[6]><BR>";
echo "DESTINO:<INPUT TYPE=text NAME=destino value=$reg[7]><BR>";
echo "COORDINADOR:<INPUT TYPE=text NAME=coordinador value=$reg[8]><BR>";
echo "NOMBRE DE USUARIO:<INPUT TYPE=text NAME=nombreUsuario value=$reg[9]><br>";
echo "CONTRASEÑA:<INPUT TYPE=hidden NAME=clave value=$reg[10]><br>";
echo "<INPUT TYPE=submit NAME=OK VALUE=editar><BR>";
echo "</FORM>";
}//else { echo "No existe ningún estudiante con ese dni"; }

if ($OK == "editar")
{
// conexion al servidor de bases de datos
$db=mysql_connect ("localhost", "mpombo", "mcubas")
or die ('problema conectando porque :' . mysql_error());
// seleccionado la base de datos
mysql_select_db ("erasmus",$db);
// preparando la instruccion sql
// $q = "UPDATE estudiantes SET dni=".$dni.", nombre='".$nombre."', direccion=".$direccion.", telefono=".$telefono.", email=".$email.", curso=".$curso.", destino=".$destino.", coordinador=".$coordinador.", nombreUsuario=".$nombreUsuario.", ".clave=$clave." where dni=".$dni;
$q = "UPDATE estudiantes SET nombre='".$nombre."', apellidos=".$apellidos.", direccion=".$direccion.", telefono=".$telefono.", email=".$email.", curso=".$curso.", destino=".$destino.", coordinador=".$coordinador.", nombreUsuario=".$nombreUsuario.", clave=".$clave." where dni=".$dni;

// ejecutando el query
mysql_query($q, $db) or die ("problema con query");
// avisando
echo "REGISTRO EDITADO";
}
?>
</HTML>
  #2 (permalink)  
Antiguo 24/09/2005, 16:32
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 11 meses
Puntos: 0
if ($OK == "BUSCAR")

¿Has comprobado que te llegue esta variable?. Haz echo $ok; despues del condicional.
A ver si es eso.
  #3 (permalink)  
Antiguo 25/09/2005, 01:08
 
Fecha de Ingreso: enero-2005
Mensajes: 19
Antigüedad: 19 años, 3 meses
Puntos: 0
Muchas gracias javifo.
Lo he puesto, y no sale nada... He probado a hacer echo "hola q tal"; despues del condicional pero tampoco lo imprime, por qué lo ignora??
Alguna idea de cómo lo arreglo?
Gracias!
  #4 (permalink)  
Antiguo 25/09/2005, 01:49
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... usa la variable superglobal $_POST (.. tienes comentado algún uso de esta...).

Visita la FAQ que trata del tema (La diferencia entre recibir $variable, $HTTP_XXX_VARS y $_XXX) y, claro, la documentación oficial: www.php.net/variables.external


Además ve mi firma... puedes colorear el código para que sea más fácil leerlo...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 25/09/2005, 02:05
 
Fecha de Ingreso: enero-2005
Mensajes: 19
Antigüedad: 19 años, 3 meses
Puntos: 0
ya le he pasado via $POST pero tampoco funciona, es que no hace nada! Ni error ni nada....
me estoy volviendo locaaaaaaaaaaaa!!
salu2, gracias!
  #6 (permalink)  
Antiguo 25/09/2005, 02:14
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
será porque es $_POST???... Muestra cómo lo haces, un "no me sirve" no dice nada.

Viste el enlace que dejé?, la FAQ que mencioné?...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 25/09/2005, 02:25
 
Fecha de Ingreso: enero-2005
Mensajes: 19
Antigüedad: 19 años, 3 meses
Puntos: 0
Vale, aquí lo dejo, lo paso así:
$dni = $_POST['dni'];
$BUSCAR = $_POST['BUSCAR'];

Y luego lo llamo del tipo $dni o $BUSCAR.

Vi la FAQ...
Gracias de antemano.
  #8 (permalink)  
Antiguo 25/09/2005, 02:57
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Pero si hiciste eso debió de darte un mensaje de error: la primera ves que ejecutes el archivo no hay variables definidas vía POST... no muestras cómo lo implementas.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 25/09/2005, 03:38
 
Fecha de Ingreso: enero-2005
Mensajes: 19
Antigüedad: 19 años, 3 meses
Puntos: 0
No he entendido mucho, así queda, aunq sólo he añadido los $POST.

<?
session_start();
?>
<html>

<head>

<title>ERASMUS EI3. Buscar un estudiante</title>
<link rel="stylesheet" type="text/css" href="FormTabla.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<h1>B&uacute;squeda de un
estudiante</h1>
<FORM ACTION=BusqEditEst.php METHOD=post>
<p align="center">Introduce el DNI o pasaporte del estudiante: </p><br><br>
<div align="center"><INPUT TYPE=text NAME=dni></div><BR><br>
<div align="center"><INPUT TYPE=submit NAME=OK VALUE="BUSCAR"></div><BR>
</FORM>
<?php
$dni = $_POST['dni'];
$BUSCAR = $_POST['BUSCAR'];
if ($OK == "BUSCAR") {
echo "OK=";
echo $OK;
// conexion al servidor de bases de datos
$db=mysql_connect ("localhost", "mpombo", "mcubas") or die ('problema conectando porque :' . mysql_error());
// seleccionado la base de datos
mysql_select_db ("erasmus",$db);
// preparando la instruccion sql

$q = "select * from estudiantes where dni= ".$dni;
// ejecutando el query select regresa un rowset
$estudiantes = mysql_query($q, $db) or die ("problema con query") ;
// regresando renglon con registro
$reg = mysql_fetch_row($resultado) or die("problema con registros");

// construyendo forma dinamica
echo "<FORM ACTION=BusqEditEst.php METHOD=post>";
// recordar que strings se encadenan con .

echo "DNI:<INPUT TYPE=text NAME=dni value=\"$reg[0]\"><BR>";
echo "NOMBRE:<INPUT TYPE=text NAME=nombre value=$reg[1]><BR>";
echo "APELLIDOS:<INPUT TYPE=text NAME=apellidos value=\"".$reg[2]."\"><BR>";
echo "DIRECCIÓN:<INPUT TYPE=text NAME=direccion value=\"".$reg[3]."\"><BR>";
echo "TELEFONO:<INPUT TYPE=text NAME=telefono value=$reg[4]><BR>";
echo "EMAIL:<INPUT TYPE=text NAME=email value=$reg[5]><BR>";
echo "CURSO:<INPUT TYPE=text NAME=curso value=$reg[6]><BR>";
echo "DESTINO:<INPUT TYPE=text NAME=destino value=$reg[7]><BR>";
echo "COORDINADOR:<INPUT TYPE=text NAME=coordinador value=$reg[8]><BR>";
echo "NOMBRE DE USUARIO:<INPUT TYPE=text NAME=nombreUsuario value=$reg[9]><br>";
echo "CONTRASEÑA:<INPUT TYPE=hidden NAME=clave value=$reg[10]><br>";
echo "<INPUT TYPE=submit NAME=OK VALUE=editar><BR>";
echo "</FORM>";
}//else { echo "No existe ningún estudiante con ese dni"; }

if ($OK == "editar")
{
// conexion al servidor de bases de datos
$db=mysql_connect ("localhost", "mpombo", "mcubas")
or die ('problema conectando porque :' . mysql_error());
// seleccionado la base de datos
mysql_select_db ("erasmus",$db);
// preparando la instruccion sql
// $q = "UPDATE estudiantes SET dni=".$dni.", nombre='".$nombre."', direccion=".$direccion.", telefono=".$telefono.", email=".$email.", curso=".$curso.", destino=".$destino.", coordinador=".$coordinador.", nombreUsuario=".$nombreUsuario.", ".clave=$clave." where dni=".$dni;
$q = "UPDATE estudiantes SET nombre='".$nombre."', apellidos=".$apellidos.", direccion=".$direccion.", telefono=".$telefono.", email=".$email.", curso=".$curso.", destino=".$destino.", coordinador=".$coordinador.", nombreUsuario=".$nombreUsuario.", clave=".$clave." where dni=".$dni;

// ejecutando el query
mysql_query($q, $db) or die ("problema con query");
// avisando
echo "REGISTRO EDITADO";
}
?>
</HTML>
  #10 (permalink)  
Antiguo 25/09/2005, 03:49
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Código PHP:
$dni $_POST['dni'];
$BUSCAR $_POST['BUSCAR'];
if (
$OK == "BUSCAR") { 
Estás comparando $OK... no veo que la definas. En tu mensaje anterior dijiste: "Y luego lo llamo del tipo $dni o $BUSCAR."; no se ve que hagas eso.

Ve bien lo que haz de comparar y cuándo hacerlo. Presiento el formulario inicial no querrás que aparesca después de enviar "el mismo". Si es ese el caso me adelanto diciendote que ocupes la función empty() para ver si hay datos que ya han sido enviados...

La verdad no me he detenido a mirar tu código como para saber exáctamente lo que vaz a hacer --ya mencioné la opción de iluminarlo--, pero el comportamiento que describes se soluciona de manera sencilla (si leiste lo que dejé); $_POST y ... órden (para no decir lógica, sonaria un tanto... despectivo, no es el caso).

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 25/09/2005, 09:13
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola:

Yo veo un algunos fallos.

<FORM ACTION=BusqEditEst.php METHOD=post>
Introduce el DNI o pasaporte del estudiante: <INPUT TYPE=text NAME=dni><BR><br>
<div align="center"><INPUT TYPE=submit NAME=OK VALUE="BUSCAR"></div><BR>
</FORM>

Supongo que BusqEditEst.php es la página en que está el formulario y a la que quieres volver.

1.- A <INPUT TYPE=text NAME=dni> Le falta el valor. Ha de ser:<INPUT TYPE=text NAME=dni value=$dni>
Hazlo así y prueba con echo $dni; si te llega la variable.

3.- Por lo que veo, quieres que el formulario te envíe $buscar o $editar (una de las dos). Para que lo haga la ha de pasar. Para hacerlo, lo más normal es poner un input de tipo radio. Cada casilla lleva una de las dos variables. La que selecciona el usuario es la que se envía.

4.- El botón submit sirve para el envío pero no te pasará ninguna variable.

5.- Para desencadenar el script, olvídate de $ok. Haz con la función isset la comprobación para saber qué variable te han pasado ($buscar o $editar).

Código PHP:
if (isset($buscar)) {
   
lo que sea (tu script)

Con esto, te ha de funcionar si el resto del script está bien hecho.

Para ver la función isset y otras, mira www.php.net

Suerte.

Última edición por javifo; 25/09/2005 a las 09:20
  #12 (permalink)  
Antiguo 25/09/2005, 12:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por javifo
1.- A <INPUT TYPE=text NAME=dni> Le falta el valor. Ha de ser:<INPUT TYPE=text NAME=dni value=$dni>
Si te refieres a el formulario inicial (parece una vez enviado el valor lo optiene de la BD), la variable no va a existir y, siendo un textbox, no necesariamente debe llevar value.

Cita:
Iniciado por javifo
3.- Por lo que veo, quieres que el formulario te envíe $buscar o $editar (una de las dos). Para que lo haga la ha de pasar. Para hacerlo, lo más normal es poner un input de tipo radio. Cada casilla lleva una de las dos variables. La que selecciona el usuario es la que se envía.
... , creo aquí no es opción mostrar la opción (valgase la redundancia ); primero se busca y de lo optenido de la BD se edita...

Cita:
Iniciado por javifo
4.- El botón submit sirve para el envío pero no te pasará ninguna variable.
Todo elemento del formulario es enviado, eso incluye el botón Submit ...

Cita:
Iniciado por javifo
5.- Para desencadenar el script, olvídate de $ok. Haz con la función isset la comprobación para saber qué variable te han pasado ($buscar o $editar).
... de acuerdo, ya lo había dicho en dicho en mi mensaje anterior --sugerí empty(), igual sirve-- pero no olvidemos que se pregunta por un valor que es pasado por POST... precisamente por su existencia, es un error querer ocuparlo si no existe. A esto me referia en mi antepenúltima respuesta (en la que dije que debió de aparecer un mensaje de error). Veamos la diferencia:

Correcto:
Código PHP:
if(isset($_POST['algo'])) // vemos si existe
   
echo "Existe"// actuamos en concecuencia 
Incorrecto:
Código PHP:
$algo$_POST['algo']; // esto es un error, estamos "ocupando" algo que no existe...
if(isset($algo)) // además es mejor hacerlo directamente; ¿por qué gastar procesos?
   
echo "Existe"
De la segunda forma debería aparecer un mensaje de error... claro que se puede evitar y funcionaria el script pero espero se entienda el error...

Las herramientas son esas, la manera y forma de ocuparlas pueden ser muy variadas, cada quien podría tener una solución diferentes y cada una podría ser perfectamente válida...

Código PHP:
if(!isset($_POST['ok'])) {
   
// mostramos el formulario "original"
   
echo "<input type=\"submit\" name=\"ok\" value=\"Buscar\">";
} elseif(
$_POST['ok']=="Buscar") {
   
// me parece que aquí iria un segundo formulario...
   
echo "<input type=\"submit\" name=\"ok\" value=\"Editar\">";
} else { 
// Por eliminación ya no es necesaria la comprobación... pero si se quiere... 
  // etc

Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #13 (permalink)  
Antiguo 25/09/2005, 13:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 11 meses
Puntos: 0
Me parece que es una cuestión de planteamiento.

De todas formas, yo no veo de donde sale $ok ni sus posibles valores (buscar o editar.

Saludos
  #14 (permalink)  
Antiguo 25/09/2005, 13:37
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Eeeeeexáctamente! , es lo que he estado diciendo ...

$ok debería de provenir de el botón submit... pero, como todo elemento del formulario, debe recibirse con $_POST (y volvemos a el incio...), cosa que no se hace y que ya hice ver. Debería de aclararse con el último código que dejé...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 11:01.