otro problemilla con consulta

Iniciado por soru13, 19 Julio 2010, 20:41 PM

0 Miembros y 1 Visitante están viendo este tema.

soru13

hola,siento ser tan pesado pero tengo otro problemilla.

resulta que quiero que debajo de un video mio salgan unos 5 videos como videos relaccionados pero que en realidad saldrán los últimos 5 videos de la categoría del video que se está viendo. Bien,pues aquí dejo el código que funciona pero que no está automatizado:

<p align="center">Videos relaccionados</p>
<p align="center"><?
include ("../config.php");
$sql = "select * from videos where id=$directorio";
$sql = "select * from videos where cat='NOMBRECATEGORIA' order by id desc limit 5";

//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
echo "".$row["img"]."&nbsp;";
}
?></p>


El caso es que funciona si pongo manualmente el nombre de la categoría pero yo quiero que la obtenga através de la id del video ya que la carpeta del video es la misma que la id del video,asi que hice éste código,pero no da error ni muestra los videos: ¿porqué?

<p align="center">Videos relaccionados</p>
<p align="center"><?
include ("../config.php");
$directorio = basename(getcwd());
$sql = "select * from videos where id=$directorio";
$relac = $row['cat'];
$sql = "select * from videos where cat='$relac' order by id desc limit 5";

//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
echo "".$row["img"]."&nbsp;";
}
?></p>


Aquí lo podeis ver: http://www.tupixxx.com/22/

Gracias

~ Yoya ~

nunca funcionara xD.

El problema esta en la linea 6
Código (php) [Seleccionar]
<p align="center">Videos relaccionados</p>
<p align="center"><?
include ("../config.php");
$directorio = basename(getcwd());
$sql = "select * from videos where id=$directorio";
$relac = $row['cat'];
$sql = "select * from videos where cat='$relac' order by id desc limit 5";

//Instrucción a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecución de la instrucción

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
echo "".$row["img"]."&nbsp;";
}
?></p>

Te doy una ayudita para que pienses y lo soluciones o si no se te hecha la mano xD.

Tu problema esta en la variable $relac que almacena un valor que no existe, ej:
Código (php) [Seleccionar]

<?php

echo $var;
$var 'Hola';

?>


No se muestra el valor de la variable $var porque no tiene valor.

Te comento donde tienes el error...
Código (php) [Seleccionar]
<p align="center">Videos relaccionados</p>
<p align="center"><?
include ("../config.php");
$directorio = basename(getcwd());
$sql = "select * from videos where id=$directorio";
$relac = $row['cat'];//Aqui esta el problema, deberia de ir bajo el while ya que el array $row no contiene ningun valor
$sql = "select * from videos where cat='$relac' order by id desc limit 5";

//Instrucci&#243;n a ejecutarse en la bbdd.

$squery = mysql_query($sql);
//Ejecuci&#243;n de la instrucci&#243;n

while($row = mysql_fetch_array($squery)){
//Recuperar los datos de un registro o hilera (row) y meterlo a un array
echo "".$row["img"]."&nbsp;";
}
?></p>


Y optimiza tu  consulta SQL..
Código (sql) [Seleccionar]

mysql> describe ejemplo;
+--------+----------+------+-----+---------+----------------+
| Field  | Type     | Null | Key | Default | Extra          |
+--------+----------+------+-----+---------+----------------+
| id     | int(11)  | NO   | PRI | NULL    | auto_increment |
| nombre | char(20) | YES  |     | NULL    |                |
+--------+----------+------+-----+---------+----------------+

Código (sql) [Seleccionar]

mysql> select * from ejemplo;
+----+--------+
| id | nombre |
+----+--------+
|  1 | jesus  |
|  2 | edwin  |
|  3 | jose   |
+----+--------+
3 rows in set (0.00 sec)


Ahora pongo dos condiciones:
Código (sql) [Seleccionar]

mysql> select * from ejemplo where id=1 && nombre = "jesus";
+----+--------+
| id | nombre |
+----+--------+
|  1 | jesus  |
+----+--------+
1 row in set (0.00 sec)





Tienes otro problemita...
Código (php) [Seleccionar]

$sql = "select * from videos where id=$directorio";
$relac = $row['cat'];
$sql = "select * from videos where cat='$relac' order by id desc limit 5";

Das dos valores diferente a una variable ($sql), y php toma el ultimo valor asignado a la variable... Me imagino que lo haces porque necesitas poner dos condicionales, arriba te puse como hacerlo.

Ej:
Código (php) [Seleccionar]
<?php

$var 
1213;
$var 7777;
echo 
$var;

?>

Salida:
7777
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

soru13

muchas gracias ~ Yoya ~ ya lo arreglé y tomé nota de tus consejos,esque estoy empezando con mysql y no se mucho.

~ Yoya ~

No pasa nada y muy bien que lo hallas hecho por ti mismo xD.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

MinusFour

Por cierto eso de:

$directorio = basename(getcwd());
$sql = "select * from videos where id=$directorio";


Puede no ser la mejor forma de organizar tus consultas. Tendrías que crear quien sabe cuantos directorios por cada id.