Foros del Web » Programando para Internet » PHP »

Consulta No Funciona Con Variable Pero Si con escrito

Estas en el tema de Consulta No Funciona Con Variable Pero Si con escrito en el foro de PHP en Foros del Web. Dios, ayudenme por favor, ya llevo todo el dia dandole vueltas pero no veo el problema, el codigo es el siguiente: Código PHP: $copro  =  ...
  #1 (permalink)  
Antiguo 05/04/2012, 12:02
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 4 meses
Puntos: 26
Consulta No Funciona Con Variable Pero Si con escrito

Dios, ayudenme por favor, ya llevo todo el dia dandole vueltas pero no veo el problema, el codigo es el siguiente:
Código PHP:
$copro mysql_query("SELECT * FROM clasi_t_region WHERE s_name='$provincia'");
$numpro mysql_num_rows($copro); 
el caso es que siempre me sale un resultado a 0, por mas que la tabla tenga el mismo valor en el campo, lo curioso es que $provincia me imprime perfectamente, pero en la consulta no hace comparacion aunque tenga la misma provincia. PERO si pongo el nombre de la provincia directamente (s_name='Valencia') si me lo compara bien, pero no con la variable que podria tener valor de valencia.

Ya he intentado con htmlspecialchars($provincia) y htmlentities($provincia) , aun asi no me sale, por favor podrian hecharme una mano? Ya me duelen los ojos tanto ver la pantalla blanca y no conseguir solucion.

Este es el codigo completo:
Código PHP:
        $urlData $_POST[url];
        
$cantidad $_POST[cantidad];
        
$categoria $_POST[categoria];
        
$fecha time();

        
$action Urls($urlData,$cantidad);
        
$DataMundoAnuncio Anuncios($action);
    
        echo 
'<div style="border: 1px solid #ccc; background: #eee; padding: 10px;">';
        echo 
'<h2 style="border-bottom: #CCC 1px solid; color:#555;;">Resultados de anuncios... </h2>';

        if((
count($DataMundoAnuncio)==0) OR (!$DataMundoAnuncio)){
                
$error "Problema de matriz en funcion 'Anuncios' o 'Urls'";
        }
        foreach(
$DataMundoAnuncio as $da){

            
$provincia chop(str_replace("</span>","",$da[provincia]));
            
$provincia2 htmlentities($provincia);
            
$provincia3 htmlspecialchars($provincia);
            
$copro mysql_query("SELECT * FROM clasi_t_region WHERE s_name=".$provincia3) OR die(mysql_error());
            
$numpro mysql_num_rows($copro);

            
$datos mysql_fetch_assoc($copro);
            
print_r($datos);

            
$descripcion str_replace("<br><br>","<br>",$da[descripcion]);

            echo 
"<div style='width: 97%; padding: 7px; border: black 1px solid; margin: 3px;'>";
            echo 
"<table>";
            echo 
"<td width='20%' valign='top'>";
            if(
$da[imagen]!=""){
            echo 
"<img src='".$da[imagen]."' width='100%'/>";
            }else{
                echo 
"<br/><br/><font color='red'>Sin imagen</font>";
            }
            echo 
"</td>";
            echo 
"<td width='80%'>";
            echo 
"<h3 style='margin-bottom: 1px; border-bottom: #eee 1px solid;'>".$da[titulo]."</h3>";
            echo 
$descripcion;
            echo 
"<br/><b>Provincia:</b> ".$provincia." | <b>Categoria:</b> ".$categoria." ";
            if(
$error!="no"){
                echo 
"<b><font color='red'>".$error."</font></b>";
            }else{
                echo 
"<b><font color='green'>".$ok."</font></b>";
            }
            echo 
"</td>";
            echo 
"</table>";
            echo 
"</div>";

        }
        echo 
"</div>"
  #2 (permalink)  
Antiguo 05/04/2012, 12:15
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Consulta No Funciona Con Variable Pero Si con escrito

No entiendo algo , arriba pones una consulta y en el codigo completo no la veo por ninguna parte , excepto donde haces la misma consulta pero con provincia3 y diferente a la primera.

de todas forma trata de hacer tu codigo mas limpio y organizado.

Código PHP:
Ver original
  1. $provincia = trim($provincia);
  2. $sql = "SELECT * FROM clasi_t_region WHERE s_name='".$provincia."'";
  3.  
  4.   $copro = mysql_query($sql) OR die(mysql_error());
  5.             $numpro = mysql_num_rows($copro);
  #3 (permalink)  
Antiguo 05/04/2012, 12:23
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 4 meses
Puntos: 26
Respuesta: Consulta No Funciona Con Variable Pero Si con escrito

