Foros del Web » Programando para Internet » PHP »

Problemas al recorrer resultados

Estas en el tema de Problemas al recorrer resultados en el foro de PHP en Foros del Web. Primero que todo les mando un saludo. llevo bastante tiempo intentando solucionar este problema y no tengo resultados satisfactorios. por lo mismo recurro a uds. ...
  #1 (permalink)  
Antiguo 16/10/2009, 10:18
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Exclamación Problemas al recorrer resultados

Primero que todo les mando un saludo.
llevo bastante tiempo intentando solucionar
este problema y no tengo resultados satisfactorios.
por lo mismo recurro a uds. porque son mi unica ayuda.
les cuento.
estoy leyendo un archivo exel.
leo sus campos y luego de hacer una qery con la BD x si estan o no
los campos que estan en el exel, deveria discriminar y decirme que ya estan ingresados.
pero creo tener problemas con los indices del row2 el cual guarda los ruc_car
para compararlos con los del exel (que tambien son rucs).
espero me ayuden o guien un poco porque lo necesito y mucho. Saludos!
Código PHP:
        $archivo $_FILES['Ingreso_exel'];
        
$cons_def $_POST['Lista_def'];
        
//Obtiene el nombre original del archivo.
        //$name = basename($_FILES['Ingreso_exel']['name']);
        //obtiene el nombre temporal del archivo.
        
$name = ($_FILES['Ingreso_exel']['tmp_name']);
        
//Hacer consulta para comparar carpetas del Defensor.
        
$result mysql_query('SELECT Nom_Def FROM defensores WHERE Nom_Def=\''.$cons_def.'\'');
        
//$result = mysql_query('SELECT Nom_Def FROM defensores WHERE Nom_Def='.$cons_def);
        //$result = mysql_query('SELECT Nom_Def FROM defensores WHERE Nom_Def='.$cons_def.'');
        
$row mysql_fetch_array($result); //guardar resultados de la BD en un array
        //echo $row['Nom_Def'];
        
$result2 mysql_query('SELECT Ruc_Car FROM carpetas');    
        
$row2 mysql_fetch_array($result2); //guardar resultados de la BD en un array
        //echo $row2['Ruc_Car'];
    
if($row['Nom_Def'] == $cons_def){
        
//Crear instancia de la clase
        
$datos = new Spreadsheet_Excel_Reader();
        
//Define Codificacion
        
$datos->setOutputEncoding('CP1251');
        
//le decimos que archivo queremos leer
        
$datos->read($name);
        echo 
"<br>Archivo Leido Exitosamente!<br>";
        
$celdas $datos->sheets[0]['cells'];
        echo 
"<br> LOS DATOS DEL DOCUMENTO SON: <br><br>";
        
//Construir tabla html para mostrar contenidos.
        
echo "<table width='300' align='center'>";
        for (
$i 1$i <= $datos->sheets[0]['numRows']; $i++){
                for (
$j 1$j <= $datos->sheets[0]['numCols']; $j++)
                    if(
$datos->sheets[0]['cells'][$i][$j] == $row2['Ruc_Car']){
                        echo 
"RUC ".$row2['Ruc_Car']." valido e ingresado <br>";
                        
//echo $datos->sheets[0]['cells'][$i][$j];
                        //echo "  ";
                        //echo "6";
                    
}else{
                        echo 
"RUC ".$datos->sheets[0]['cells'][$i][$j]." ya existe!";
                        echo 
"<br>";
                    }
                echo 
"<br>";
        }
        echo 
"</table>";
    }else
        echo 
"El xxxx Ingresado No Existe";
    } 
u.u
necesito ayuda pliss
se que despues de el 2° for va un do while para ahcer correr la row
pero el if me esta discriminando mal (incluso muetra las respuestas alreves).
porfa ayudenme!

Última edición por GatorV; 16/10/2009 a las 14:39
  #2 (permalink)  
Antiguo 16/10/2009, 19:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda urgente please!

Hola
Pues si sabes que te falta un while porque no lo pones?
antes del if pon esto
do{
y luego del if pon esto
}while($row2 == mysql_fetch_array($result2))
  #3 (permalink)  
Antiguo 17/10/2009, 18:54
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Ayuda urgente please!

