Foros del Web » Programando para Internet » PHP »

Problema al ejecutar sentencia

Estas en el tema de Problema al ejecutar sentencia en el foro de PHP en Foros del Web. Hola a todos , tengo el siguiente problema: Tengo estas dos consultas: Código PHP:  $q  =  "select * from t_peticiones LEFT JOIN t_t_peticion on id_tipopeticion = id_t_peticion where id_perfil = $grupo" ;   $q2  =  "select * from t_peticiones LEFT JOIN t_t_peticion on id_tipopeticion = id_t_peticion where id_perfil = 5" ;  He comprobado ...
  #1 (permalink)  
Antiguo 04/03/2011, 07:00
Avatar de aalleexx81  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 0
Pregunta Problema al ejecutar sentencia

Hola a todos , tengo el siguiente problema:

Tengo estas dos consultas:


Código PHP:
 $q "select * from t_peticiones LEFT JOIN t_t_peticion on id_tipopeticion = id_t_peticion where id_perfil = $grupo";
 
$q2 "select * from t_peticiones LEFT JOIN t_t_peticion on id_tipopeticion = id_t_peticion where id_perfil = 5"
He comprobado el valor de la variable $grupo y vale 5. Lo que me tiene confundido es que cuando ejecuto la primera sentencia, me aparece el siguiente error (cosa que no me pasa si ejecuto la segunda sentencia):

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\prueba.php on line 249

He probado a imprimir las dos sentencias y son exactamente iguales, no consigo ver dónde estoy metiendo la pata. ¿Alguien se da cuenta de lo que estoy haciendo mal?

Gracias a todos por vuestro interés. Saludos.
  #2 (permalink)  
Antiguo 04/03/2011, 09:53
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Problema al ejecutar sentencia

pues el error te dice mysql_fetch_array() muestra un poquito mas del codigo y veremos. si inluyes la conexion u otra cosa :)
  #3 (permalink)  
Antiguo 04/03/2011, 09:57
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: Problema al ejecutar sentencia

El problema no esta en las consultas esta en la variable donde almacenas el array que entrega MySql a PHP... muestra mas codigo y te ayudamos.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 08/03/2011, 03:29
Avatar de aalleexx81  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 0
Pregunta Respuesta: Problema al ejecutar sentencia

Aquí está el código completo. Al imprimir las dos consultas, veo que son exactamente iguales. Pero la única que funciona es a la que se le pasa la constante 5.

Código PHP:
<?php

$grupo 
"<script> document.write(perfil) </script>";
//echo "GRUPO = $grupo<br>";

echo '
<table border=1>
    <tr>
        <th>B/D</th>
        <th>TP</th>
        <th>Petici&oacute;n</th>
        <th>F. Aviso</th>
        <th>Centro</th>
        <th>Asunto</th>
        <th>Asignaci&oacute;n</th>
        <th>Usuario</th>
        <th>F. Prevista</th>
        <th>P</th>
        <th>A/F</th>
     </tr>'
;
 
     
$q "select * from t_peticiones LEFT JOIN t_t_peticion on id_tipopeticion = id_t_peticion where id_perfil = 5 order by f_alta desc";
      
$q1 "select * from t_peticiones LEFT JOIN t_t_peticion on id_tipopeticion = id_t_peticion where id_perfil = $grupo order by f_alta desc";

     echo 
