Foros del Web » Programando para Internet » PHP »

Código que no funciona

Estas en el tema de Código que no funciona en el foro de PHP en Foros del Web. Hola, Tengo este código que no me funciona, me deja la página en blanco. Quisiera saber si alguien me puede ayudar a ver donde está ...
  #1 (permalink)  
Antiguo 11/01/2007, 03:25
 
Fecha de Ingreso: abril-2004
Mensajes: 58
Antigüedad: 20 años
Puntos: 0
Código que no funciona

Hola,
Tengo este código que no me funciona, me deja la página en blanco. Quisiera saber si alguien me puede ayudar a ver donde está el error.

Código PHP:
 <?
 
 $query2
="SELECT DISTINCT general.id_general, general.titol_general, general.URL, general.pes, general.tipologia_id, general_poblacio_link.poblacio_id, general_poblacio_link.general_id
 FROM general
 INNER JOIN
 general_poblacio_link ON general.id_general=general_poblacio_link.general_id
 WHERE "
;
 if (
$llistat_titols =="" && $llistat_tipo =="" && $llistat_pob ==""){
     echo 
"Tienes que introducir un criterio";
 }
 elseif (
$llistat_titols =="" && $llistat_tipo =="" && $llistat_pob !=""){ 
 
query2.="general_poblacio_link.poblacio_id = '$llistat_pob'";
 }
 elseif (
$llistat_titols =="" && $llistat_tipo !="" && $llistat_pob !=""){
 
query2.="general.tipologia_id = '$llistat_tipo' AND general_poblacio_link.poblacio_id = '$llistat_pob'";
 }
elseif (
$llistat_titols !="" && $llistat_tipo =="" && $llistat_pob ==""){
 
query2.="general.titol_general LIKE '%$llistat_titols%'";
 }
 elseif (
$llistat_titols !="" && $llistat_tipo =="" && $llistat_pob !=""){
 
query2.="general.titol_general LIKE '%$llistat_titols%' AND general_poblacio_link.poblacio_id = '$llistat_pob'";
 }
 elseif (
$llistat_titols !="" && $llistat_tipo !="" && $llistat_pob ==""){
 
query2.="general.titol_general LIKE '%$llistat_titols%' AND general_poblacio_link.poblacio_id = '$llistat_pob'";
 }
 elseif (
$llistat_titols !="" && $llistat_tipo !="" && $llistat_pob !=""){
 
query2.="general.titol_general LIKE '%$llistat_titols%' AND general.tipologia_id = '$llistat_tipo' AND general_poblacio_link.poblacio_id = '$llistat_pob'";
 } 
// faig la cerca
 
$result1 mysql_query($query2$link) or die ("Error en: $query2. " mysql_error());
?>
      <TABLE border="1" align="center" CELLPADDING=1 CELLSPACING=1 bordercolor="#660000" class="text">
        <TR>
            <TD width="20" class="text">Id</TD>
          <TD width="200" class="text">Título</TD>
          <TD width="200" class="text">Bajar archivo</TD>
          <TD width="20" class="text">Tamaño</TD>
         
<?
 
while($row1 mysql_fetch_array($result1)) {
      
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td></tr>"$row1["id_general"],$row1["titol_general"],$row1["URL"],$row1["pes"]);
   }
 
   
mysql_free_result($result1);
   
mysql_close($link);
 
?>
Gracias anticipadas
  #2 (permalink)  
Antiguo 11/01/2007, 09:11
 
Fecha de Ingreso: abril-2004
Mensajes: 58
Antigüedad: 20 años
Puntos: 0
Re: Código que no funciona

Es que nadie me va a ayudar????????
  #3 (permalink)  
Antiguo 11/01/2007, 09:18
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Exclamación Re: Código que no funciona

Antes que nada nos es obligación de nadie ayudarte
La gente que aporta en el foro la hace por gusto y no por obligación

Te recomiendo que cuando postes código lo comentes, porque es muy compliado ponerse adivinar que es lo que trata de hacer tu código.

