Foros del Web » Programando para Internet » PHP »

Query mysql dentro de un bucle de otra query

Estas en el tema de Query mysql dentro de un bucle de otra query en el foro de PHP en Foros del Web. No se si el problema está en el anidado de las dos consultas o en alguna parte del código. Lo que se es que cuando ...
  #1 (permalink)  
Antiguo 06/04/2011, 10:14
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años, 7 meses
Puntos: 0
Query mysql dentro de un bucle de otra query

No se si el problema está en el anidado de las dos consultas o en alguna parte del código. Lo que se es que cuando intento debugear la q que es el valor que estoy buscando no sale nada. Si le hago un echo a la segunda consulta me da algo asi como: Resource id#8.

La primera consulta la hace bien y sin problemas.

Código:
<div id="item-list">
				<? 	
		$result = mysql_query("SELECT * FROM internet_shop WHERE id in (select idproducto from cestas where clave_sesion ='".$_SESSION['id']."')");
		
			if(mysql_num_rows($result)!=0){
				
				while($row=mysql_fetch_assoc($result))
				{
					echo '<table width="100%" id="table_'.$row['id'].'">
					<tr>
					<td width="15%"><img src="admin/uploads/'.$row['img'].'" alt="'.$row['name'].'" width="64" height="64" class="pngfix" /></td>
					<td width="50%">'.$row['name'].'</td>
					<td width="5%">';
				
					$selected=mysql_query("SELECT q FROM cestas WHERE idproducto = ".$row['id']." and idcesta='".$_SESSION['id']."'") or die (mysql_error());
					$row2=mysql_fetch_assoc($selected);
					echo "q: ".$row2->q;
	
					echo '<select name="'.$row['id'].'_cnt" id="'.$row['id'].'_cnt" onchange="change('.$row['id'].');">';
						for($i=1;$i<=5;$i++){
							if($i==$row2['q'])	
								$sel="SELECTED";
							else
								$sel="";
							echo'<option '.$sel.' value="'.$i.'">'.$i.'</option>';
						}
						
					echo'</select>
						</td>
						<td width="10%"><a href="#" onclick="removeb('.$row['id'].');return false;" class="remove">borrar</a></td>
					  </tr>
					</table>';
				}
			}?>
    </div>
P.D.: La conexion a la BD se hace asi:

Código:
$link = mysql_connect($db_host,$db_user,$db_pass,TRUE) or die('Unable to establish a DB connection');

mysql_select_db($db_database,$link);

Última edición por elainemarley85; 06/04/2011 a las 10:31
  #2 (permalink)  
Antiguo 06/04/2011, 10:40
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Query mysql dentro de un bucle de otra query

Hola
  1. $row2=mysql_fetch_assoc($selected); echo "q: ".$row2->q; fetch_assoc devuelve un array asociativo o numerico no un objeto por ende $row2->q no creo que funcione.
  2. Por otro lado en la tabla cestas hay un campo que se llama q? o es un alias si es un alias debe ser Select q as 'cantidad' FROM ......

Eso por ahora seguire revisando ...

Saludos
  #3 (permalink)  
Antiguo 06/04/2011, 23:38
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Query mysql dentro de un bucle de otra query

Lo primero fue un despiste despues de haber cambiado el codigo varias veces pero no es el error. Y q no es un alias, es el nombre de la columna.
  #4 (permalink)  
Antiguo 07/04/2011, 00:33
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Query mysql dentro de un bucle de otra query

Hola,

Posiblemente, la construcción esta mal, ya sea la estructura de la base de datos, los datos ingresados en la misma, o la lógica de la aplicación.

Suponiendo que tienes estos datos,

Código:
idproducto	clave_session	idcesta
1			1			2
1			2			1
Y que $_SESSION['id'] es igual a 1.
La primera consulta extrae los datos de la sesion,
Código PHP:
select idproducto from cestas where clave_sesion ='".$_SESSION['id']."'" 
Código:
idproducto	clave_session	idcesta
1			1			2
La segunda consulta extrae los datos de la sesion también,
Código PHP:
SELECT q FROM cestas WHERE idproducto ".$row['id']." and idcesta='".$_SESSION['id']."'" 
Código:
idproducto	clave_session	idcesta
1			2			1
Pero le pertenecen a otra clave_session, por ende, si clave_session no es igual a idcesta tienes un error de concordancia, estas extrayendo datos que le pertenecen a otra session, o clave_sesion debe ser igual a idcesta.

Posiblemente quisiste poner esto:
Código PHP:
SELECT q FROM cestas WHERE
idproducto 
".$row['id']." and clave_sesion='".$_SESSION['id']."'" 
Aunque no estoy seguro,
Saludos,
  #5 (permalink)  
Antiguo 07/04/2011, 01:48
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Query mysql dentro de un bucle de otra query

De nuevo tienes razon, era
Código:
SELECT q FROM cestas WHERE
idproducto = ".$row['id']." and clave_sesion='".$_SESSION['id']."'"
Pero aún así sigue sin funcionar :(

EDIT: Si que era eso, muchas gracias, sabía que era un error estúpido perdido por ahí, pero ya por más que miraba no lo veía. Gracias!

Última edición por elainemarley85; 07/04/2011 a las 01:55

Etiquetas: bucle, mysql, query
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 13:01.