Foros del Web » Programando para Internet » PHP »

No funciona cuando paso una cadena

Estas en el tema de No funciona cuando paso una cadena en el foro de PHP en Foros del Web. Estoy empezando a programar en PHP y me encontre con pequeño problema que no le encuentro solucion. Tengo una base de datos con letras. Dentro ...
  #1 (permalink)  
Antiguo 14/01/2011, 07:53
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 1
No funciona cuando paso una cadena

Estoy empezando a programar en PHP y me encontre con pequeño problema que no le encuentro solucion. Tengo una base de datos con letras. Dentro de la db hoy una tabla de letras, otra de artistas, y otra de discos. Y tablas de relacion entre artistas y discos, y letras y artistas. La funcion que estoy haciendo lo que tiene que hacer es mostrar todos los discos de un artista y de cada disco el nombre, año, una imagen y la lista de canciones que la componen.

Lo que hago para no complicarme es pasar las consultas como cadenas de caracteres, el problema que tengo es que a la 2º consulta no la hace, pero si simplemente omito de pasar los datos como una cadena y simplemente pongo la consulta dentro de los parentesis funciona. Es decir, de esta forma funciona:

Código PHP:
function discosdeart($artista) {
    
$consulta "select discos.anio,discos.nombre,discos.imagen,discos.d_id from discos inner join discart on discos.d_id=discart.d_id where discart.a_id = '$artista'";
    
    
$art mysql_query($consulta);
    
    while (
$row mysql_fetch_array($art)) {
        echo 
"<div id='disco'>";
        echo 
$row[nombre].'<br />';
        echo 
$row[anio].'<br />';
        echo 
$row[imagen].'<br />';
        echo 
$row[d_id].'<br />';
        
$d $row[d_id];
        
$letdisc mysql_query("select letras.nombre from letras inner join letdisc on letras.l_id=letdisc.l_id where letdisc.d_id like '$d' order by letdisc.Numero");
        while (
$row2 mysql_fetch_array($letdisc)) {
            echo 
$row2[nombre].'<br />';
        } 
Pero de esta, NO:

Código PHP:
function discosdeart($artista) {
    
$consulta "select discos.anio,discos.nombre,discos.imagen,discos.d_id from discos inner join discart on discos.d_id=discart.d_id where discart.a_id = '$artista'";
    
$consulta2 "select letras.nombre from letras inner join letdisc on letras.l_id=letdisc.l_id where letdisc.d_id like '$d' order by letdisc.Numero";
    
    
$art mysql_query($consulta);
    
    while (
$row mysql_fetch_array($art)) {
        echo 
"<div id='disco'>";
        echo 
$row[nombre].'<br />';
        echo 
$row[anio].'<br />';
        echo 
$row[imagen].'<br />';
        echo 
$row[d_id].'<br />';
        
$d $row[d_id];
        
$letdisc mysql_query($consulta2);
        while (
$row2 mysql_fetch_array($letdisc)) {
            echo 
$row2[nombre].'<br />';
        } 
No logro a entender por que, ademas en la misma funcion, hago lo mismo, de la misma forma y funciona.

Espero que puedan ayudarme, muchas gracias.
  #2 (permalink)  
Antiguo 14/01/2011, 08:02
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 19 años, 2 meses
Puntos: 2
Respuesta: No funciona cuando paso una cadena

Es porque en la segunda consulta usas una variable que se llama $d, que no esta definida aun, cuando usas el texto directo ya se ha definido esa variable entonces si te funciona:

Código PHP:
function discosdeart($artista) {
    
$consulta "select discos.anio,discos.nombre,discos.imagen,discos.d_id from discos inner join discart on discos.d_id=discart.d_id where discart.a_id = '$artista'";
    
    
    
$art mysql_query($consulta);
    
    while (
$row mysql_fetch_array($art)) {
        echo 
"<div id='disco'>";
        echo 
$row[nombre].'<br />';
        echo 
$row[anio].'<br />';
        echo 
$row[imagen].'<br />';
        echo 
$row[d_id].'<br />';
        
$d $row[d_id];
        

        
$consulta2 "select letras.nombre from letras inner join letdisc on letras.l_id=letdisc.l_id where letdisc.d_id like '$d' order by letdisc.Numero";

        
$letdisc mysql_query($consulta2);
        while (
$row2 mysql_fetch_array($letdisc)) {
            echo 
$row2[nombre].'<br />';
        } 
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica
  #3 (permalink)  
Antiguo 14/01/2011, 09:18
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: No funciona cuando paso una cadena

Al parecer es eso, suponia que si se definia la variables antes de declarar la cadena no importaba. Para mi $consulta2 era solo una cadena de text mas y solo era una consulta cuando se la usaba en mysql_query.

Termine por poner la declaracion de la consulta 2 luego de declarar $d y asi funciona.

No era como queria que quede el codigo en un principio pero asi funciona y ademas me parece que es mejor.

Muchas gracias.

Etiquetas: cuando, cadenas
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 19:06.