Foros del Web » Programando para Internet » PHP »

Como implementar LIKE

Estas en el tema de Como implementar LIKE en el foro de PHP en Foros del Web. Buenas a tods, Vereís, lo que intento hacer es un menu abecedario (A,B,C,D...) para mostrar según la letra elejida las peliculas que empiezen por dicha ...
  #1 (permalink)  
Antiguo 23/02/2009, 11:37
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Como implementar LIKE

Buenas a tods,

Vereís, lo que intento hacer es un menu abecedario (A,B,C,D...) para mostrar según la letra elejida las peliculas que empiezen por dicha letra.
Si por ejemplo clickeo en 'A', pues me aparezcan todas las peliculas que empiezen por el titulo A.

Todo eso se hacerlo bien, de hecho me sale mediante 'LIKE', pero el problema está en que la forma de que lo quiero hacer no sale.

En este código lo que hago es mostrar el abecedario desde la A hasta la Z.

Código indice:
Ver original
  1. <?php
  2.  
  3. include ("global.php");
  4.  
  5. $sql = "SELECT * FROM categoria_pel ORDER BY id_cat";
  6.                         $res = do_sql ($sql);
  7.  
  8.                         while ($row = mysql_fetch_assoc($res)) {
  9.  
  10.             echo '<td><a class="lol" href="pelis.php?id='.$row['id_cat'].'">'.$row['c_pel'].'</a> - </td></tr>';
  11.    
  12.         }
  13. ?>

Y éste código es el que utilizo para mostrar las peliculas segun la letra elejida

Código indice2:
Ver original
  1. <?php
  2. $_GET['id']; {
  3.  
  4. // Lo mas correcto seria:
  5. $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
  6. if($id != 0) {
  7.  
  8.     $hostname = "localhost";
  9.     $database = "db";
  10.     $username = "root";
  11.     $password = "2pass";
  12.     $conexion = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
  13.       mysql_select_db($database, $conexion);
  14.      
  15.     $sql = "SELECT * FROM peliculas where id='".$_GET['id']."'";
  16.     $mostrar_sql = @mysql_query($sql, $conexion) or die(mysql_error());
  17.     $row_sql = mysql_fetch_assoc($mostrar_sql);
  18. ?>
  19. <html>
  20. <head>
  21. </head>
  22. <body>
  23. <style type='text/css'>
  24.  
  25. .ver {
  26. border: 1px solid #CCC;
  27. background-color: #F7FBFF;
  28. font-family: Verdana;
  29. font-size: 11px;
  30. color: #666;
  31. }
  32.  
  33. </style>
  34.  
  35. <br>
  36. <br>
  37.  
  38. <td align='center'>
  39.         <table  width='50%' cellpadding='2' cellspacing='0' border='0'  align='center' class='ver'>
  40.         <tr>
  41. <td><?php echo $row_sql['titulo'] ?></td>
  42. </tr>
  43. </table>
  44. </body>
  45. </html>
  46. <?php
  47. }
  48. }
  49. ?>

El problema es que no me las muestra correctamente, ya que al clickear por ejemplo en A, me muestra la primera pelicula que tengo subida en la BD, que en este caso se llama 'Tapas'.

Lo que me gustaria hacer es que la pelicula 'Tapas' apareciera al pulsar la letra T obviamente. Como dije al principio, esto se hace mediante LIKE, pero no se como implementar LIKE en este codigo, ya que no me sale.

Muchas gracias y espero puedan ayudarme una ves más.
  #2 (permalink)  
Antiguo 23/02/2009, 11:46
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Respuesta: Como implementar LIKE

Hola,

Pues el like lo debes implementar en el campo que guarda el nombre de tus peliculas, sería algo así:

Código:
 * primero pides la letra bajo la cual desean buscar las peliculas.
 * Luego la envias con el formulario.
 * La recojes: $indice=$_POST["letra"];
 * Haces tu consulta: 

$sql = "SELECT * FROM peliculas where nombre_pelicula LIKE "%$indice%";
    $mostrar_sql = @mysql_query($sql, $conexion) or die(mysql_error());
    $row_sql = mysql_fetch_assoc($mostrar_sql);

* Y ya las muestras.
Saludos!!!
__________________
"Eres grande por que caminas entre gigantes"
  #3 (permalink)  
