Foros del Web » Programando para Internet » PHP »

No comprueba las condiciones

Estas en el tema de No comprueba las condiciones en el foro de PHP en Foros del Web. Estoy intentado comprobar si el dato insertado ya existe en la db, ants funcionaba pero a dejado de funcionar y no sé porqué. Código PHP: ...
  #1 (permalink)  
Antiguo 08/03/2010, 04:57
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
No comprueba las condiciones

Estoy intentado comprobar si el dato insertado ya existe en la db, ants funcionaba pero a dejado de funcionar y no sé porqué.


Código PHP:
// VAMOS A COMPROBAR SI EL CENTRO YA EXISTE

$sql="SELECT * FROM centros where denominacion='$denominacion'";


$result=mysql_query($sql);

$fila=mysql_fetch_assoc($result);

        if (
$denominacion==$fila["denominacion"]){
            
            if (
$campus==$fila["campus"]) {

            echo 
"<font color='red'>El centro ya existe en la base de datos.</font></font>";
            } 
            
// SINO EXISTE LO METEMOS EN LA BASE DE DATOS

            
else {
        
$sSQL="INSERT INTO centros (denominacion,calle,numero,codigo_postal,campus,contacto,telefono,corporativo,email,web) VALUES ('$denominacion','$calle','$numero','$codigo_postal','$campus','$contacto','$telefono','$corporativo','$email','$web')";

@
mysql_query("SET NAMES 'utf8'");

$result=mysql_query($sSQL) or die("<b>Error. El servidor dijo: </b> " mysql_error());
echo 
"<script>alert('Centro agregado a la base de datos');</script>";    
echo 
"<script>parent.location.href = 'menuadmin_titul.php?ver=agregarc';</script>";  
    }
}
}
?> 
He probado a imprimir las filas para ver si llegaban pero no mel as imprime así que hay puede estar el error...alguien sabe porque nó?

Última edición por AdrianSeg; 08/03/2010 a las 04:59 Razón: Mala escritura.
  #2 (permalink)  
Antiguo 08/03/2010, 05:03
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: No comprueba las condiciones

pon:

$result=mysql_query($sql) or die (mysql_error());

para ver que error te da.

creo que puede ser por:

Código PHP:
$sql="SELECT * FROM centros where denominacion='$denominacion'"
cambialo por:

Código PHP:
$sql="SELECT * FROM centros where denominacion='".$denominacion."' "
  #3 (permalink)  
Antiguo 08/03/2010, 05:08
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

No tiro error...y cuando hago sto...no muestra nada:

Código PHP:
Ver original
  1. $fila=mysql_fetch_assoc($result);
  2. echo $fila["denominacion"];
  3. echo $fila["campus"];
  #4 (permalink)  
Antiguo 08/03/2010, 05:45
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

Solucionado:

Código SQL:
Ver original
  1. WHERE denominacion='$denominacion' AND campus='$campus'";
  #5 (permalink)  
Antiguo 08/03/2010, 06:01
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

A vuelto a dejar de funcionar....


Código PHP:
Ver original
  1. $sql="SELECT denominacion FROM centros WHERE denominacion='$denominacion'";
  2.  
  3. $result=mysql_query($sql);
  4.  
  5. $fila=mysql_fetch_assoc($result);
  6.  
  7.         if ($denominacion==$fila["denominacion"]){
  8.  
  9.             echo "<font color='red'>El centro ya existe en la base de datos.</font></font>";
  10.             }
  11.            
  12. // SINO EXISTE LO METEMOS EN LA BASE DE DATOS
  13.  
  14.             else {
  15.        
  16. $sSQL="INSERT INTO centros (denominacion,calle,numero,codigo_postal,campus,contacto,telefono,corporativo,email,web) VALUES ('$denominacion','$calle','$numero','$codigo_postal','$campus','$contacto','$telefono','$corporativo','$email','$web')";

Marinesky probé y eso no es
  #6 (permalink)  
Antiguo 08/03/2010, 06:12
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: No comprueba las condiciones

haz un print_r de fila, y comprueba si $denominacion pilla valor (un echo $sql por ejemplo!)
  #7 (permalink)  
Antiguo 08/03/2010, 06:26
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

no no pilla es lo k dije antes y no se por k...print r? yo lo hago asi:

$fila=mysql_fetch_assoc($result);
echo $fila["denominacion"];


no muestra nada...pero ante si iba...k cosas mas rara...

El echo sql si pilla valor.
  #8 (permalink)  
Antiguo 08/03/2010, 06:31
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: No comprueba las condiciones

Yo cuando me pasa eso... hago el echo del sql, y lo copio al mysql query browser / phpMyAdmin o similares... así sabes si la consulta devuelve algo o no >.<
  #9 (permalink)  
Antiguo 08/03/2010, 08:17
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

consulta SQL:
SELECT denominacion
FROM centros
WHERE denominacion = 'Escuela Universitaria de Enfermeríaa'
LIMIT 0 , 30


denominacion
Editar Borrar Escuela Universitaria de Enfermeríaa

y me lo muestra perfectamente pero cuando lo hago en el php no...que pasa?
  #10 (permalink)  
Antiguo 08/03/2010, 09:52
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: No comprueba las condiciones

Creo primero deberías comprobar q la variable q le pasas a la consulta está llegando con el valor q esperas.
Además creo es mejor poner variables numéricas en tu BD, es decir
Código PHP:
Ver original
  1. denominacion = 1
en vez de d
Código PHP:
Ver original
  1. enominacion = 'Escuela Universitaria de Enfermeríaa'
Si no lo puedes hacer así pues yo q tu usaría campos enum.
En fin, verifica si la variable $denominacion está llegando con el valor esperado a la consulta, hacele un print
  #11 (permalink)  
Antiguo 08/03/2010, 14:52
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

Esta bien...pero no sale el bvalor no sé por k...
  #12 (permalink)  
Antiguo 08/03/2010, 15:36
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: No comprueba las condiciones

donde esta tu conector a la DB o sea las lineas de codigo que te conectan por ahi el error esta ahi
ademas hai un par de cosas que no se si estan mal pero yo no las hago de esa manera.

1)
Código PHP:
$result=mysql_query($sql); 
Código PHP:

