Foros del Web » Programando para Internet » PHP »

Consulta php y Mysql

Estas en el tema de Consulta php y Mysql en el foro de PHP en Foros del Web. Epale que tal... Fíjense: busco un registro de una BD mediante este código el cual funciona a la perfección: if ($row= mysql_fetch_array($result)) echo "<a href='sitio.php'>Volver</a>"; ...
  #1 (permalink)  
Antiguo 23/07/2003, 16:21
 
Fecha de Ingreso: junio-2003
Mensajes: 46
Antigüedad: 20 años, 10 meses
Puntos: 0
Consulta php y Mysql

Epale que tal...


Fíjense: busco un registro de una BD mediante este código el cual funciona a la perfección:

if ($row= mysql_fetch_array($result))
echo "<a href='sitio.php'>Volver</a>";
{
echo "<TABLE BORDER='0'>";
DO
{
echo "".$row["nombre"]." - ".$row["apellido"]."";
}
WHILE ($row=mysql_fetch_array($result));
echo "</TABLE>";
}



Ese resultado solo aparece si coicide lo buscado con lo que se encuentra en la base de datos. Le añadí esta línea al final:

else{
echo "no hay resultados";
}

Para que responda si no hay resultado y no parezca el link a sitio.php, pero me dice que hay error, que hago..?

Es decir para que solo si hay resultados se muestran tanto los mismos como el link, pero si no hay, que no aparezca el link y solo la frase "No hay resultados"...
  #2 (permalink)  
Antiguo 23/07/2003, 16:29
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Código PHP:
if ($rowmysql_fetch_array($result)) {
echo 
"<a href='sitio.php'>Volver</a>";
echo 
"<TABLE BORDER='0'>";
DO {
echo 
"".$row["nombre"]." - ".$row["apellido"]."";
} WHILE (
$row=mysql_fetch_array($result));
echo 
"</TABLE>";

} else {
echo 
"no hay resultados";

Creo que por ahi va...
__________________
Manoloweb
  #3 (permalink)  
Antiguo 23/07/2003, 17:04
 
Fecha de Ingreso: junio-2003
Mensajes: 46
Antigüedad: 20 años, 10 meses
Puntos: 0
Exacto.....

Muchas Gracias... funciona bien....

y ya para terminar incluyo los regsitros a una BD mediante este código php con su respectivo form:

<?php
include("conex.php");
$link=Conectarse();
mysql_query("insert into datos (nombre,apellido) values ('$nombre','$apellido')",$link);

header("Location: ejem.php");
?>

Como hago para que si el nombre que se va a introducir (solo nombre) si ya existe salga un mensaje de error diciendo que ya existe... y no se pueda insertar..?
  #4 (permalink)  
Antiguo 23/07/2003, 17:19
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Pues puedes hacer una consulta previa a la base de datos...

Código PHP:
$tal=mysql_query("select count(*) from tutabla where nombre=$nombre");
$cuantos=mysql_result($tal,0);

if (
$cuantos>0){

//ERROR!!! Aqui muestras que ya existe, y que escoja otro nombre

} else {

//AQUI copias tu codigo para insertar...


__________________
Manoloweb
  #5 (permalink)  
Antiguo 27/07/2003, 16:15
 
Fecha de Ingreso: junio-2003
Mensajes: 46
Antigüedad: 20 años, 10 meses
Puntos: 0
¿Este sería el código php completo?:

<?php
include("conex.php");
$link=Conectarse();

$tal=mysql_query("select count(*) from datos where nombre=$nombre");
$cuantos=mysql_result($tal,0);

if ($cuantos>0){

echo "el registro ya existe";

} else {

mysql_query("insert into datos (nombre,apellido) values ('$nombre','$apellido')",$link);

header("Location: ejem.php");
}
?>


Otra cosa busco regsitros en la Bd, mediante esta sentencia sql:

$sql="SELECT * FROM datos WHERE nombre LIKE '%".$palabra."%' ";

El problema es que el parámetro LIKE busca patrones de cadena, o sea si escribo "car" me aparece "carlos" como lo cambio para que solo busque frase exacta.. es decir "carlos" arrojará el resgistro exacto "carlos"....
  #6 (permalink)  
Antiguo 27/07/2003, 21:34
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Pues yo te recomiendo buscar un dato que no pueda repetirse, como por ejemplo pedirles su email, asi en lugar de buscarlo como LIKE lo buscas como igual que ( = ).

__________________
Manoloweb
  #7 (permalink)  
Antiguo 28/07/2003, 11:37
 
Fecha de Ingreso: junio-2003
Mensajes: 46
Antigüedad: 20 años, 10 meses
Puntos: 0
Entonces como quedaría la sentencia:?

$sql="SELECT * FROM datos WHERE nombre LIKE = '%".$palabra."%' ";
Es decir el sigono = después de Like o que?

Otra cosa, la solución que me distes para evitar la reinserción de registros la emsamblé como está en el post anterior, la subí al servidor pero no funciona, es decir, me incluye el registro así el nombre está repetido, cómo la ensamblo bien, que error tiene..?
  #8 (permalink)  
Antiguo 28/07/2003, 11:46
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
No, mi propuesta es que no uses el nombre como argumento de comparacion, sino el email, o algun USERNAME que pueda ser UNICO (como los de aqui del foro)...

$sql="SELECT * FROM datos WHERE usuario = '$palabra' ";

o

$sql="SELECT * FROM datos WHERE email = '$palabra' ";
__________________
Manoloweb
  #9 (permalink)  
Antiguo 28/07/2003, 12:06
 
Fecha de Ingreso: junio-2003
Mensajes: 46
Antigüedad: 20 años, 10 meses
Puntos: 0
Muchas gracias Manoloweb, (no se quien es mejor tu o Cluster) modifiqué la sentencia como me dijiste y ahora busca registros exactos.. Anque no me respondistes que error tiene la manera en la que ensamblé el código PHP para comporobar si existe ya ese nombre y denegar la inserción del registro o si no existe entonces, aprobarla..?

E acá el código:

<?php
include("conex.php");
$link=Conectarse();

$tal=mysql_query("select count(*) from datos where nombre=$nombre");
$cuantos=mysql_result($tal,0);

if ($cuantos>0){

echo "el registro ya existe";

} else {

mysql_query("insert into datos (nombre,apellido) values ('$nombre','$apellido')",$link);

header("Location: ejem.php");
}
?>
  #10 (permalink)  
Antiguo 28/07/2003, 16:09
 
Fecha de Ingreso: junio-2003
Mensajes: 46
Antigüedad: 20 años, 10 meses
Puntos: 0
Quien me ayuda por favor..
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 18:47.