Foros del Web » Programando para Internet » PHP »

no me compara dos cadenas.

Estas en el tema de no me compara dos cadenas. en el foro de PHP en Foros del Web. Hola Compañeros tengo un problema, lo que pasa es que tengo dos tablas una con apenas 2 campos y la otra con tres: una es ...
  #1 (permalink)  
Antiguo 07/01/2009, 14:25
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
no me compara dos cadenas.

Hola Compañeros tengo un problema, lo que pasa es que tengo dos tablas una con apenas 2 campos y la otra con tres:

una es soat2009 la cual tiene codprod y valor;

la otra es prodenlinea la cual tiene codigo, descri y soat.

nesecito con php o no se de que otra forma tomar el el codigo(de prodenlinea) y el valor(de soat2009) donde soat(de prodenlinea) sea = a codprod(de soat2009).

tengo este codigo pero resulta que no me entra el al if no se si lo tengo mal planteado o que pero es como si no hubiera nada que coincidiera, y reviso manualmente algun dato y si esta en la otra tabla, no se si me pueden ayudar de alguna forma muchas gracias.

aqui dejo el codigo que tengo

Código PHP:
<?php
set_time_limit
(0);
$link mysql_connect('localhost''root''');
if (!
$link) {
    die(
'Could not connect: ' mysql_error());
}
//echo 'Connected successfully';


$db_selected mysql_select_db('soat'$link);
if (!
$db_selected) {
    die (
'Can\'t use foo : ' mysql_error());
}

$result mysql_query('SELECT * from soat2009');

$numfilas $num_rows mysql_num_rows($result);

echo 
$numfilas;

for (
$i=0;$i<$numfilas;$i++)
{
     
    
rtrim(ltrim($codigo[$i] = mysql_result($result,$i,0)));    
    
rtrim(ltrim($valor[$i] = mysql_result($result,$i,1)));
    
//echo $codpro[$i];
    //echo"<br>";
      
}

 


$result1 mysql_query('SELECT * from prodenlinea');

$numfilas1 $num_rows1 mysql_num_rows($result1);
echo 
"<br>";
echo 
$numfilas1;

for (
$j=0;$j<$numfilas1;$j++)
{

    
rtrim(ltrim($codprod[$j] = mysql_result($result1,$j,0)));
    
rtrim(ltrim($descri[$j] = mysql_result($result1,$j,1)));
    
rtrim(ltrim($codsoat[$j] = mysql_result($result1,$j,2)));
    
    
            
}



for(
$k=0;$k<$numfilas1;$k++)
{
//echo $codsoat[$k];
        
for ($l=0;$l<$numfilas;$l++)
         {
             
             if(
$codigo[$l]==$codsoat[$k])
            {
                echo 
$codprod[$k]."|".$valor[$l];
            }
                 
         }

}

 






?>
  #2 (permalink)  
Antiguo 07/01/2009, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: no me compara dos cadenas.

Mmm y con un join??
Código sql:
Ver original
  1. SELECT * FROM soat2009 AS s INNER JOIN prodenlinea AS p ON s.codprod=p.soat

Saludos
  #3 (permalink)  
Antiguo 07/01/2009, 14:49
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: no me compara dos cadenas.

ya intente con un join, pero no se si es que me toma espacios o algo raro, por eso traté desde php, quitarle los espacios para ver si asi me funcionaba, pero nada, si hago el join me sale que ha devuelto 0 filas, y yo estoy mas que seguro que deben coicidir por lo menos 800 registros, de todas formas muchas gracias por responder.


Resulta que estuve revisando y pasa lo siguiente:


SELECT *
FROM `soat2009`
WHERE `codprod` = '27109'
LIMIT 0 , 30


esta consulta me muestra un registro que coincide, me copié este numero el 27109 de la tabla prodenlinea, pero luego que me voy y hago la misma consulta en la tabla prodenlinea que es de donde saqué el codigo me sale esto


MySQL ha devuelto un valor vacío (i.e., cero columnas). (La consulta tardó 0.0014 seg)

consulta SQL:

SELECT *
FROM `prodenlinea`
WHERE `soat` = '27109'
LIMIT 0 , 30

y es lo mismo, no se que pasa con la informacion, uds que me pdrían aconsejar para constatar que la informacion este bien???

Última edición por dontripi; 07/01/2009 a las 14:59
  #4 (permalink)  
Antiguo 07/01/2009, 15:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: no me compara dos cadenas.

Pues si te devuelve 0, es porque evidentemente no hay valores, trata de hacer algo así:
Código sql:
Ver original
  1. SELECT *
  2. FROM `prodenlinea`
  3. WHERE `soat` LIKE '%27109%'

Lo que te recomiendo es que no uses claves en strings, usa siempre claves numericas, son más rapidas y eficientes..

Saludos
  #5 (permalink)  
Antiguo 07/01/2009, 15:59
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: no me compara dos cadenas.

Muchas gracias GatorV siguiendo tu consejo decidí cambiar el tipo de datos por int y de una me funcionan las consultas quien sabe que basura se le pego a esos datos, de nuevo muchas gracias.
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 22:51.