Foros del Web » Programando para Internet » PHP »

Problema con esta consulta

Estas en el tema de Problema con esta consulta en el foro de PHP en Foros del Web. Hola amigos, tengo una duda, la cuestion es que quiero mostrar en un echo el id autonumerico de una tabla de la bd. Tengo dos ...
  #1 (permalink)  
Antiguo 05/11/2010, 21:26
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Problema con esta consulta

Hola amigos, tengo una duda, la cuestion es que quiero mostrar en un echo el id autonumerico de una tabla de la bd.
Tengo dos tablas que tienen un mismo campo, por el cual podria hacer la comparacion y averiguar el numero de ese id. pero al hacer el echo me aparece vacio, y me dice "mysql_num_rows() expects parameter 1 to be resource, boolean given in..."

asi lo estoy haciendo yo
Código PHP:
Ver original
  1. <?php $rs0_query=mysql_query("Select * from question,answer  where question.questionid=answer.questionid  and questionid =" .$_REQUEST["idPreg"]);$rs0=mysql_num_rows($rs0_query);  echo $rs0_query["answerid"]?>

el numero del request lo obtengo de la url.


que puede ser???????
  #2 (permalink)  
Antiguo 05/11/2010, 21:32
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

Hola
ehm, y donde esta la conexión a la bd?
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 05/11/2010, 21:35
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

mas arriba en el archivo en un include
  #4 (permalink)  
Antiguo 05/11/2010, 21:36
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

descartado eso entonces

por otra parte, tienes esto

Código PHP:
Ver original
  1. $rs0_query['answerid']

pero eso (el $rs0_query) es un result,
no un elemento que contiene los campos,
debes antes hacer uso de otra variable
donde asignes por ej el mysql_fetch_assoc de $rs0_quer

ej

Código PHP:
Ver original
  1. $datos = mysql_fetch_assoc($rs0_query);
  2. echo $datos['answerid'];
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 05/11/2010, 21:40
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

hice lo que me dijiste pero no pasa nada, sigue tirando el mismo problema
  #6 (permalink)  
Antiguo 05/11/2010, 21:45
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

intenta haciendo un echo al query desde php