1) ¿Donde tienes declaradas o inicializadas estas variables? $llistat_titols, $llistat_tipo y $llistat_pob

2)Porque dices que no funciona ¿Te aparece un error? ¿Se queda en blanco la pantalla? detalla un poco mas tu problema porfavor.


Saludillos.
  #4 (permalink)  
Antiguo 11/01/2007, 09:45
 
Fecha de Ingreso: abril-2004
Mensajes: 58
Antigüedad: 20 años
Puntos: 0
Re: Código que no funciona

Bueno, sin ánimo de molestar, siempre he pedido la ayuda por favor.
También he comentado que el error es que me deja la página en blanco.
Las variables las recogo antes con este código
Código PHP:
 <?    
    $link
=mysql_connect("localhost""usuario""contraseña") or die ("no m'he pogut conectar"); // me conecto a la base de dades
    
$llistat_titols=$_POST['text_titol'];  // recullo la variable del titol
    
$llistat_tipo=$_POST['var_tipologia'];
    
$llistat_pob=$_POST['var_poblacio']; // recullo la variable del poblacio
    
$bd=mysql_select_db("molinar",$link) or die ("no puc conectar a la BBDD"); // selecciono la base de dades de treball
Gracias anticipadas a quien desee ayudar
  #5 (permalink)  
Antiguo 11/01/2007, 09:48
 
Fecha de Ingreso: abril-2004
Mensajes: 58
Antigüedad: 20 años
Puntos: 0
Re: Código que no funciona

Lo que pretendo hacer:
Tengo un buscador con tres criterios.
Si el criterio1=vacio, criterio2=vacio y criterio3=vacio quiero me mande un mensaje echo "....."
Si el criterio1=vacio, criterio2=vacio y criterio2=no vacio, entonces que me haga una búsqueda
Si el criterio1=vacio, criterio2=no vacio y criterio2=no vacio, entonces que me haga otra búsqueda
y así hasta completar todas las posibles combinaciones

Gracias
  #6 (permalink)  
Antiguo 11/01/2007, 10:27
 
Fecha de Ingreso: julio-2003
Ubicación: Buenos Aires
Mensajes: 96
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Código que no funciona

* algun mensaje de error tiene que mostrar (siempre y cuando esto este habilitado en el php.ini)

* si desde el navegador vas a Ver -> Codigo Fuente, ¿aparece alguna descripcion del error?
  #7 (permalink)  
Antiguo 11/01/2007, 10:37
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Código que no funciona

Hola,
podrias poner un codigo un poko mas claro y no tener q meter tantos IF

no lo he probado pero mas o menos...

Código PHP:
<? 

    $link
=mysql_connect("localhost""usuario""contraseña") or die ("no m'he pogut conectar"); // me     conecto a la base de dades 
    
$llistat_titols=$_POST['text_titol'];  // recullo la variable del titol 
    
$llistat_tipo=$_POST['var_tipologia']; 
    
$llistat_pob=$_POST['var_poblacio']; // recullo la variable del poblacio 
    
$bd=mysql_select_db("molinar",$link) or die ("no puc conectar a la BBDD"); 
    
//Wherehan es la varibale donde montaremos nuesta clausula Where
      
$WHEREHAN='';
    
//Funcion q mirara si se pone un WHERE o se pone un AND
    
function FWhere($w) {
        return (
$w == '') ? ' WHERE ' "$w AND ";
    }
    
//Miramos la variables
     
if ($llistat_titol != ''){
        
$WHEREHAN Fwhere($WHEREHAN) . " general.titol_general LIKE '%$llistat_titols%'"
     }
     if (
$llistat_tipo != ''){
        
$WHEREHAN Fwhere($WHEREHAN) . " general.tipologia_id = '$llistat_tipo'";
     }
     if (
$llistat_tipo != ''){
        
$WHEREHAN =F where($WHEREHAN) . " general_poblacio_link.poblacio_id = '$llistat_pob'";
     }
     