Cita:
Iniciado por gjx2 Ver Mensaje
No entiendo algo , arriba pones una consulta y en el codigo completo no la veo por ninguna parte , excepto donde haces la misma consulta pero con provincia3 y diferente a la primera.

de todas forma trata de hacer tu codigo mas limpio y organizado.

Código PHP:
Ver original
  1. $provincia = trim($provincia);
  2. $sql = "SELECT * FROM clasi_t_region WHERE s_name='".$provincia."'";
  3.  
  4.   $copro = mysql_query($sql) OR die(mysql_error());
  5.             $numpro = mysql_num_rows($copro);
Si, es diferente, por eso digo que habia probado de diferentes maneras, primero como esta arriba en el primer codigo, despues como esta abajo, y como ves abajo es una variable a compara diferente por que tuve que pasar por funciones como htmlspecialchars() y htmlentities() para ver si era algun caso de codificacion, pero nada.

Ahora mismo estoy probando de diferente manera:
Código PHP:
        $copro mysql_query("SELECT * FROM clasi_t_region WHERE s_name='$DataMundoAnuncio[1][provincia]'");
        echo 
mysql_num_rows($copro); // este igual me sale 0
        
print_r($DataMundoAnuncio);
        
print_r($DataMundoAnuncio[1][provincia]); // pero aqui este tiene un valor que si existe en la BD. 
$DataMundoAnuncio es un array con otros fila de array dentro de si mismo. voy a probar con trim y ya te digo como me va.

Gracias
  #4 (permalink)  
Antiguo 05/04/2012, 12:28
 
Fecha de Ingreso: octubre-2008
Mensajes: 70
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Consulta No Funciona Con Variable Pero Si con escrito

Por favor amigo, cámbiale el nombre a esta tabla, siempre los nombres deben ser claros.
  #5 (permalink)  
Antiguo 05/04/2012, 12:47
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 4 meses
Puntos: 26
Respuesta: Consulta No Funciona Con Variable Pero Si con escrito

Cita:
Iniciado por setenta Ver Mensaje
Por favor amigo, cámbiale el nombre a esta tabla, siempre los nombres deben ser claros.
setenta no puedo cambiar el nombre de la tabla, ya que extoy creando esta aplicacion encima de un script basico, lo cual si cambio el nombre de la tabla tendria que modificar un monton de archivos mas, y ya he perdido el dia entero solo en este maldito codigo q no me funcion, pero gracias por responder.

Siguiendo pruebas tengo el siguiente codigo basado en gjx2:

Código HTML:
		$provincia = trim($DataMundoAnuncio[1][provincia]);
		$sql = "SELECT * FROM clasi_t_region WHERE s_name='".$provincia."'";
		$copro = mysql_query($sql);
		echo mysql_num_rows($copro)."<br/>";
		print_r($sql);
		echo "<br/>";
		print_r($DataMundoAnuncio[1][provincia]);
Y esto es lo que me devuelve:

Código:
0
SELECT * FROM clasi_t_region WHERE s_name='Madrid'
Madrid
Ya no se que hacer alguien que me diga algo please
  #6 (permalink)  
Antiguo 05/04/2012, 13:07
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Consulta No Funciona Con Variable Pero Si con escrito

Realmente tienes en la tabla clasi_t_region un s_name con el nombre de Madrid
Recuerda que el nombre tiene que ser tal cual como esta en la tabla.
  #7 (permalink)  
Antiguo 05/04/2012, 13:13
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 4 meses
Puntos: 26
Respuesta: Consulta No Funciona Con Variable Pero Si con escrito

Ya he solucionado el problema, tal parece en los valores de las variables habia un codigo html finalizando uno que no habia empezado "</span>", lo cual hacia que este no se mostrase en el codigo fuente de la pagina y asi no podia darme cuenta, ademas de ello tambien habia un espacio antes del valor.

Lo raro es que cuando se imprime no aparecia este codigo.

Gracias de todos modos.

Por si a alguien le puede servir esto es lo que hice:


Código:
$provincia = trim(chop(str_replace("</span>","",$da[provincia])));
$provi = ReemplazaRegiones($provincia); //Aqui reemplazo acentos y ñs para que no me de problema en la BD
$copro = mysql_query("SELECT * FROM clasi_t_region WHERE s_name='$provi'");
$numpro = mysql_num_rows($copro);

if($numpro==0){
 echo "Grrrr...!";
}else{
 echo "POR FIN!!!";
}
Si tienen este tipo de problemas traten de limpiar lo mejor que puedan el valor que estan comparando.

Saludos.

Etiquetas: escrito, html, mysql, sql, tabla, variables
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 12:44.