Ver Mensaje Individual
  #6 (permalink)  
Antiguo 23/11/2004, 11:13
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Con esto simplemente:
if($row=mysql_fetch_array($query)){

no puedes asegurar que tu consulta SQL ejecutada:
$query = mysql_query("SELECT ciudad FROM ciudades WHERE ciudad = '$ciudad'");

arroje un registro (lo esperado) o cero .. sólo vas a ver que la consulta SQL se ejecutó correctamente sin error (de conexión o de sintax SQL) .. De hecho .. si no hay resultados en tu consulta .. lo que se proboca es un error en mysql_fetch_array() ..

Lo que debes haces es usar la función:

mysql_num_rows($query)

tipo:

Código PHP:
if (mysql_num_rows($query) == 1){
  
// das tu mensaje de erro y aviso ..
  // No te hace falta el mysql_fetch_array() .. no vas a motrar ningún dato más de ese registro.
   
} else {

  
// ejecutas tu insert

Y .. donde dice "muestras tu mensaje de error" .. podrías lanzar una ventana desde javascript:

Código PHP:
echo "<script languaje=\"javascript\">window.open('confirma.php"........)</script>"; 
En la ventana que abres .. llamas a tu "confirmar.php" o bien un confirm() de jvascript. No conozco tu aplicación .. pero en teoría esas "ciudades" no deberían repetirse en tu BD .. para eso verificas que no exista .. así que no tiene mucho sentido en ese caso hacer un "confirmar" con opción de continuar. (pero .. eso ya depende de tus necesidades).

Realmente hay muchos otros detalles que tendrías que tener encuenta para que esto te funcione como deseas .. Parece que usas un mismo script para vários procesos .. (no se vé el código completo o así parece) .. Realmente deberías evitar mostrar mensajes al ejecutar un "Query" en tu BD .. haz una prueba, si recargas la página que ahora usas para mostrar el mensaje que muestras despues de tu INSERT .. veras que tu código volverá a ejecutarse .. los datos se pedirá reenviarlos (por parte de tu navegador) y entrará en juego tu validación de registros repetidos (menos mal .. ) pero, lo que debería hacerse es "redireccionar" a otra página (Script) al terminar ese INSERT para mostrar su mensaje de error o exito en otro script o por lo menos flujo del mismo script (recargandose a si mismo ..). No sé si me explico .. pero esa forma de programar se presta a eso . .a veces es necesario repartir el código en vários scripts (con sus validaciones necesarioas) o bien tener encuenta que si se usa un mismo script para vários procesos .. al ejecutarse uno hay que "redireccionar" al otro (con alguna variable más de control que indique en que estado se está).

Un saludo,