//puedes imprimir la variable a ver si se te ha montado bien o no
     
echo $WHEREHAN;
    
    
$query2 "SELECT DISTINCT general.id_general, general.titol_general, general.URL, general.pes, 
    general.tipologia_id, general_poblacio_link.poblacio_id, general_poblacio_link.general_id 
    FROM general 
    INNER JOIN 
    general_poblacio_link ON general.id_general=general_poblacio_link.general_id 
    $WHEREHAN"

    
//aqui ponemos la varible q quedara montada cuando te pasen los campos
    //hacemos la consulta
     
$result1 mysql_query($query2$link) or die ("Error en: $query2. " mysql_error());
    
//miramos la cantidad de registros
    
$nreg_result1mysql_num_rows($$result1);
            
//si el numero es difernete de 0 entonces mostraremos los resultados
    
if($nreg_result1 != 0){

?> 
      <TABLE border="1" align="center" CELLPADDING=1 CELLSPACING=1 bordercolor="#660000" class="text"> 
        <TR> 
            <TD width="20" class="text">Id</TD> 
          <TD width="200" class="text">Título</TD> 
          <TD width="200" class="text">Bajar archivo</TD> 
          <TD width="20" class="text">Tamaño</TD> 
          
<? 
        
while($row1 mysql_fetch_array($result1)) { 
        
?>
            <tr>
            <td>&nbsp;<?=$row1["id_general"];?></td>
            <td>&nbsp;<?=$row1["titol_general"];?>&nbsp;</td>
            <td>&nbsp;<?=$row1["URL"];?>&nbsp;</td>
            <td>&nbsp;<?=$row1["pes"];?>&nbsp;</td>
            </tr>
        <? 
        
}  //fin While
                   
?></table><?
    
}else{
             
//si el numero es igual a 0 entonces mostraremos el mensaje de q no hay resultados
    
echo "No hi ha resultats";
    }  
    
mysql_free_result($result1); 
    
mysql_close($link); 
    
    
?>
faltarian algunas comprobaciones...

espero q te sirva y si tienes alguna duda aqui estamos

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 11/01/2007 a las 10:48
  #8 (permalink)  
Antiguo 11/01/2007, 17:03
 
Fecha de Ingreso: abril-2004
Mensajes: 58
Antigüedad: 20 años
Puntos: 0
Re: Código que no funciona

Muchas gracias por vuestra ayuda, especialmente a Sergi que me ha dado las bases para sacar adelante mi trabajo. Mi código era rudimentario y he aprendido mucho.
  #9 (permalink)  
Antiguo 11/01/2007, 17:59
 
Fecha de Ingreso: abril-2004
Mensajes: 58
Antigüedad: 20 años
Puntos: 0
Re: Código que no funciona

Bueno, parece que no se acaba nunca.
Pensaba que todo era correcto, pero al probar diversas búsquedas, me he dado cuenta de que cuando busco por tipologia y dejo los otros campos en blanco se me repiten los resultados.
Como si no hiciera caso del DISTINCT que tengo en el query. Pero es curioso que sólo me pase en tipologia y no en la población o en el título.

Us adjunto el query
Código PHP:
$query2 "SELECT DISTINCT general.id_general, general.titol_general, general.URL, general.pes, 
    general.tipologia_id, general_poblacio_link.poblacio_id, general_poblacio_link.general_id 
    FROM general 
    INNER JOIN 
    general_poblacio_link ON general.id_general=general_poblacio_link.general_id 
    $WHEREHAN"

donde $WHEREHAN = WHERE general.tipologia_id = '3'

Ay, ay, ay
  #10 (permalink)  
Antiguo 12/01/2007, 01:29
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: Código que no funciona

Hola, en esa consulta q es lo q estas buscando? porque no usas una LEFT JOIN o un RIGHT JOIN segun la tabla q quieres q mande..
quizas tendrias q agruparlos con un GROUP BY campo...
todo depende de como tengas las tablas estructuradas y de q resultados quieras sacar

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
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 00:48.