¿Cómo puedo hacer que en un formulario en PHP me lleguen datos concretos a una base de datos?

He hecho un formulario de usuario, es decir: usuario, contraseña y cuando ingrese los datos correctos lo que quiero conseguir en que en la base de datos al encontrar el usuario me los muestre en una página detalle (datos de la persona)La tabla en la base de datos la tengo hecha pero no consigo que me muestre los datos. No se como pasar los parámetros desde el formulario para que la página detalle los reciba y muestre los datos.
Conectar usuario, al elegir la página.php si la conexión es correcta, pongo el parámetro a pasar, todo lo acepta; pero cuando quiero ver la página en el navegador me da error de sintaxis: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in line 28...
Y si quito el parámetro a pasar, la página carga en el navegador; pero claro no pasa ningún parámetro, por lo tanto la página detalle no recibe nada y no muestra nada. Espero pueda ayudarme.
Otra duda, que tal vez me ayude en el tema anterior:
En un buscador de texto en la página web, si por ejemplo pongo la palabra diseño; mando los parámetros a la página detalle; la página detalle recibe los parámetros y si encuentra el texto a buscar en la base de datos me mostrara los detalles, pero cuando no encuentra el dato, ¿qué sucede? Me muestra la página detalle vacía, como puedo hacer para que en lugar de que me muestre la página web vacía me muestre una página que diga por ejemplo, la palabra buscada no se encuentra en la base de datos; ¿Es decir como puedo hacer el enlace hacia una página de error o de dato no encontrado?.
Muchas gracias por su tiempo.
El código es el siguiente:
<?php require_once('Connections/leccion.php'); ?>
<?php
$colname_resultado = "-1";
if (isset($_POST['codigo'])) {
  $colname_resultado = (get_magic_quotes_gpc()) ? $_POST['codigo'] : addslashes($_POST['codigo']);
}
mysql_select_db($database_leccion, $leccion);
$query_resultado = sprintf("SELECT * FROM datosalumnos WHERE codigo = '%s'", $colname_resultado);
$resultado = mysql_query($query_resultado, $leccion) or die(mysql_error());
$row_resultado = mysql_fetch_assoc($resultado);
$totalRows_resultado = mysql_num_rows($resultado);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['codigo'])) {
  $loginUsername=$_POST['codigo'];
  $password=$_POST['contrasena'];
  $MM_fldUserAuthorization = "nivel";
  $MM_redirectLoginSuccess = "bien.php?codigo=<?php echo $row_resultado['codigo']; ?>";
  $MM_redirectLoginFailed = "mal.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_leccion, $leccion);
  $LoginRS__query=sprintf("SELECT codigo, contrasena, nivel FROM datosalumnos WHERE codigo='%s' AND contrasena='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
  $LoginRS = mysql_query($LoginRS__query, $leccion) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    $loginStrGroup  = mysql_result($LoginRS,0,'nivel');
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;      
    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
La verdad recién estoy conociendo Php y todo lo hago con dreamweaver 8

1 Respuesta

Respuesta
1
La siguiente línea es claramente incorrecta:
$MM_redirectLoginSuccess = "bien.php?codigo=<?php echo $row_resultado['codigo']; ?>";
puesto que te encuentras en el entorno de PHP porque abriste una etiqueta <?php y todavía no la has cerrado, no puedes abrir otra <?php como haces aquí. La línea correcta sería:
$MM_redirectLoginSuccess = "bien.php?codigo=" . $row_resultado['codigo']";
En cuanto a la segunda pregunta, sólo tienes que poner un condicional en la página de destino de manera que si no hay ningún registro que mostrar, informe de ello. Algo como:
if ($result == false) {
echo "No hay datos con ese codigo";
else {
// Aquí el resto de tu código
}
Muchas gracias por su respuesta, he reemplazado la linea de código que me decía y quitándole una comilla a la linea que me ha mandado ya no me da más errores; el problema es que aunque el código y contraseña sean correctos en la página detalle no me muestra información del registro. selecciono el formulario y en accion busco la pagina detalle.php  sin pasar ningun parametro; Metodo=POST.
En Conectar Usuario, en el apartado si la conexión es correcta busco la página detalle.php y aquí si le paso el parámetro código.al hacer todo esto la página detalle no me muestra datos.
Si por el contrario.
Selecciono el formulacio, en Acción busco la página detalle.php y paso el parámetro código, Método POST; me sale enseguida un símbolo de admiración rojo al lado de Conectar Usuario.(Conectar usuario también busca página detalle.php y pasa el parámetro código).
Si hago lo anterior tampoco funciona, no me da los detalles de código ingresado.
Si haciendo lo anterior y en Método lo cambio por GET; si pongo solo el código correcto ya me muestra los detalles en la página detalle(pero cuidado se salta el campo contraseña). Si pongo Código y Contraseña correcto me muestra también los datos correstos en la página detalle.Si pongo datos erróneos simplemente sale la página detalle vacía y no me sale la página mal.php (que dice error en datos introducidos).
Si a conectar usuario solo le digo que si la conexión es correcta se dirija a la página detalle sin parámetro y seleccionando el formulario en Acción busco la página detalle.php pasando parámetro codigo; nuevamente sale el símbolo rojo al lado de Conectar Usuario; Método POST; al poner datos correctos no me muestra ningún detalle la página detallephp. Si cambio el Método por GET unicamente basta con poner el código para que me muestre los detalles del código introducido(ignorando nuevamente la contraseña)
Si en este paso nuevamente en Conectar Usuario paso a buscar la página detalle.php con parámetro código, el símbolo rojo desaparece, en Acción de formulario, me muestra <? php echo $loginFormAction;?>Y Método POST.
Y nuevamente me da el error de sintaxis...
Bueno he tratado de explicarle como van sucediendo los problemas espero pueda ayudarme; sino había pensado con un campo de texto buscando el código, luego que pasara a una página que me pida contraseña(otro campo de texto) y si la encuentra e la base de datos la contraseña mostrar los detalles en página detale.php
Mi problema en este método es la página de error si hay un error en el dato introducido.
Muchas gracias por su tiempo.
Supongo que el problema está en:
if (!isset($_SESSION)) {
   session_start();
}
De hecho, para que las variables de sesión funcionen correctamente, debes ejecutar session_start() en cada página al principio y no de manera condicional.
Muchas gracias experto por su ayuda. En la página bien.php seleccione el formulario en vinculo, lleme a la página detalle; pase un parámetro código y en Método tanto en página bien.php como detalle.php los GET cambie por POST y todo se soluciono, ahora espero que cuando suba la página al servidor no de problema alguno; en el hostlocal funciona sin problemas.
Gracias. Enseguida le haré otra pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas