Foros del Web » Programando para Internet » PHP »

consulta a BD no funciona

Estas en el tema de consulta a BD no funciona en el foro de PHP en Foros del Web. buenas tengo un problema con un código, y quería solicitar colaboración ya que no se como arreglarlo. tengo una base de datos con dos tablas. ...
  #1 (permalink)  
Antiguo 07/11/2011, 16:20
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
consulta a BD no funciona

buenas tengo un problema con un código, y quería solicitar colaboración ya que no se como arreglarlo.



tengo una base de datos con dos tablas.

tabla 1 user
Contenido:
iduser / username /

tabla 2 pj

Contenido:
idpj / pjname / iduser / pjactivate



al crear el contenido de user:

id: 1, user: usuario1

automáticamente se crea en la tabla pj

id: 1, pj activate: 0
y deja los demás valores en blanco se supone que ambos id son igual,
el problema es que al hacer la siguiente comprobación o consulta:


Código PHP:
    $sql="SELECT pjactivate FROM pj WHERE id='$iduser'";
    
$checkactivate mysql_query($sql);
    if (
mysql_num_rows($checkactivate)>0){
    echo 
"Ya tienes un Personaje.<br>";
    }else{echo 
"Continuar con la creación.<br>";} 
el codigo me arroja que el personaje ya esta activado, lo que yo quiero es que si el valor es 0 indique que no esta activado, alguien me puede indicar como se aria? gracias por sus comentarios y aportes.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #2 (permalink)  
Antiguo 07/11/2011, 16:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: consulta a BD no funciona

Lo que pasa es que tu estas comparando el número de resultados, si lo que quieres ver es el resultado de tu query (en este caso la columna pjactivate), tienes que usar mysql_fetch_array() para extraer el resultado y posteriormente evaluar ese resultado.

Saludos.
  #3 (permalink)  
Antiguo 07/11/2011, 21:53
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

como serial el código seria algo así entonces el código:?
lo que necesito es saber el valor exacto guardado en pjactivate
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #4 (permalink)  
Antiguo 07/11/2011, 22:08
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: consulta a BD no funciona

Haz ésto y tendrás la respuesta:
Código PHP:
Ver original
  1. $res = mysql_fetch_array($checkactivate);
  2. echo '<pre>'.print_r($res, true).'</pre>';
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 07/11/2011, 22:22
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: consulta a BD no funciona

Cita:
Iniciado por arcanisgk122 Ver Mensaje
como serial el código seria algo así entonces el código:?
lo que necesito es saber el valor exacto guardado en pjactivate
Hola,

Lo que comenta GatorV, es que mysql_num_rows te va a devolver un valor numérico, esta función devuelve el número de filas que coinciden con la consulta.
Y si lo que quieres es comparar el contenido tienes que extraerlo con mysql_fetch_array, que si traerá el contenido de la Db en el caso de que la consulta coincida con los valores guardados.

Por ejemplo así:
Código PHP:
$sql="SELECT pjactivate FROM pj WHERE id='$iduser'";

$checkactivate mysql_query($sql);

// compruebas el número de resultados
if ( mysql_num_rows($checkactivate) > )

    
// tomas los valores de la DB
    
$row mysql_fetch_array($sql);
    
// comparas el nombre con el resultado de la db
    
if ( $nombre_a_comparar == $row['pjactivate'] )
    {
        echo 
"Ya tienes un Personaje.<br>"
    }
    else
    {
        echo 
"Continuar con la creación.<br>";
    }
}
else
{
    echo 
"Continuar con la creación.<br>";

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #6 (permalink)  
Antiguo 08/11/2011, 10:22
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

seria así entonces?

Cita:
if ($row['pjactivate'] == 1 ){
echo "Ya tienes un Personaje.<br>";
}else{
echo "Continuar con la creación.<br>";
}
si el valor contenido en pjactivate es igual a 1 entonces el personaje existe y si es diferente a 1 continuar con la creación.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #7 (permalink)  
Antiguo 08/11/2011, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: consulta a BD no funciona

Intentalo y ve que es lo que te sale...
  #8 (permalink)  
Antiguo 10/11/2011, 11:26
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

bueno al parecer no me funciono del todo bien presento los inconvenientes y pongo el código original:


Código Original php:

Código PHP:
    include("config/config.php");
    
$link mysql_connect ($dbhost$dbusername$dbuserpass);
    
mysql_select_db($dbname,$link) or die('No se puede seleccionar la base de datos<br>');
    echo 
"buscamos si existe un personaje terminado, o alguno con el nombre identico<br>";
    
$sql="SELECT activate FROM pj WHERE id='$idduen'";
    
$row mysql_fetch_array($sql);
    if (
$row['activate'] == ){
            echo 
"<br>";
            echo 
"Ya tienes un Personaje.<br>";
            echo 
"Si desea mas de un personaje por favor Comuniquese con Icaro Net S.A .<br> <br>";
            echo 
"Si tiene algun problema en crear su Personaje por favor enviar un correo a [email protected].<br>";
            echo 
"<a href=\"play.php\">Click para Continuar</a>";
    }else{
        echo 
"Continuar con la creación.<br>";
        
$sql="SELECT namepj FROM pj WHERE id='$idduen'";
        
$row mysql_fetch_array($sql);
        if (
$row['namepj'] == $namepj){
            echo 
"<br> <br> <br> <br>";
            echo 
"El nombre de Personaje ya esta ya en uso.<br>";
            echo 
"Utilice otra Nombre de Personaje.<br>";
            echo 
"Si tiene algun problema en crear su Personaje por favor enviar un correo a [email protected].<br>";
            echo 
"<a href=\"atyinpers.php\">Click para Continuar</a>";
        }else{ 
warning en:

Código PHP:
$row mysql_fetch_array($sql); 
se repite 2 veces no por erros simplemente por que necesitaba hacer 2 veces lo mismo o parecido.

Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/zxq.net/g/e/n/genesis1/htdocs/nchar.php on line 427
Continuar con la creación.

ahora al final tengo una sentencia:

Cita:
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 'WHERE id='1'' at line 1
no entiendo el error... en la linea 1 no esta eso...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #9 (permalink)  
Antiguo 10/11/2011, 11:30
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

alguna idea me huele a que el error puede estar aqui pero no lo detecto:

Cita:
mysql_query("UPDATE pj SET activate ='{$activate}', namepj = '{$namepj}', nduen ='{$nduen}', idduen ='{$idduen}', raza = '{$raza}', prof = '{$prof}', hibrid = '{$hibrid}', sexo ='{$sexo}', edad = '{$edad}', apa ='{$apa}', orig ='{$orig}', orsec ='{$orsec}', apa ='{$apa}', pfrs ='{$pfrs}', pdes ='{$pdes}', psab ='{$psab}', pvig ='{$pvig}', pesp ='{$pesp}', frs ='{$frs}', des ='{$des}', sab ='{$sab}', vig ='{$vig}', esp ='{$esp}', fat ='{$fat}', dan1 ='{$dan1}', dan2 ='{$dan2}', dan3 ='{$dan3}', dan4 ='{$dan4}', bon1 ='{$bon1}', bon2 ='{$bon2}', bon3 ='{$bon3}', bon4 ='{$bon4}', bonext1 ='{$bonext}', bonext2 ='{$bonext}', bonext3 ='{$bonext}', bonext4 ='{$bonext}', vida ='{$vida}', mana ='{$mana}', bvida1 ='{$bvi}', bvida2 ='{$bvida}', bvida3 ='{$bvida}', bmana1 ='{$bma}', bmana2 ='{$bmana}', bmana3 ='{$bmana}', carga ='{$carga}', vbasica ='{$vbasica}', esq ='{$esq}', parr ='{$parr}', bloq ='{$bloq}', tecn ='{$tecn}', hab1 ='{$hab1}', hab2 ='{$hab2}', hab3 ='{$hab3}', hab4 ='{$hab4}', hab5 ='{$hab5}', hab6 ='{$hab6}', hab7 ='{$hab7}', hab8 ='{$hab8}', hab9 ='{$hab9}', hab10 ='{$hab10}', hab11 ='{$hab11}', hab12 ='{$hab12}', hab13 ='{$hab13}', hab14 ='{$hab14}', hab15 ='{$hab15}', hab16 ='{$hab16}', hab17 ='{$hab17}', hab18 ='{$hab18}', hab19 ='{$hab19}', hab20 ='{$hab20}', hab21 ='{$hab21}', hab22 ='{$hab22}', hab23 ='{$hab23}', hab24 ='{$hab24}', habd1 ='{$habd}', habd2 ='{$habd}', habd3 ='{$habd}', habd4 ='{$habd}', habd5 ='{$habd}', habd6 ='{$habd}', habd7 ='{$habd}', habd8 ='{$habd}', habd9 ='{$habd}', habd10 ='{$habd}', habd11 ='{$habd}', habd12 ='{$habd}', habd13 ='{$habd}', habd14 ='{$habd}', habd15 ='{$habd}', habd16 ='{$habd}', habd17 ='{$habd}', habd18 ='{$habd}', habd19 ='{$habd}', habd20 ='{$habd}', habd21 ='{$habd}', habd22 ='{$habd}', habd23 ='{$habd}', habd24 ='{$habd}', fuego ='{$fuego}', hielo ='{$hielo}', agua ='{$agua}', viento ='{$viento}', tierra ='{$tierra}', arcana ='{$arcana}', luz ='{$luz}', sombras ='{$sombras }', tiempo ='{$tiempo}', energia ='{$energia}', mente ='{$mente}', conti ='{$conti}', mazmo ='{$mazmo}', cty ='{$cty}', mapax ='{$mapax}', mapay ='{$mapay}', mapaz ='{$mapaz}', crist ='{$crist}', gemi ='{$gemi}', oro ='{$oro}', plat ='{$plat}', cob ='{$cob}', obj1 ='{$obj1}', obj2 ='{$obj2}', obj3 ='{$obj3}', bag1 ='{$bag1}', bag2 ='{$bag2}', bag3 ='{$bag3}', bag4 ='{$bag4}', bag5 ='{$bag5}', arm1 ='{$arm1}', arm2 ='{$arm2}', arm3 ='{$arm3}', arm4 ='{$arm4}', arm5 ='{$arm5}', arm6 ='{$arm6}', arm7 ='{$arm7}', arm8 ='{$arm8}', arm9 ='{$arm9}', arm10 ='{$arm10}', arm11 ='{$arm11}', arm12 ='{$arm12}', arm13 ='{$arm13}', arm14 ='{$arm14}', arm15 ='{$arm15}', arm16 ='{$arm16}', sp1 ='{$sp1}', sp2 ='{$sp1}', sp3 ='{$sp1}', sp4 ='{$sp1}', sp5 ='{$sp1}', sp6 ='{$sp1}', sp7 ='{$sp1}', sp8 ='{$sp1}', sp9 ='{$sp1}', sp10 ='{$sp1}', atr ='{$atr}', secu ='{$secu}', WHERE id='$idduen'",$link);
$my_error = mysql_error($link);
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #10 (permalink)  
Antiguo 10/11/2011, 12:09
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

listo arregle todo los errores solo falta los warning a ver alguien me colabora con ellos

Código Original php:

Código PHP:
    include("config/config.php");
    
$link mysql_connect ($dbhost$dbusername$dbuserpass);
    
mysql_select_db($dbname,$link) or die('No se puede seleccionar la base de datos<br>');
    echo 
"buscamos si existe un personaje terminado, o alguno con el nombre identico<br>";
    
$sql="SELECT activate FROM pj WHERE id='$idduen'";
    
$row mysql_fetch_array($sql);
    if (
$row['activate'] == ){
            echo 
"<br>";
            echo 
"Ya tienes un Personaje.<br>";
            echo 
"Si desea mas de un personaje por favor Comuniquese con Icaro Net S.A .<br> <br>";
            echo 
"Si tiene algun problema en crear su Personaje por favor enviar un correo a [email protected].<br>";
            echo 
"<a href=\"play.php\">Click para Continuar</a>";
    }else{
        echo 
"Continuar con la creación.<br>";
        
$sql="SELECT namepj FROM pj WHERE id='$idduen'";
        
$row mysql_fetch_array($sql);
        if (
$row['namepj'] == $namepj){
            echo 
"<br> <br> <br> <br>";
            echo 
"El nombre de Personaje ya esta ya en uso.<br>";
            echo 
"Utilice otra Nombre de Personaje.<br>";
            echo 
"Si tiene algun problema en crear su Personaje por favor enviar un correo a [email protected].<br>";
            echo 
"<a href=\"atyinpers.php\">Click para Continuar</a>";
        }else{ 
warning en:

Código PHP:
$row mysql_fetch_array($sql); 
se repite 2 veces no por errores simplemente por que necesitaba hacer 2 veces lo mismo o parecido.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #11 (permalink)  
Antiguo 10/11/2011, 12:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: consulta a BD no funciona

En tu query, justo antes del WHERE tienes una coma de más, eso es lo que te marca el error.

Saludos.
  #12 (permalink)  
Antiguo 10/11/2011, 12:28
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

si eso lo arregle peor me falta el warning:

Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/zxq.net/g/e/n/genesis1/htdocs/nchar.php on line 427
Continuar con la creación.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #13 (permalink)  
Antiguo 10/11/2011, 12:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: consulta a BD no funciona

Imprime el valor de mysql_error() después de llamar a mysql_fetch_array para que veas porque pasa eso.

Saludos.
  #14 (permalink)  
Antiguo 10/11/2011, 12:49
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/zxq.net/g/e/n/genesis1/htdocs/nchar.php on line 428
Error en query: SELECT activate FROM pj WHERE id='2', el error es:
me parece que no lo imprime
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #15 (permalink)  
Antiguo 10/11/2011, 13:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: consulta a BD no funciona

Ah, es que no estas enviando el query, te falta usar mysql_query() para enviar primero el query, y posteriormente usar mysql_fetch_array() para regresar el valor.

Saludos.
  #16 (permalink)  
Antiguo 10/11/2011, 14:57
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

mmm mira el codigo:


Cita:
include("config/config.php");
$link = mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname,$link) or die('No se puede seleccionar la base de datos<br>');
echo "buscamos si existe un personaje terminado, o alguno con el nombre identico<br>";
echo "$idduen";
$sql="SELECT activate FROM pj WHERE id='$idduen'";
$row = mysql_fetch_array($sql) or die( "Error en query: $sql, el error es: " . mysql_error() );
if ($row['activate'] == 1 ){
echo "<br>";
echo "Ya tienes un Personaje.<br>";
echo "Si desea mas de un personaje por favor Comuniquese con Icaro Net S.A .<br> <br>";
echo "Si tiene algun problema en crear su Personaje por favor enviar un correo a [email protected].<br>";
echo "<a href=\"play.php\">Click para Continuar</a>";
}else{
echo "Continuar con la creación.<br>";
$sql="SELECT namepj FROM pj WHERE id='$idduen'";
$row = mysql_fetch_array($sql) or die( "Error en query: $sql, el error es: " . mysql_error() );
if ($row['namepj'] == $namepj){
echo "<br> <br> <br> <br>";
echo "El nombre de Personaje ya esta ya en uso.<br>";
echo "Utilice otra Nombre de Personaje.<br>";
echo "Si tiene algun problema en crear su Personaje por favor enviar un correo a [email protected].<br>";
echo "<a href=\"atyinpers.php\">Click para Continuar</a>";
}else{

no se que este mal.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #17 (permalink)  
Antiguo 10/11/2011, 15:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: consulta a BD no funciona

Como te digo, te falta usar mysql_query, la forma correcta de enviar queries a tu bdd y bajar los resultados es así:
Código PHP:
Ver original
  1. $sql = "SELECT ...";
  2. $result = mysql_query($sql);
  3. $row = mysql_fetch_array($result);
  4. // etc

A ti te falta la segunda parte, enviar a MySQL el query usando mysql_query.

Saludos.
  #18 (permalink)  
Antiguo 10/11/2011, 15:22
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: consulta a BD no funciona

listo funcionando.. gracias GatorV si no hay problema pienso agregarte en los créditos. de lo que estoy asiendo.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Etiquetas: bd, mysql, sql, tabla, usuarios
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 15:17.