Antiguo 23/02/2009, 12:07
Avatar de jenusys  
Fecha de Ingreso: diciembre-2008
Ubicación: Ahí mismo.
Mensajes: 216
Antigüedad: 15 años, 4 meses
Puntos: 11
Respuesta: Como implementar LIKE

$sql=mysql_query("SELECT * FROM peliculas WHERE id LIKE '%{$_GET['id']}%'", $tuconexion);
  #4 (permalink)  
Antiguo 23/02/2009, 12:22
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Como implementar LIKE

el id_cat es character o sea contiene la letra del abecedario correspondiente?

ejemplo: id_cat = 'A'

si es de esa forma es usando de la manera que te muestra jenusys

si no..

si el id_cat = un numero

entonces deberas hacerlo como te muestra ferbux agregandole un filtro mas que en este caso es el id_cat

Código PHP:
<?php
//primero pides la letra bajo la cual desean buscar las peliculas. 
//Luego la envias con el formulario.  
//La recojes: 

$indice=$_POST["letra"];  

//Haces tu consulta:   

$sql "SELECT * FROM peliculas where id='".$_GET['id']." nombre_pelicula LIKE '%$indice%'";   
$mostrar_sql = @mysql_query($sql$conexion) or die(mysql_error());     
$row_sql mysql_fetch_assoc($mostrar_sql);  

// Y ya las muestras.?>
prueba y dinos si te sirve salu2
  #5 (permalink)  
Antiguo 23/02/2009, 12:29
 
Fecha de Ingreso: diciembre-2005
Ubicación: Vigo
Mensajes: 135
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Como implementar LIKE

hola prueva a moner
LIKE = "_$indice"

Puedes ver mas ejemplos aqui:
http://mysql.conclase.net/curso/index.php?cap=010d
  #6 (permalink)  
Antiguo 23/02/2009, 14:21
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Como implementar LIKE

De hecho, el LIKE deberia ser:
SELECT algo FROM tabla WHERE nombre LIKE 'A%';
Para que recoja por ejemplos los campos que comiencen con A.
De lo contrario, si usamos el comodin antes y despues, recoje cualquier nombre que contenga 'A'
  #7 (permalink)  
Antiguo 23/02/2009, 15:47
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Respuesta: Como implementar LIKE

En definitiva, quedaría algo como esto:

<?php
//primero pides la letra bajo la cual desean buscar las peliculas.
//Luego la envias con el formulario.
//La recojes:

$indice=$_POST["letra"];

//Haces tu consulta:

$sql = "SELECT * FROM peliculas where id='".$_GET['id']." nombre_pelicula LIKE '$indice%'";
$mostrar_sql = @mysql_query($sql, $conexion) or die(mysql_error());
$row_sql = mysql_fetch_assoc($mostrar_sql);

// Y ya las muestras.?>


Nota que $indice en el like no tien que tener el % al principio, xq sino no te mostraran las que empiecen por A sino las que contengan una A. Para eso sirve el % del principio.
  #8 (permalink)  
Antiguo 02/03/2009, 11:56
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Como implementar LIKE

Buenas de nuevo y perdón por la tardanza, pero no he podido.

Veamos, estoy probando hacerlo como han dicho, pero... no me sale y creo que el problema es porque esta parte:

Código PHP:
$indice=$_POST["letra"]; 
No la puedo recojer, o bueno, no se como recojerla. Por que a ver, no lo estoy pasando a traves de un formulario, sino de un enlace.
Para una idea más clara, este es el menu que estoy probando:




Entonces, al clickear en A, se supone que tendria que ir a pelis.php?id=1, mostrarme todas las peliculos que empiezen por A y asi sucesivamente.

Y en respuesta a vicram10, el id_cat sí es un numero.

Muchas gracias de nuevo
  #9 (permalink)  
Antiguo 02/03/2009, 13:02
 
Fecha de Ingreso: diciembre-2005
Ubicación: Vigo
Mensajes: 135
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Como implementar LIKE

Priueba con
$indice = $_GET["id"];
  #10 (permalink)  
Antiguo 04/03/2009, 06:35
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Como implementar LIKE

Buenas a tods,

Bueno, aún sigo con mi problema, pero he avanzado algo. Vereís, al final he conseguido que me muestre las peliculas que empiezen por X letra. Por ejemplo, si queremos ver las peliculas que empiezan por la letra 'T', pues habría q ue clickear en 'T' y aparecerían todas las peliculas que en sus titulo empiezen con 'T'.

¿Problema?