"Consulta1: $q<br>Consulta2: $q1<br>";

     
$resq mysql_query($q);
     
     while(
$rowq mysql_fetch_array($resq)){
         
        if(
$rowq['id_usuario'] != ""){
        
            
$qusu "select nom_usuario from t_usuarios where id_usuario = ".$rowq['id_usuario'];
            
            
$resqusu mysql_query($qusu);
            
$rowqusu mysql_fetch_array($resqusu);
            
$idusuario $rowqusu['nom_usuario'];
        }    
        else{
            
            
$idusuario "-------";
        }    
                
        
$qg "select n_perfil from t_perfiles where id_perfil = 5";
        
        
$resqg mysql_query($qg);
        
$rowqg mysql_fetch_array($resqg);
        
        
$estado "select nom_estado from t_estado_pet where id_estado = ".$rowq['id_estado'];    

        
$resestado mysql_query($estado);
        
$rowestado mysql_fetch_array($resestado);
            
        if(
$rowestado['nom_estado']== "FINALIZADO")
            
$est "./images/ico/Finalizada.png";
        else{ 
            if(
$rowestado['nom_estado']!="PDTE. ACEPTACIÓN")    
                
$est "./images/ico/Abierta.png";
        }        

         echo 
'<tr>
                <td>'
;
                       
                       if(
$rowq['bloqueado'] != 1
                        echo 
'<img src="./images/ico/2BotonBloqOff.png"/></td>';
                    else 
                        echo 
'<img src="./images/ico/2BotonDesbloqOff.png"/></td>';
        echo
'            
               <td>'
.$rowq['cod_t_peticion'].'</td>
               <td><a href="javascript:ventanaSecundaria3(\'inf_det_peticion.php?peti='
.$rowq['id_peticion'].'\')">'.$rowq["id_peticion"].'</a></td>
               <td>'
.substr($rowq["f_alta"],0,10).'</td>
               <td>¿Centro?</td>
               <td align="center"><a href="javascript:ventanaDetalle(\'det_peticion.php?i='
.$rowq['id_peticion'].'\')")><img src="./images/ico/2info.png" border=0/></a>&nbsp;&nbsp;'.str_replace("+"," "substr($rowq["asunto"],0,15)).'...</td>
               <td>'
.$rowqg['n_perfil'].'</td>
               <td>'
.$idusuario.'</td>
               <td>'
.substr($rowq["f_limite"],0,10).'</td>
               <td>'
.$rowq["id_prioridad"].'</td>
               <td><img src="'
.$est.'"></td>
               </tr>'
;
    }
    
echo 
'</table>';

echo 
'<br><br>';

?>
  #5 (permalink)  
Antiguo 08/03/2011, 04:17
Avatar de aalleexx81  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 0
Pregunta Respuesta: Problema al ejecutar sentencia

Creo que el problema viene de inicializar la variable $grupo con javascript de la siguiente forma:

Código PHP:
$grupo "<script> document.write(perfil) </script>"
Si en vez de esa línea de código, pongo la siguiente:

Código PHP:
$grupo 5
el código sí funciona. Aunque si imprimo la variable grupo con la primera línea, es decir, captando el valor de $grupo con código javascript, puedo ver que el valor es exactamente el mismo.

Mi pregunta es: ¿por qué no funciona cuando capto el valor de $grupo con código javascript?
  #6 (permalink)  
Antiguo 08/03/2011, 04:42
Avatar de aalleexx81  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema al ejecutar sentencia

Creo que he caido dónde estoy metiendo la pata, creo que en la variable $grupo se guarda el valor del select pero en formato cadena y tengo que pasarlo como número.

He probado de la siguiente forma:

Código PHP:
$grupo = (integer)$grupo
pero no me funciona, $grupo vale '5', y al hacer el casting con (integer) pasa a valer 0. No sé qué es lo que estoy haciendo mal.

¿De qué forma puedo pasar el valor de $grupo y convertirlo en un valor numérico?
  #7 (permalink)  
Antiguo 08/03/2011, 04:50
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: Problema al ejecutar sentencia

aalleexx81 no se si esto que te voy a comentar es realmente un error, pero yo siempre he visto que las sentencias SQL se escriben con mayúsculas (SELECT, FROM, WHERE...).

Aunque bueno, buscando un poco más he encontrado esto:

Cita:
Las sentencias SQL no distinguen entre mayúsculas y minúsculas, a
menos que sea indicado.

Las palabras reservadas son típicamente escritas en mayúsculas y todo
lo demás como nombres de tablas y columnas en minúsculas.
Seguramente sólo sea para que tenga una mayor legibilidad.
  #8 (permalink)  
Antiguo 08/03/2011, 04:52
Avatar de aalleexx81  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema al ejecutar sentencia

OK, lo tendré en cuenta a partir de ahora.
Gracias.

Etiquetas: sentencia
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 07:40.