// armo una funcion que se comunique con la DB que yo quiero y me de los permisos necesarios

function db_connect()
{
$result = @mysql_pconnect("host","username","password");
if(!
$result)
 return 
false;
if(!
mysql_select_db("nombre_de_tu_db"))
return 
false;

return 
$result;
}

// luego meto esta funcion en una variable:
$db_conn db_connect();

//luego en la parte de tu codigo anterior le agrego esta variable para que sepa 
//con que DB conectarse y pueda hacer el pedido

$result=mysql_query($sql$db_conn); //db_conn es la variable que contiene la coneccion a la DB 
bueno me pareseria raro que te funcione como lo haces vos sin especificar la db o yo no veo donde lo haces, pero proba de usar esta script que te pongo a continuacion seria el mismo que el tuyo pero le hise las modificaciones como a mi me pareseria.

codigo
Código PHP:

//ARMAMOS LA CONECCION A LA DB
function db_connect()
{
$result = @mysql_pconnect("host","username","password"); //CAMBIAR LOS DATOS POR LOS DE TU DB
if(!$result)
 return 
false;
if(!
mysql_select_db("nombre_de_tu_db")) //COLOCAR EL NOMBRE DE TU DB
return false;

return 
$result;
}

// VAMOS A COMPROBAR SI EL CENTRO YA EXISTE 

$sql="SELECT * FROM centros where denominacion='$denominacion'"

$db_conn db_connect();

$result=mysql_query($sql$db_conn); 

$fila=mysql_fetch_assoc($result); 

        if (
$denominacion==$fila["denominacion"]){ 
             
            if (
$campus==$fila["campus"]) { 

            echo 
"<font color='red'>El centro ya existe en la base de datos.</font></font>"
            }  
             
// SINO EXISTE LO METEMOS EN LA BASE DE DATOS 

            
else { 
         
$sSQL="INSERT INTO centros VALUES ('".$denominacion."','".$calle."','".$numero."','".$codigo_postal."','".$campus."','".$contacto."','".$telefono."','".$corporativo."','".$email."','".$web."')"

@
mysql_query("SET NAMES 'utf8'"); 

$result=mysql_query($sSQL$db_conn) or die("<b>Error. El servidor dijo: </b> " mysql_error()); 
echo 
"<script>alert('Centro agregado a la base de datos');</script>";     
echo 
"<script>parent.location.href = 'menuadmin_titul.php?ver=agregarc';</script>";   
    } 


esto suponiendo que las bariable tengan valor y existan.
porque por un lado la variable $denominacion es la que contiene la info para buscar en la db.
si esto te lo envia el usuario a traves del metodo post tenes que hacer lo siguiente:

Código PHP:
$denominacion $_POST["denominacion"]; // SUPONIEDO QUE ASI SE LLAMA EL 
// CAMPO DEL FORM SINO PONE EL NOMBRE DEL CAMPO DEL FORM CORRECTO 
y lo mismo pasa con las variables que insertas en la db:
si todas llegan desde un form tenes que hacer lo mismo con todas poniendo los nombres de los campos.

esto te combiene hacerlo al principio de todo asi ya quedan listas y no tenes problemas, bueno esto es lo que yo veo fijate si te sirve el script, y espero haverte sido de ayuda.
un saludo
  #13 (permalink)  
Antiguo 08/03/2010, 17:16
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: No comprueba las condiciones

Muchas gracais por tu respuesta, si hago la conexiona la db, de todas forma probé tu script adaptondolo a mi konexion y pasa lo mismo, no llega a comprobar las filas y no sé por qué. Agrega y agrega sin comprobar que ya existe. La sentencia sql si muestra datos y recoge del form, lo que no sale es esto:

$fila["denominacion"]

a pesar de acerlo de forma correcta no saca esa info, pero si la ejecuta en phpmyadmin si lo saca...que pasa?
  #14 (permalink)  
Antiguo 10/03/2010, 02:53
 
Fecha de Ingreso: diciembre-2009
Ubicación: entre Ibiza y Barcelona :)
Mensajes: 92
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: No comprueba las condiciones

Av er vayamos pasito a pasito...

la variable $denominacion donde la estas recogiendo? porque yo veo que la estas comparando pero en ningun lado sale que recojas esa variable, quizas por hay esta el problema,
porque comparar la variable denominacion con $fila['denominacion'], pero si en ningun sitio la tienes declarada no te va a recoger nada ni comparar nada.
__________________
La mujer salió de la costilla del hombre,no de los pies para ser pisoteada,sino del lado para ser igual...Debajo del brazo para ser protegida y al lado del corazón para ser Amada...
  #15 (permalink)  
Antiguo 10/03/2010, 11:25
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: No comprueba las condiciones

Eso,como , de donde recoge la variable???

Etiquetas: condiciones
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 22:14.