Comando error en usuario o contraseña

Fernando soy Diego, hace poco me ayudaste a comprender la interactividad entre una BD y un formulario, ahora tengo esta duda,
.. Que comando podría utilizar en el caso que el usuario introduzca mal su usuario o contraseña, y me pueda devolver un mensaje tipo error..
También si es posible, cuando un usuaria haga una consulta pero no esté registrado, en vez de un reporte en blanco me gustaría un mensaje como, NO ESTAS REGISTRADO.. O algo parecido..
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'dbase de datos';
mysql_select_db($dbname,$conn);
$usuario = $_POST["usuario"];
$clave = $_POST["clave"];
//en esta línea supongo que irá el comando error de usuario o contraseña ¿no?
$consulta = "SELECT Nombre, Apellido1, Apellido2, email, cc FROM socios WHERE usuario='".$usuario."' and clave='".$clave."'";
$resultado = mysql_query($consulta,$conn);
##echo $consulta ;
Muy agradecido
Diego

1 Respuesta

Respuesta
1
Lo puedes hacer con la función mysql_num_rows que te devuelve el número de filas de la consulta, en tu caso debería ser una o ninguna, debes hacer la com`probación después de la consulta y en función de si hay 1 (resultado correcto) o 0 (error de datos o usuario inexistente) obrar en consecuencia
$consulta = "SELECT Nombre, Apellido1, Apellido2, email, cc FROM socios WHERE usuario='".$usuario."' and clave='".$clave."'";
$resultado = mysql_query($consulta,$conn);
$filas = mysql_num_rows();
if ($filas >= 1)
{
// Aqui iria el codigo si la identificación es buena, se enseñan los datos, etc.
}
else
{
// Aquí iría el código si hay error, que informaría que no existe o que el usuario y/o la clave es incorrecta
}
Estimado Fernando, gracias por tu rápida respuesta, está claro que necesito un curso de esto, después de haber colocado el código que me facilitas en varios sitios me reporta
Warning: Wrong parameter count for mysql_num_rows() in
/home/d330861/public_html/consultadata.php on line 27
Casi que te paso todo el código para que puedas verlo mejor tal y como lo comenzamos. En el PHP hay una parte de html que es la información que reporto al usuario "Eres Socio/a, estos son los datos que tenemos de ti" etc.. supongo que en caso de campos vacíos debería de reportar algo parecido pero con el código de error ¿no?
Y tenías razón con lo de los estílos, no parece sencillo lograrlos con PHP.
Muchas Gracias
Diego.
<?php
$dbhost = 'localhost';
$dbuser = 'ususario';
$dbpass = 'clave';
$dbname = 'dbase_nombre';
if (!mysql_connect("localhost", "usuario", "clave") ) {
echo 'No se pudo conectar a mysql';
exit;
}
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'dbase_nombre';
mysql_select_db($dbname,$conn);
$usuario = $_POST["usuario"];
$clave = $_POST["clave"];
$consulta = "SELECT Nombre, Apellido1, Apellido2, email, cc FROM socios WHERE usuario='".$usuario."' and clave='".$clave."'";
$resultado = mysql_query($consulta,$conn);
##echo $consulta ;
echo "<html><head><title>tus datos</title></head>";
echo "<body><h1>Eres Socio/a, estos son los datos que tenemos de ti</h1><br><br>";
while($fila = mysql_fetch_array($resultado,MYSQL_ASSOC))
{
echo "Nombre :{$fila['Nombre']} <br>" .
"Apellido 1 : {$fila['Apellido1']} <br>" .
"Apellido 2 : {$fila['Apellido2']} <br>" .
"e-mail : {$fila['email']} <br>" .
"Numero de Cuenta : {$fila['cc']} <br><br>" ;
}
mysql_close($conn);
echo "</body></html>";
?>
<head>
<title>Consulta de Datos</title>
<style type="text/css">
<!--
.Estilo1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: x-large;
color: #0000FF;
}
.Estilo9 {font-size: smaller}
.Estilo12 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: medium;
color: #0000FF;
}
.Estilo13 {
color: #009933;
font-size: 16px;
}
-->
</style>
<body>
<blockquote>
<blockquote>
<blockquote>
<p align="left" class="Estilo1"><img src="/imagenes/escudo_blancoCP.jpg" width="71" height="96"><br>
<br>
<span class="Estilo12">Si alguno de estos datos fuera err&oacute;neo, incompleto, o simplemente</span></p>
<p align="left" class="Estilo12">ya dejaste de ser socio, por favor comun&iacute;canoslo o bien env&iacute;a un </p>
<p align="left" class="Estilo1"><span class="Estilo9">correo a <br />
<a href="mailto: [email protected]
> <br />
o bien a<br />
<a href="mailto: [email protected]
<p align="left" class="Estilo1"> </p>
<p align="left" class="Estilo1"><span class="Estilo13">Gracias </span><br>
</p>
</blockquote>
Pues error mio :)
La funcion mysql_num_rows() necesita que le pases el resultado del que deseas que te diga el numero de filas, asi que la forma correcta sería $filas = mysql_num_rows($resultado);
El código quedaría asi, he quitado una conexión a la bvase de datos, porque tenias dos
<?php
$dbhost = 'localhost';
$dbuser = 'ususario';
$dbpass = 'clave';
$dbname = 'dbase_nombre';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname,$conn);
$usuario = $_POST["usuario"];
$clave = $_POST["clave"];
$consulta = "SELECT Nombre, Apellido1, Apellido2, email, cc FROM socios WHERE usuario='".$usuario."' and clave='".$clave."'";
$resultado = mysql_query($consulta,$conn);
##echo $consulta ;
$filas = mysql_num_rows($resultado);
if ($filas >= 1)
{
echo "<html><head><title>tus datos</title></head>";
echo "<body><h1>Eres Socio/a, estos son los datos que tenemos de ti</h1><br><br>";
while($fila = mysql_fetch_array($resultado,MYSQL_ASSOC))
{
echo "Nombre :{$fila['Nombre']} <br>" .
"Apellido 1 : {$fila['Apellido1']} <br>" .
"Apellido 2 : {$fila['Apellido2']} <br>" .
"e-mail : {$fila['email']} <br>" .
"Numero de Cuenta : {$fila['cc']} <br><br>" ;
}
}
else
{
echo "<html><head><title>Error</title></head>";
echo "<body><h1>No hemos podido identificart como Socio/a, intenta de nuevo la identificación</h1><br><br>";
}
mysql_close($conn);
echo "</body></html>";
?>
Sobre los estilos y para evitar todo este follón de html mezclado con PHP hay una solución muy buena, usar un sistema de plantillas, para PHP hay varios, yo creo que el mejor es Smarty, pero yo no me liaría aún con eso hata no tener claras toda la base de programación en PHP.
Gracias Fernando, funcionó
Resultado en datos de entrada correctos;
-------------------------------------------------------------------------
Eres Socio/a, estos son los datos que tenemos de ti
Nombre: FEDERICO
Apellido 1 : GARCÍA
Apellido 2 : SERRANO
e-mail : [email protected]
Numero de Cuenta : 2038-1731-01-0600565421
------------------------------------------------------------------------
Resultado datos negativos;
----------------------------------------------------------------------------
No hemos podido identificarte como Socio/a, o quizás hayas equivocado el
Usuario o la clave, intenta de nuevo la identificación
----------------------------------------------------------------------

Revisaré lo que me dices de las plantilla Smarty.. me gustaría hacerlo un poco más atractivos los resultados.. aunque bien tienes razón a mi tampoco me gusta mezclar código html con PHP ¿qué me sugieres?
Un millón de gracias de nuevo.
Dg.
Precisamente Smarty te permite separar el HTML y el PHP, por ejemplo, te creas un HTML especial que es lo que en Smarty se llama una plantilla, que es algo así
<html>
<head>
<title>{$titulo_pagina}</title></head>
<body>
<h1>Hola {$nombre} {$ape1}, bienvenido</h1>
</body></html>
Y desde el programa PHP le das valor a $titulo_pagina, $nombre y $ape1, llamas al sistema de plantillas, esta mezcla los valores con ese html especial y crea un HTML equivalente, algo así
<html>
<head>
<title>Titulo de la pagina</title></head>
<body>
<h1>Hola Pepe Lopez, bienvenido</h1>
</body></html>
Este HTML generado es el que el PHP envía al navegador, con lo que en el PHP solo manejas los datos, la base de datos, etc. y el HTML lo tienes en plantillas, que si quieres las puedes hacer con un editor web, usar hojas de estilo, imágenes y lo que quieras, lo único es que luego devbes poner la variables en donde quieres que vayan los datos reales.
Te puedes bajar el smarty desde http://www.smarty.net/ y en http://www.smarty.net/docsv2/es/ tienes la documentación en español, de todas formas, si te lias, ya sabes, pregunta.
Gracias Fernando, lo probaré doy por finalizaza la cuestión ya que salgo de viaje.. si tuviera algún problema abriría otro.. repito mil gracias por tu ayuda.
Diego.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas