Foros del Web » Programando para Internet » PHP »

Controlar existencia de un dato, sino agregarlo

Estas en el tema de Controlar existencia de un dato, sino agregarlo en el foro de PHP en Foros del Web. Hola amigos del foro.. les cuento el problema que estoy teniendo.. En el codigo: http://pastebin.com/SvvKrnEd en la linea 62 hago un control de la existencia ...
  #1 (permalink)  
Antiguo 06/03/2010, 19:36
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Controlar existencia de un dato, sino agregarlo

Hola amigos del foro.. les cuento el problema que estoy teniendo..

En el codigo:

http://pastebin.com/SvvKrnEd

en la linea 62 hago un control de la existencia de un registro en mi tabla del mysql. La idea es que, de existir, usar ese dato para insertarlo en otra tabla, y de no existir, ingresarlo y luego usarlo para insertarlo en la otra tabla..

Para eso, hice un control en la linea 67 y luego otro en la linea 74, pero no estoy teniendo suerte.. en $query siempre me vuelve Resource #id7 cuando lo pregunto por primera vez y Resource #id8 si entra al bucle del insert..

Alguien me puede dar una mano por favor? Mil gracias!
  #2 (permalink)  
Antiguo 06/03/2010, 20:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

Te sugiero que escribas el código que usaste para que te puedan ayudar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 06/03/2010, 21:01
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Cita:
Iniciado por Megcapkill Ver Mensaje
Hola amigos del foro.. les cuento el problema que estoy teniendo..

En el codigo:

http://pastebin.com/SvvKrnEd


en la linea 62 hago un control de la existencia de un registro en mi tabla del mysql. La idea es que, de existir, usar ese dato para insertarlo en otra tabla, y de no existir, ingresarlo y luego usarlo para insertarlo en la otra tabla..

Para eso, hice un control en la linea 67 y luego otro en la linea 74, pero no estoy teniendo suerte.. en $query siempre me vuelve Resource #id7 cuando lo pregunto por primera vez y Resource #id8 si entra al bucle del insert..

Alguien me puede dar una mano por favor? Mil gracias!
Ahi esta el codigo completo amigo, son 300 lineas :P No puedo ponerlas en el post xD
  #4 (permalink)  
Antiguo 06/03/2010, 21:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

Entendí que ese es el código que tomaste de ejemplo, me refiero al que hayas modificado, no el que está publicado en esa página.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 06/03/2010, 21:11
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Ese es el codigo que yo hice, no lo tome de ningun lado, pastebin es un sitio web que te permite pegar tu codigo para que otros puedan verlo xD

Mi codigo es el que ves en ese link :P
  #6 (permalink)  
Antiguo 06/03/2010, 21:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

¿Y si usas mysql_num_rows para saber cuantas filas hay en vez de usar empty?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 06/03/2010, 21:19
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Si, lo probe asi y siempre me da 0, lo cual no me ayuda mucho, porque tambien da 0 cuando le ingreso algun valor que yo se que existe porque lo ingrese manualmente en el mysql desde phpmyadmin..

Probe con fetch array con num rows con empty con == 0.. La verdad que ya no me queda con que probar..

El problema que tengo es que el query me devuelve la variable de manejo interna Resource #7 o #8, yo necesito el numero que trae el campo.. y no he logrado obtenerlo, simempre me viene como vacio el query.. No entiendo que esta pasando :(
  #8 (permalink)  
Antiguo 06/03/2010, 21:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

Si te trae 0 es porque la consulta (SELECT....) hay una comparación en la clausula de WHERE que no se cumple y por lo tanto no te trae el resultado debido. Verifica que estés buscando correctamente en cada una de esta parte
Código MySQL:
Ver original
  1. WHERE IdMateria = '$idMateria' AND IdProfesor = '$idProfesor' AND Anio = '$idAno' AND Modulo = '$idModulo'"
Verifica que todas las variables reciben datos y comparando con lo que tienes en la base de datos se cumplan cada una de ellas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 06/03/2010, 21:32
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Si, lo se, eso lo controle, los nombres de los campos estan bien y los de las variables tambien :S

Ademas, la idea del codigo en esa parte es que te hace el select, y si efectivamente le vuelve vacio, inserta el registro que busco y no estaba.. por eso es que deberia existir en el segundo select que es identico al primero.. yo le tengo mis dudas al insert, para mi que es ahi donde esta fallando, pero tengo otros inserts identicamente iguales a esos en otras paginas del mismo proyecto que funcionan bien..

Una pregunta.. influye en algo que cada vez que actualizo la pagina abro la base de datos pero solo la cierro la ultima vez? O sea.. no importa que no la cierre cada vez que la abro la conexion? Porque el abrirbd.php esta afuera del if y el cerrar esta dentro, por lo que solo la cierra a veces..
  #10 (permalink)  
Antiguo 06/03/2010, 21:37
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

En este trozo del codigo es donde tiene que estar el error.. pero no puedo ver porque.. creo que es el insert.. pero no logro ver que tiene mal

Código PHP:
        if (empty($control)) {
            
$m mysql_query("INSERT INTO Clases (IdMateria, IdProfesor, Anio, Modulo) VALUES ('$idMateria', '$idProfesor', '$idAno', '$idModulo'");
            
$query mysql_query("SELECT IdClase FROM Clases WHERE IdMateria = '$idMateria' AND IdProfesor = '$idProfesor' AND Anio = '$idAno' AND Modulo = '$idModulo'");

            echo 
'Hola';
        }
        
        
$IdClase mysql_num_rows($query);
        echo 
$IdClase
  #11 (permalink)  
Antiguo 06/03/2010, 21:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

Usa la función de mysql_error para ver si es un error en el insert.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 06/03/2010, 22:05
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Hola.. puse la funcion y efectivamente da error

Código PHP:
        if (empty($control)) {
            
$m "INSERT INTO Clases (IdMateria, IdProfesor, Anio, Modulo) VALUES ('$idMateria', '$idProfesor', '$idAno', '$idModulo'";
            
$r mysql_query($m) or die ('Error: '.mysql_error());
            
$query mysql_query("SELECT IdClase FROM Clases WHERE IdMateria = '$idMateria' AND IdProfesor = '$idProfesor' AND Anio = '$idAno' AND Modulo = '$idModulo'");

            echo 
'Hola';
        } 
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Lo que me resulta raro, y por eso yo habia descartado la psibilidad de una es que este codigo que esta en otro lado de mi proyecto

Código PHP:
            $query "INSERT INTO Materias (Materia) VALUES ('$materia')";    
            
mysql_query($query) or die ('No se pudo agregar la materia: '.mysql_error());
            echo 
'La materia ha sido agregado correctamente.'
Funciona perfectamente.. y a mis novatos ojos, estan iguales :(

Gracias por responder! :D
  #13 (permalink)  
Antiguo 06/03/2010, 22:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

No estas cerrando el parentesis de VALUE
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 06/03/2010, 22:19
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Uh genial! Jeje.. por buscarle la quinta pata al gato :P

Ahora el insert funciona :D Lo que faltaria es poder obtener el IdClase que viene en el select.. porque si hago un print del select me sale Resource id#7

Con fetch_array no sirve verdad?
  #15 (permalink)  
Antiguo 06/03/2010, 22:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 12 años, 2 meses
Puntos: 1517
Respuesta: Controlar existencia de un dato, sino agregarlo

Con fetch_array y con fetch_assoc funciona.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #16 (permalink)  
Antiguo 06/03/2010, 22:25
 
Fecha de Ingreso: abril-2007
Ubicación: Tandil, Bs As, Argentina
Mensajes: 106
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Controlar existencia de un dato, sino agregarlo

Ya esta:

Código PHP:
$IdClase mysql_result ($query0"IdClase"); 
Miles de gracias amigo, la verdad es que esta bueno tener un par de ojos frescos que te miren un poco el codigo.. porque uno que lo hace por ahi cuando lo lee para revisra saltea cosas y se como errores tontos como ese del parentesis..

Mil gracias nuevamente. Tema resuelto :D

Etiquetas: controlar, dato
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 04:10.