Gracias x tu respuesta Morti,
tenias razon, eso faltaba pero lo puse en un post que me borro un moderador,
la verdad le hice unas modificaciones al cdigo, y en realidad ya nose que hacer.
el problema que tengo es en el if
me esta comparando mal los datos.
incluso intente meter los datos del exel en otra variable, pero aun sigue igual.
pero me di cuenta que el problema esta en la row2 de la query
ya que al imprimirla dentro de los ciclos ya no tiene valor.
alguien que me ayude porfa!
realmente necesito arreglar esto y todos los comentarios son importantes
GRACIAS!
PD: adjunto las modificaciones que le efectue.

$archivo = $_FILES['Ingreso_exel'];
$cons_def = $_POST['Lista_def'];
//Obtiene el nombre original del archivo.
//$name = basename($_FILES['Ingreso_exel']['name']);
//obtiene el nombre temporal del archivo.
$name = ($_FILES['Ingreso_exel']['tmp_name']);
//Hacer consulta para comparar carpetas del Defensor.
$result = mysql_query('SELECT Nom_Def FROM defensores WHERE Nom_Def=\''.$cons_def.'\'');
//$result = mysql_query('SELECT Nom_Def FROM defensores WHERE Nom_Def='.$cons_def);
//$result = mysql_query('SELECT Nom_Def FROM defensores WHERE Nom_Def='.$cons_def.'');
$row = mysql_fetch_array($result); //guardar resultados de la BD en un array
$result2 = mysql_query('SELECT Ruc_Car FROM carpetas');
$row2 = mysql_fetch_array($result2); //guardar resultados de la BD en un array

//EN ESTA PARTE IMPRIME CORRECTAMENTE LA ROW2

do
echo $row2['Ruc_Car']."<br>";
$var = ($row2['Ruc_Car']);
echo $var."--<br>";
while ($row2 = mysql_fetch_array($result2));
echo"-------------------------------------------------";
if($row['Nom_Def'] == $cons_def){
//Crear instancia de la clase
$datos = new Spreadsheet_Excel_Reader();
//Define Codificacion
$datos->setOutputEncoding('CP1251');
//le decimos que archivo queremos leer
$datos->read($name);
echo "<br>Archivo Leido Exitosamente!<br>";
$celdas = $datos->sheets[0]['cells'];
echo "<br> LOS DATOS DEL DOCUMENTO SON: <br><br>";
//Construir tabla html para mostrar contenidos.
echo "<table width='300' align='center'>";
for ($i = 1; $i <= $datos->sheets[0]['numRows']; $i++){
for ($j = 1; $j <= $datos->sheets[0]['numCols']; $j++){
$var[$i]=$datos->sheets[0]['cells'][$i][$j];
//echo $var[$i];
do{
echo $var[$i]."<br>";
echo $row2['Ruc_Car']."<br>";
echo "ahora se comparan<br>";
//SI SE FIJAN, AQUI INTENTE HACERLO DE OTRA FORMA PERO NADA.
if($var[$i] != $row2['Ruc_Car']){
echo "RUC ".$row2['Ruc_Car']." valido e ingresado <br>";
//echo $datos->sheets[0]['cells'][$i][$j];
echo " ";
//echo "6";
}else{
echo "RUC ".$row2['Ruc_Car']." ya existe!";
echo "<br>";
}
}while ($row2 = mysql_fetch_array($result2));
echo "<br>";
}
}
echo "</table>";
}else
echo "El asdasd Ingresado No Existe";
}
mysql_free_result($result);
mysql_free_result($result2);
.
.
.
  #4 (permalink)  
Antiguo 17/10/2009, 21:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ayuda urgente please!

Hola
Bueno, pues veo tu codigo y no se si hiciste lo que te comente, donde te decia que cambiaras esto

while ($row2 = mysql_fetch_array($result2));

por esto

while ($row2 == mysql_fetch_array($result2));
pues veo el código sin lo que te comente!
nos comentas
saludos
  #5 (permalink)  
Antiguo 19/10/2009, 06:16
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Ayuda urgente please!

la verdad es que si,
hice un do while como lo comente mas arriba (linea 10 de abajo hacia arriba).
lo recorre bien.
el problema no es de recorrer, sino del if.
porfavor quiero un consejo o sugerencia porfa!
gracias
  #6 (permalink)  
Antiguo 19/10/2009, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ayuda urgente please!

Por favor usa titulos de tema más descriptivos.
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 13:28.