Qué solo me muestra el primer resultado, o sea, la primera pelicula. Actualmente en 'T', tengo dos peliculas y solo me arroja la primera

Asi es como tengo el codigo actualmente:
indices.php:
Como dije en mi primer post, este código muestra el abecedario desde la A hasta la Z, para que clickeemos en una letra y nos lleve a pelis.php y nos muestre las peliculas que empiezan por dicha letra.
Código indices:
Ver original
  1. <?php
  2.  
  3. include ("global.php");
  4.  
  5. $sql = "SELECT * FROM categoria_pel ORDER BY id_cat";
  6.                         $res = do_sql ($sql);
  7.  
  8.                         while ($row = mysql_fetch_assoc($res)) {
  9.        
  10.  
  11.             echo '<a class="lol" href="pelis.php?id='.$row['id_cat'].'">'.$row['c_pel'].'</a> - ';
  12.    
  13.         }
  14. ?>


pelis.php:
En esta pagina se visualizan las peliculas de la letra que anteriormente hayas elegido:

Código indices2:
Ver original
  1. <?php
  2. $_GET['id']; {
  3.  
  4. // Lo mas correcto seria:
  5. $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
  6. if($id != 0) {
  7.  
  8.     $hostname = "localhost";
  9.     $database = "db";
  10.     $username = "root";
  11.     $password = "2pass";
  12.     $conexion = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
  13.       mysql_select_db($database, $conexion);
  14.      
  15.     $sql = "SELECT * FROM peliculas where id_cat='".$_GET['id']."'";
  16.     $mostrar_sql = @mysql_query($sql, $conexion) or die(mysql_error());
  17.     $row_sql = mysql_fetch_assoc($mostrar_sql);
  18. ?>
  19. <html>
  20. <head>
  21. </head>
  22. <body>
  23. <style type='text/css'>
  24.  
  25. .ver {
  26. border: 1px solid #CCC;
  27. background-color: #F7FBFF;
  28. font-family: Verdana;
  29. font-size: 11px;
  30. color: #666;
  31. }
  32.  
  33. </style>
  34.  
  35. <br>
  36. <br>
  37.  
  38. <td align='center'>
  39.         <table  width='50%' cellpadding='2' cellspacing='0' border='0'  align='center' class='ver'>
  40.         <tr>
  41. <td>
  42. <?php echo $row_sql['titulo'] ?>
  43. </td>
  44. </tr>
  45. </table>
  46. </body>
  47. </html>
  48. <?php
  49. }
  50. }
  51. ?>

Eso es todo, y muchas gracias.
Saludos,
  #11 (permalink)  
Antiguo 05/03/2009, 06:13
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Como implementar LIKE

Buenas de nuevo,

Bueno una vez mas estoy aqui, pidiendo ayuda ;P es que sigo dandole vueltas al asunto pero no consigo hacer que me funcione.

También quiero añadir un poco más de información para que les sea más fácil ayudarme.

Quiero añadir la base de datos de las catgeorias, que se comopone de la siguiente manera:

Se llama categoria_pel y se compone de;

id_cat = numero
c_pel = letra

Ejemplo: id_cat = 1, c_pel = A y asi sucesivamente hasta llegar a la Z.

y la siguiente es la tabla peliculas:

id,
titulo,
sinopsis,
idioma,
enlace,
id_cat
[..]

Bueno, eso es todo, espero que con esta informacion puedan hecharme una mano mnas facilmente.
Un saludo y muchisimas gracias de nuevo,
  #12 (permalink)  
Antiguo 06/03/2009, 23:06
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 3 meses
Puntos: 14
Respuesta: Como implementar LIKE

Lo que te esta faltando es un WHILE, vos estas ejecutando la consulta que encuentre la peli con el id ( GET['id'] ) y la mostras, ahi esta el error. Vos tenes que hacer un while.

Algo asi:

Código PHP:
<table  width='50%' cellpadding='2' cellspacing='0' border='0'  align='center' class='ver'>
        <tr>
<?php 
    $sql 
"SELECT * FROM peliculas where id_cat='".$_GET['id']."'";
    
$mostrar_sql = @mysql_query($sql$conexion) or die(mysql_error());
    while ( 
$row_sql mysql_fetch_assoc($mostrar_sql) ){
echo 
"<td>".$row_sql['titulo']."</td>" ;
}
?>
</tr>
</table>
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 02:18.