Código PHP:
"Select * from question,answer  where question.questionid=answer.questionid  and questionid =" .$_REQUEST["idPreg"
y luego copia el query y pegalo en phpmyadmin
o la interfaz que uses para consultar directamente
a mysql y corre el query

por otro lado, tal vez tengas ambiguedad de questionid en el AND
ponle que sea de una tabla (cualquiera de las 2)
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 05/11/2010, 21:57
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

en el phpmyadmin haciendo la consulta me dice Column 'questionid' in where clause is ambiguous
  #8 (permalink)  
Antiguo 05/11/2010, 22:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

Cita:
Iniciado por den_22 Ver Mensaje
en el phpmyadmin haciendo la consulta me dice Column 'questionid' in where clause is ambiguous
eso es precisamente lo que te dije
ya tienes la info para corregirlo

Cita:
Iniciado por mortiprogramador Ver Mensaje
por otro lado, tal vez tengas ambiguedad de questionid en el AND
ponle que sea de una tabla (cualquiera de las 2)
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 05/11/2010, 22:06
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

aún diciendole cual es la que quiero usar es decir:
Código PHP:
Ver original
  1. answer.questionid =" .$_REQUEST["idPreg"]);
no anda correctamente

tengo 2 tablas question y answer

en answer quiero obtener el numero de answerid que es autonumerico, por eso hago el join con question, y utilizo el campo questionid, que es igual en las dos tablas.
  #10 (permalink)  
Antiguo 05/11/2010, 22:11
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

Cita:
Iniciado por den_22 Ver Mensaje
aún diciendole cual es la que quiero usar es decir:
Código PHP:
Ver original
  1. answer.questionid =" .$_REQUEST["idPreg"]);
no anda correctamente

tengo 2 tablas question y answer

en answer quiero obtener el numero de answerid que es autonumerico, por eso hago el join con question, y utilizo el campo questionid, que es igual en las dos tablas.
entonces no me quedan más que 2 opciones

1. adivinar que tienes en tus archivos (pues al parecer la bd esta bien)
2. que tu postees todos los archivos involucrados, y de ser
posible el código de todos los involucrados

así que, el problema (tuyo, no mío) es elección
por si las moscas, revisa en el archivo
de configuración que la conexión este correcta
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 05/11/2010, 23:25
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: Problema con esta consulta

A ver, estoy un poquito oxidado con sentencias MYSQL (es lo que tiene usar ORM, ejejeje), pero por lo que recuerdo, la sentencia que buscas es:

Código:
SELECT * FROM question JOIN answer ON question.questionid = answer.questionid WHERE question.questionid = $id
Creo que te podría salir error porque el segundo AND que ponías la declaración era ambigua, es decir, el nombre questionid, sin especificar tabla no hace referencia a ningún campo que pertenezca a una tabla, es decir, questionid es un campo de ambas.

Lo correcto sería poner WHERE questionid.questionid = $id

Espero que te funcione, sino ya sabes, aquí estamos.

Un saludo y a programar!!
  #12 (permalink)  
Antiguo 06/11/2010, 10:28
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

Hola, bueno consegui que se muestre el userid lo hice de esta forma:
Código PHP:
Ver original
  1. $rs2=mysql_query("SELECT * FROM answer JOIN usuarios ON answer.userid = usuarios.id WHERE answer.questionid=".$_REQUEST["idPreg"]." and answer.userid=$nameid ");  
  2. $rs1=mysql_num_rows($rs2);

Ahora el tema, es que tengo que hacer un while para mostrar esto
Código PHP:
Ver original
  1. <li><a href="votar.php?valor=1&idanswer=<?php echo $rs1["answerid"];?>" title="1 Punto">1</a></li>
  2.  
  3.     <li><a href="votar.php?valor=2&idanswer=<?php echo $rs1["answerid"];?>" title="2 Puntos">2</a></li>
  4.     <li><a href="votar.php?valor=3&idanswer=<?php echo $rs1["answerid"];?>" title="3 Puntos">3</a></li>
  5.     <li><a href="votar.php?valor=4&idanswer=<?php echo $rs1["answerid"];?>"  title="4 Puntos">4</a></li>
  6.     <li><a href="votar.php?valor=5&idanswer=<?php echo $rs1["answerid"]; ?>" title="5 Puntos">5</a></li>

Pero el problema es que al cerrar el while despues de que termine la div que contiene esos links, se me repite entre una y dos veces todo.

Como hago?
  #13 (permalink)  
Antiguo 06/11/2010, 11:13
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

Cita:
Iniciado por den_22 Ver Mensaje
Hola, bueno consegui que se muestre el userid lo hice de esta forma:
Código PHP:
Ver original
  1. $rs2=mysql_query("SELECT * FROM answer JOIN usuarios ON answer.userid = usuarios.id WHERE answer.questionid=".$_REQUEST["idPreg"]." and answer.userid=$nameid ");  
  2. $rs1=mysql_num_rows($rs2);

Ahora el tema, es que tengo que hacer un while para mostrar esto
Código PHP:
Ver original
  1. <li><a href="votar.php?valor=1&idanswer=<?php echo $rs1["answerid"];?>" title="1 Punto">1</a></li>
  2.  
  3.     <li><a href="votar.php?valor=2&idanswer=<?php echo $rs1["answerid"];?>" title="2 Puntos">2</a></li>
  4.     <li><a href="votar.php?valor=3&idanswer=<?php echo $rs1["answerid"];?>" title="3 Puntos">3</a></li>
  5.     <li><a href="votar.php?valor=4&idanswer=<?php echo $rs1["answerid"];?>"  title="4 Puntos">4</a></li>
  6.     <li><a href="votar.php?valor=5&idanswer=<?php echo $rs1["answerid"]; ?>" title="5 Puntos">5</a></li>

Pero el problema es que al cerrar el while despues de que termine la div que contiene esos links, se me repite entre una y dos veces todo.

Como hago?
Pues yo aún no tengo el poder de la adivinación,
que tal si pones el código?
por otro lado, sería genial que expliques
que es lo que se quiere lograr, pues dando
palos con los ojos vendados sobre una piñata
con movimiento es algo complicado acertar
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #14 (permalink)  
Antiguo 06/11/2010, 11:36
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

Si, disculpá, acá lo pongo este es todo el archivo:
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <?php
  5. error_reporting(E_ALL ^ E_NOTICE);
  6. session_name('bpLogin');
  7. include "connect.php";
  8.  
  9.     if($_SESSION['usuario'] == '' && !isset($_SESSION['usuario'])) {
  10.         header("location:index.php");
  11.     }
  12. $id=$_SESSION["id"];
  13. $usuario=$_SESSION["usuario"];
  14.  
  15. $sql = "SELECT * FROM question WHERE questionid = " .$_REQUEST["idPreg"]." ";  
  16.     $result = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  17.    
  18.      
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.    
  26. while ($rowCom=mysql_fetch_assoc($result)){
  27.  
  28. $questionid=$rowCom["questionid"];
  29.  
  30.  
  31. ?>
  32. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  33. <title>responder pregunta</title>
  34. <link href="index.css"  rel="stylesheet" type="text/css" />
  35. <link href="responderpregunta.css" rel="stylesheet" type="text/css" />
  36. <link rel="stylesheet" type="text/css" media="screen" href="css/stylesheet.css" />
  37. <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
  38. <script type="text/javascript" src="js/rating.js"></script>
  39. <link rel="stylesheet" type="text/css" href="rating.css" />
  40.  
  41. <style type="text/css">
  42. <!--
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. -->
  50. </style>
  51. <SCRIPT>
  52. function contar(form,name) {
  53.   n = document.forms[form][name].value.length;
  54.   t = 700;
  55.   if (n > t) {
  56.     document.forms[form][name].value = document.forms[form][name].value.substring(0, t);
  57.   }
  58.   else {
  59.     document.forms[form]['result'].value = t-n;
  60.   }
  61. }
  62. </script>
  63. </head>
  64. <script type="text/JavaScript">
  65. <!--
  66. function MM_swapImgRestore() { //v3.0
  67.   var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
  68. }
  69.  
  70. function MM_preloadImages() { //v3.0
  71.   var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
  72.     var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
  73.     if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
  74. }
  75.  
  76. function MM_findObj(n, d) { //v4.01
  77.   var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
  78.     d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  79.   if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  80.   for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  81.   if(!x && d.getElementById) x=d.getElementById(n); return x;
  82. }
  83.  
  84. function MM_swapImage() { //v3.0
  85.   var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  86.    if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
  87. }
  88.  
  89.  
  90. //-->
  91. </script>
  92.  
  93. <body>
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109. <div id="panel_usuario"><div class="breadcrumb">
  110.   <span class="left"></span>
  111.     <ul>
  112.  
  113.       <li><a href="index.php" class="active">Inicio</a></li>
  114.       <li><a href="panel.php?user=<?php echo $_SESSION[id]; ?>" >Volver a "Mi Cuenta"</a></li>
  115.      
  116. </ul>
  117.   <span class="right"></span></div></div>
  118.  
  119.  
  120. <body onload="MM_preloadImages('image/logosus.png')">
  121. <div id="logo"><a href="index.php" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image1','','images/logosus.png',1)"><img src="images/logo.png" name="Image1" border="0" id="Image1" /></a></div>
  122. <div id="cuadro_panel_1"></div>
  123. <div id="res_preg"></div>
  124. <div id="cont_pregunta">
  125. <form action="respuestapregunta.php?idPreg=<?php echo $_REQUEST['idPreg']; ?>" method="post" name="cont_preg">
  126. <div id="titulo_resp"></div>
  127. <div id="cont_pregunta_resp"><?php echo $rowCom["question_text"];?></div>
  128.  
  129. <div id="cont_respond"><textarea name="txtans" cols="50" rows="9,5"  onkeydown="contar('cont_preg','txtans')" onKeyUp="contar('cont_preg','txtans')" id="txtans" style="background-image:url(images/turesp.png); border:none; background-repeat: repeat; font-family:Arial, Helvetica, sans-serif;"></textarea></div>
  130. <div id="cont_caract">
  131.   <INPUT name=result value=700 size="3" readonly="true"></div>
  132.   <div id="id_cont" ><input type="hidden" name="idPreg" id="idPreg" value="<?php echo $_REQUEST['idPreg'];?>"  /></div>
  133.  
  134. <div id="responder_cont"><input type="submit"  name="respreg" value="Responder" class="bt_login" style="background:url(images/responder.png); width:153px; height:35px; font-weight:bold; font-family:bubbleboddy, 'bubbleboddy light';font-size:18px; border:none; color:#FFFFFF" /></div>
  135.  
  136. </form>
  137. </div>
  138. <?php } ?>
  139. <?php $sql = "SELECT answer_text,questionid,userid  FROM answer WHERE questionid=" .$_REQUEST["idPreg"]."";  
  140.     $res = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  141. ?>
  142.  
  143. <div id="mostrarresp">
  144.  
  145. <?php while ($rs0=mysql_fetch_assoc($res)){ $nameid=$rs0["userid"];  
  146. $rs2=mysql_query("SELECT * FROM answer JOIN usuarios ON answer.userid = usuarios.id WHERE answer.questionid=".$_REQUEST["idPreg"]." and answer.userid=$nameid ");  
  147. $rs1=mysql_num_rows($rs2);
  148.  
  149.  
  150. ?>
  151. <div class="respuestas"><hr /><?php  echo nl2br( $rs0["answer_text"]); ?></div>
  152. <div class="de">Respondido por [<?php $to_name=mysql_fetch_array(mysql_query("select * from usuarios where id=$nameid")); echo $to_name["usuario"]; echo $to_name["id"]; ?>] <p style="color: #000000; font-family:Verdana; font-size:12px;">Votar respuesta<?php while ($rs1=mysql_fetch_array($rs2)) { ?><ul class="rating">
  153.     <li><a href="votar.php?valor=1&idanswer=<?php echo $rs1["answerid"];?>" title="1 Punto">1</a></li>
  154.  
  155.     <li><a href="votar.php?valor=2&idanswer=<?php echo $rs1["answerid"];?>" title="2 Puntos">2</a></li>
  156.     <li><a href="votar.php?valor=3&idanswer=<?php echo $rs1["answerid"];?>" title="3 Puntos">3</a></li>
  157.     <li><a href="votar.php?valor=4&idanswer=<?php echo $rs1["answerid"];?>"  title="4 Puntos">4</a></li>
  158.     <li><a href="votar.php?valor=5&idanswer=<?php echo $rs1["answerid"]; ?>" title="5 Puntos">5</a></li>
  159. </ul>
  160. <?php } ?>
  161. </div>
  162.  
  163. <?php
  164. echo '<br/>';
  165. }
  166.  ?>
  167.  
  168.  </div>
  169.  
  170.  
  171.  
  172.  
  173. </body>
  174. </html>


Lo que se me repite, son los <li> de votar. me aparecen dos veces debajo de la respuesta
  #15 (permalink)  
Antiguo 06/11/2010, 11:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con esta consulta

uhm, pues así a primera vista pregunto, es necesario
tener el segundo while dentro del primero?
has intentado hacer el segundo while (el interno)
fuera del primero?

si la respuesta es false, entonces intentalo,
y si necesitas algún dato del primer while para
recorrer el segundo, entonces guarda los datos que
necesitas en un array y luego usa ese array en el
segundo while

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #16 (permalink)  
Antiguo 06/11/2010, 12:30
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

Intenté cambiarlo, es decir cerrar el primer while antes que el otro, pero ya de esa forma, no muestra bien los resultados.

seguiré intentando, gracias por los consejos.


Ahora una pregunta, el problema se genera es decir, inicio el segundo while porque necesito que el dato de $rs1["answerid"] se muestre en los <li> habrá otra forma, para no tener que iniciar el while ?

de acá lo genero

$rs2=mysql_query("SELECT * FROM answer JOIN usuarios ON answer.userid = usuarios.id WHERE answer.questionid=".$_REQUEST["idPreg"]." and answer.userid=$nameid ");
$rs1=mysql_num_rows($rs2);

pero si yo hago un echo sin poner el while no me muestra los datos separados.

saludos

Última edición por den_22; 06/11/2010 a las 12:41
  #17 (permalink)  
Antiguo 06/11/2010, 13:18
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con esta consulta

Ya lo resolví, muchas gracias, y disculpas.

hice lo que me dijiste

saludos.

Etiquetas: Ninguno
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 05:46.