Foros del Web » Programando para Internet » PHP »

Problemas con bucle while

Estas en el tema de Problemas con bucle while en el foro de PHP en Foros del Web. Hola Amigos se me presento un problema y necesito de su ayuda tengo este codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $sql4 = mysql_query ( ...
  #1 (permalink)  
Antiguo 20/12/2011, 06:39
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Problemas con bucle while

Hola Amigos
se me presento un problema y necesito de su ayuda
tengo este codigo

Código PHP:
Ver original
  1. $sql4=mysql_query("SELECT M.marca_id, M.marca_detalle FROM marcas M",Conectar::con())or die (mysql_error()) ;
  2. while($fila4=mysql_fetch_array($sql4))
  3. {      
  4.         $sql5 = mysql_query("SELECT MR.manufacturer_id FROM manufacturer MR ",Conectarse::remota())or die (mysql_error()) ;
  5.         while($fila5=mysql_fetch_array($sql5))
  6.         {      
  7.        
  8.             if($fila4['marca_id']==$fila5['manufacturer_id'])
  9.                     {
  10.                         mysql_query("UPDATE manufacturer SET  name='".$fila4['marca_detalle'] ."' WHERE manufacturer_id = ".$fila4['marca_id'],Conectarse::remota())or die (mysql_error()) ;
  11.                     }
  12.                     else
  13.                     {  
  14.                         mysql_query("INSERT INTO manufacturer VALUES('".$fila4['marca_id']."','".$fila4['marca_detalle']."','','0')",Conectarse::remota())or die (mysql_error());
  15.                         //mysql_query("DELETE FROM manufacturer WHERE manufacturer_id WHERE manufacturer_id = ".$fila5['manufacturer_id'] ,Conectarse::remota());
  16.                     }
  17.         }
  18. }
mi problema es que cuando lo ejecuto la bd me da este error
Duplicate entry '1' for key 'PRIMARY'
es obvio que el while esta queriendo hacer siempre lo mismo
pero no se como resolverlo para que se ejecute una sola vez por cada registro que tenga el array
MUchas gracias por ayudar a este novato
Saludos

Última edición por tumbero_x; 20/12/2011 a las 06:45
  #2 (permalink)  
Antiguo 20/12/2011, 06:49
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Problemas con bucle while

Hola tumbero_x, puedes mostrar la estructura de tu base de datos , tienes algun campo autoincrementable?


Saludos


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #3 (permalink)  
Antiguo 20/12/2011, 06:52
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

Hola bUllan9ebrio
Si, hay uno que es autoincrementable
la idea de ese codigo es que si los registros son iguales haga un update y si que haga un insert
  #4 (permalink)  
Antiguo 20/12/2011, 06:55
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

La estructura del while-while-if esta bien.

¿Este es el codigo original, o lo editaste para que lo entendamos?
__________________
Mono programando!
twitter.com/eguimariano
  #5 (permalink)  
Antiguo 20/12/2011, 06:57
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

si si , es el codigo original
(esta re mal no? jaja)
  #6 (permalink)  
Antiguo 20/12/2011, 07:14
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Provemos algo distinto:
Código PHP:
$sql4=mysql_query("SELECT M.marca_id, M.marca_detalle FROM marcas M",Conectar::con())or die (mysql_error()) ;
$fila4=mysql_fetch_row($sql4);
// cerra la conexion local.
$sql5 mysql_query("SELECT MR.manufacturer_id FROM manufacturer MR ",Conectarse::remota())or die (mysql_error()) ;
$fila5=mysql_fetch_row($sql5);

for( 
$i 0$i count($fila4); $i++)
{
 if( 
in_array($fila4[$i], $fila5)
 {
 
mysql_query("UPDATE manufacturer SET  name='".$fila4[$i][1] ."' WHERE manufacturer_id = ".$fila4[$i][0],Conectarse::remota())or die (mysql_error()) ;
 }else{
 
mysql_query("INSERT INTO manufacturer VALUES('".$fila4[$i][0]."','".$fila4[$i][1]."','','0')",Conectarse::remota())or die (mysql_error());

 }
}
// cerra la conexion remota. 
__________________
Mono programando!
twitter.com/eguimariano
  #7 (permalink)  
Antiguo 20/12/2011, 07:23
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

Buenisimo gracias!!!
pero me esta tirando un error el codigo
Parse error: syntax error, unexpected '{' in /home/sincroni/public_html/sv/act_web.php on line 99
y la verdad yo lo veo perfecto tenes idea que puede ser la linea 99 es esta
if(in_array($fila4[$i],$fila5)
{ // esta es la linea99
muchas gracias
  #8 (permalink)  
Antiguo 20/12/2011, 07:29
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Me faltaba cerrar el if

Código PHP:
$sql4=mysql_query("SELECT M.marca_id, M.marca_detalle FROM marcas M",Conectar::con())or die (mysql_error()) ; 
$fila4=mysql_fetch_row($sql4); 
// cerra la conexion local. 
$sql5 mysql_query("SELECT MR.manufacturer_id FROM manufacturer MR ",Conectarse::remota())or die (mysql_error()) ; 
$fila5=mysql_fetch_row($sql5); 

for( 
$i 0$i count($fila4); $i++) 

 if( 
in_array($fila4[$i], $fila5) )
 { 
 
mysql_query("UPDATE manufacturer SET  name='".$fila4[$i][1] ."' WHERE manufacturer_id = ".$fila4[$i][0],Conectarse::remota())or die (mysql_error()) ; 
 }else{ 
 
mysql_query("INSERT INTO manufacturer VALUES('".$fila4[$i][0]."','".$fila4[$i][1]."','','0')",Conectarse::remota())or die (mysql_error()); 

 } 

__________________
Mono programando!
twitter.com/eguimariano
  #9 (permalink)  
Antiguo 20/12/2011, 07:31
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

ya esta me faltaba cerrar el if
y ME FUNCIONO PERFECTO!!!!
gracias
AHora necesito eliminar los id que no estan en la tabla marcas pero si en la tabla manufacturer
como lo podria lograr?
  #10 (permalink)  
Antiguo 20/12/2011, 07:38
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Agregale este for abajo:

Código PHP:
for( $i 0$i count($fila5); $i++) 

 if( !
in_array($fila5[$i], $fila4) )
 { 
mysql_query("DELETE FROM manufacturer WHERE manufacturer_id WHERE manufacturer_id = ".$fila5[$i] ,Conectarse::remota());
 } 

__________________
Mono programando!
twitter.com/eguimariano
  #11 (permalink)  
Antiguo 20/12/2011, 07:49
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

Perdon pero me equivoque, no me esta funcionando como necesito
no hace el update y hace un insert vacio
disculpame mi ignorancia pero que podria ser?
Muchas gracias!!!
  #12 (permalink)  
Antiguo 20/12/2011, 09:09
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

[QUOTE=SirDuque;4073086]Agregale este for abajo:

[PHP]
echo "<pre>";
print_r($fila5);
echo "</pre>";
echo "<pre>";
print_r( $fila4);
echo "</pre>";

Para ver los resultados. de los dos select
__________________
Mono programando!
twitter.com/eguimariano
  #13 (permalink)  
Antiguo 20/12/2011, 09:15
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

me esta dando este resultado , pero me faltan registros , en total son 40 y solamente esta tomando el primero
Array
(
[0] => 1
)
Array
(
[0] => 1
[1] => hp
)
Array
(
[0] => 1
)
Array
(
[0] => 1
[1] => hp
)
  #14 (permalink)  
Antiguo 20/12/2011, 09:57
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Eso no me sirve...

OK Pone este codigo, en ves usar los Query los imprimimos.

Código PHP:
$sql4=mysql_query("SELECT M.marca_id, M.marca_detalle FROM marcas M",Conectar::con())or die (mysql_error()) ;  
$fila4=mysql_fetch_row($sql4);  
// cerra la conexion local.  
$sql5 mysql_query("SELECT MR.manufacturer_id FROM manufacturer MR ",Conectarse::remota())or die (mysql_error()) ;  
$fila5=mysql_fetch_row($sql5);  

for( 
$i 0$i count($fila4); $i++)  
{  
 if( 
in_array($fila4[$i], $fila5) ) 
 {  
 echo 
"UPDATE manufacturer SET  name='".$fila4[$i][1] ."' WHERE manufacturer_id = ".$fila4[$i][0]."<br>";  
 }else{  
 echo 
"INSERT INTO manufacturer VALUES('".$fila4[$i][0]."','".$fila4[$i][1]."','','0') <br>";
 }  

__________________
Mono programando!
twitter.com/eguimariano
  #15 (permalink)  
Antiguo 20/12/2011, 10:00
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

me imprimio esto

UPDATE manufacturer SET name='' WHERE manufacturer_id = 1
INSERT INTO manufacturer VALUES('h','p','','0')

Gracias por tu paciencia!!!
  #16 (permalink)  
Antiguo 20/12/2011, 10:19
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Cita:
Iniciado por tumbero_x Ver Mensaje
me imprimio esto

UPDATE manufacturer SET name='' WHERE manufacturer_id = 1
INSERT INTO manufacturer VALUES('h','p','','0')

Gracias por tu paciencia!!!
¿Y como seria correcto?
__________________
Mono programando!
twitter.com/eguimariano
  #17 (permalink)  
Antiguo 20/12/2011, 10:28
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

Perdon
lo correcto seria asi

UPDATE manufacturer SET name='' WHERE manufacturer_id = 1
INSERT INTO manufacturer VALUES('1','hp','','0')
pero igualmente esta recorriendo un solo elemento del array
tenes idea porque?
Gracias
  #18 (permalink)  
Antiguo 20/12/2011, 10:33
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

volvamos al bucle, y mostrame lo que imprime:


Código PHP:
$sql4=mysql_query("SELECT M.marca_id, M.marca_detalle FROM marcas M",Conectar::con())or die (mysql_error()) ;
while(
$fila4=mysql_fetch_array($sql4))
{       
        
$sql5 mysql_query("SELECT MR.manufacturer_id FROM manufacturer MR ",Conectarse::remota())or die (mysql_error()) ;
        while(
$fila5=mysql_fetch_array($sql5))
        {       
        
            if(
$fila4['marca_id']==$fila5['manufacturer_id'])
                    { 
                        echo 
"UPDATE manufacturer SET  name='".$fila4['marca_detalle'] ."' WHERE manufacturer_id = ".$fila4['marca_id']."<br>";
                    }
                    else 
                    {   
                        echo 
"INSERT INTO manufacturer VALUES('".$fila4['marca_id']."','".$fila4['marca_detalle']."','','0') <br>";

                       }
        }

__________________
Mono programando!
twitter.com/eguimariano
  #19 (permalink)  
Antiguo 20/12/2011, 10:38
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

te pongo todo lo que me imprimio

UPDATE manufacturer SET name='hp' WHERE manufacturer_id = 1
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('1','hp','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
UPDATE manufacturer SET name='epson' WHERE manufacturer_id = 3
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('3','epson','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
UPDATE manufacturer SET name='hasar' WHERE manufacturer_id = 5
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('5','hasar','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
UPDATE manufacturer SET name='samsung' WHERE manufacturer_id = 7
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('7','samsung','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
UPDATE manufacturer SET name='Asus' WHERE manufacturer_id = 9
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('9','Asus','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
UPDATE manufacturer SET name='Gygabyte' WHERE manufacturer_id = 11
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('11','Gygabyte','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
UPDATE manufacturer SET name='creative' WHERE manufacturer_id = 13
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('13','creative','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
UPDATE manufacturer SET name='Intel' WHERE manufacturer_id = 15
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('15','Intel','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
UPDATE manufacturer SET name='Amd' WHERE manufacturer_id = 17
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')
INSERT INTO manufacturer VALUES('17','Amd','','0')

UPDATE manufacturer SET name='kodak' WHERE manufacturer_id = 27
INSERT INTO manufacturer VALUES('27','kodak','','0')
INSERT INTO manufacturer VALUES('27','kodak','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
UPDATE manufacturer SET name='Viewsonic' WHERE manufacturer_id = 29
INSERT INTO manufacturer VALUES('29','Viewsonic','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
INSERT INTO manufacturer VALUES('31','Apple','','0')
UPDATE manufacturer SET name='Apple' WHERE manufacturer_id = 31
ahora si esta trayendo todo
  #20 (permalink)  
Antiguo 20/12/2011, 10:53
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Tenes un grabe problema en el Servidor Remoto.

fijate:
SELECT MR.manufacturer_id FROM manufacturer MR WHERE manufacture_id ='1'
Y decime cuantos registros aparecen.
__________________
Mono programando!
twitter.com/eguimariano
  #21 (permalink)  
Antiguo 20/12/2011, 10:56
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

ya te digo
  #22 (permalink)  
Antiguo 20/12/2011, 11:01
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

me dio esto
MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). ( La consulta tardó 0.0085 seg )
pero esta bien porque no hay ningun registro con esa id
empieza des el 5 y va hasta el 10 solamente tengo 5 registros
te agradezco toda la ayuda que me estas brindando
ahora, todos estos problemas que tengo se me solucionan vaciando la tabla manufacturer y volver a llenarla con los registros de marcas
pero el otro dia en el foro me dijeron que no haga eso ni loco, y con la poca experiencia que tengo , segui ese consejo
vos que opinas al respecto
si vacio la tabla y despues la vuelvo a llenar , tender algun problema?
  #23 (permalink)  
Antiguo 20/12/2011, 11:20
 
Fecha de Ingreso: enero-2004
Ubicación: Medellin
Mensajes: 178
Antigüedad: 20 años, 3 meses
Puntos: 8
Respuesta: Problemas con bucle while

La verdad mi amigo, yo toda esas tareas las resumiria en 3 simples querys de SQL ejecutados en ese orden.

Código SQL:
Ver original
  1. //UPDATE
  2. UPDATE manufacturer  
  3. SET name = (
  4.   SELECT  M.marca_detalle FROM marcas M WHERE M.marca_id = manufacturer.manufacturer_id
  5. );
  6.  
  7. //INSERT
  8. INSERT INTO manufacturer (manufacturer_id,name)
  9. SELECT M.marca_id, M.marca_detalle FROM marcas M WHERE M.marca_id NOT IN( SELECT  manufacturer_id FROM manufacturer)
  10.  
  11.  
  12. //DELETE
  13. DELETE FROM manufacturer WHERE manufacturer_id NOT IN(SELECT M.marca_id FROM marcas M)


Código PHP:
Ver original
  1. //actualizo los registros comunes
  2. $sql=mysql_query("UPDATE manufacturer  
  3. SET name = (
  4.  SELECT  M.marca_detalle FROM marcas M WHERE M.marca_id = manufacturer.manufacturer_id
  5. )",Conectar::con())or die (mysql_error()) ;
  6.  
  7. //Ingreso los registros que no existan en manufacurer
  8. $sql =mysql_query("INSERT INTO manufacturer (manufacturer_id,name)
  9. SELECT M.marca_id, M.marca_detalle FROM marcas M WHERE M.marca_id NOT IN( SELECT  manufacturer_id FROM manufacturer)",Conectar::con())or die (mysql_error()) ;
  10.  
  11.  
  12. //Elimino los id que no estan en la tabla marcas pero si en la tabla manufacturer
  13. $sql=mysql_query("DELETE FROM manufacturer WHERE manufacturer_id NOT IN(SELECT M.marca_id FROM marcas M)",Conectar::con())or die (mysql_error()) ;

Un saludo.

Última edición por vicman; 20/12/2011 a las 11:28 Razón: Ejemplo de como deberia ejecutarse
  #24 (permalink)  
Antiguo 20/12/2011, 11:28
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

Hola vicmanya estube probandolo asi pero el problema es que para hacer una subconsulta necesito que las 2 bases de datos esten en el mismo servidor y yo las tengo separadas
Gracias!!!!
  #25 (permalink)  
Antiguo 21/12/2011, 07:26
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

tumbero_x

En el servidor A (seria el local) cuantos registros tenes.

En el servidor B (seria el remoto) cuantos registros tenes.

Para eliminar el doble Bucle, lo elimnamos de la siguiente manera:

Código PHP:
$SQL_A "SELECT id,detalle FROM tablaA";
$QUERY_A mysql_query$SQL_A )or die( "Query A: ".mysql_error() );
while(
$a mysql_fetch_row$QUERY_A ) )
{
 
$SQL_B "SELECT id,detalle FROM tablaB WHERE id='{$a[0]}'";
 
$QUERY_B mysql_query$SQL_B ) or die( "Query B: ".mysql_error());
 
$row mysql_num_rows($QUERY_B); 
 if( 
$row )
 {
    echo 
"El id: {$d[0]} esta duplicado en el servidor Remoto";
 }elseif( 
$row == )
 {
  
$SQL_B "SELECT id,detalle FROM tablaB WHERE id='{$d[0]}'";
  
$QUERY_Bis mysql_query$SQL_B ) or die( "Query B: ".mysql_error());
  
$d mysql_fetch_row($QUERY_Bis);

   
$SQL_INSERT "INSERT INTO tablaB VALUES ('{$d[0]}','{[1]}',NULL,'0')";
   
mysql_query$SQL_INSERT ) or die( "Error al Insert: ".mysql_error());
   echo 
"Se agrego el id: {$d[0]}";
 }elseif( 
$row == )
 {
  
$SQL_B "SELECT id,detalle FROM tablaB WHERE id='{$d[0]}'";
  
$QUERY_Bis mysql_query$SQL_B ) or die( "Query B: ".mysql_error());
  
$d mysql_fetch_row($QUERY_Bis);

   
$SQL_UPDATE "UPDATE tablaB SET detalle = '{$d[1]}' WHERE id='{$d[0]}'";
   
mysql_query$SQL_UPDATE ) or die( "Error al Update: ".mysql_error());
   echo 
"Se actualizo el id: {$d[0]}";
 }

__________________
Mono programando!
twitter.com/eguimariano
  #26 (permalink)  
Antiguo 21/12/2011, 07:30
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con bucle while

Hola SirDuque
segui viendo como lo podia solucionar
y en algun lado descubri una sentencia mysql que no tenia ni idea que existia
Código PHP:
Ver original
  1. mysql_query("INSERT INTO manufacturer (manufacturer_id,name,image,sort_order)VALUES('".$fila4['marca_id']."','".$fila4['marca_detalle']."','','0') ON DUPLICATE KEY UPDATE name='".$fila4['marca_detalle']."' ",Conectarse::remota());
y me ahorro unos cuantos if y else en PHP
asi que esta es my solucion
te agradezco infinitamente todo el tiempo que me has dedicado
Saludos!!!
  #27 (permalink)  
Antiguo 21/12/2011, 09:12
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problemas con bucle while

Cita:
Iniciado por tumbero_x Ver Mensaje
Hola SirDuque
segui viendo como lo podia solucionar
y en algun lado descubri una sentencia mysql que no tenia ni idea que existia
Código PHP:
Ver original
  1. mysql_query("INSERT INTO manufacturer (manufacturer_id,name,image,sort_order)VALUES('".$fila4['marca_id']."','".$fila4['marca_detalle']."','','0') ON DUPLICATE KEY UPDATE name='".$fila4['marca_detalle']."' ",Conectarse::remota());
y me ahorro unos cuantos if y else en PHP
asi que esta es my solucion
te agradezco infinitamente todo el tiempo que me has dedicado
Saludos!!!
Excelente, yo tampoco la conocia. XD!
__________________
Mono programando!
twitter.com/eguimariano

Etiquetas: bucle, mysql, registro, sql
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 21:12.