Foros del Web » Programando para Internet » PHP »

Cargar dos while

Estas en el tema de Cargar dos while en el foro de PHP en Foros del Web. Buenas noches, Primero de todo MIL gracias. Tengo un problema que me reconcome todo el dia y ya no puedo más. Tengo el siguiente codigo: ...
  #1 (permalink)  
Antiguo 16/07/2013, 16:21
 
Fecha de Ingreso: febrero-2007
Mensajes: 80
Antigüedad: 17 años, 2 meses
Puntos: 0
Cargar dos while

Buenas noches,

Primero de todo MIL gracias.

Tengo un problema que me reconcome todo el dia y ya no puedo más.

Tengo el siguiente codigo:

Código PHP:

$xml_file 
'xml/categoria.xml';
if (
file_exists($xml_file)) {

$xml simplexml_load_file($xml_file);
} else {
exit(
'Error al intentar abrir el fichero '.$xml_file);
}

$ids = array();
foreach(
$xml->CategoriesControllerCategoryView as $CategoriesControllerCategoryView) {
$ids[] = $CategoriesControllerCategoryView->CategoryId;


$query 'SELECT categoryid FROM categorias';
/
$res mysql_query($query);


while(list(
$id) = mysql_fetch_row($res)) {
      if(
in_array($id$ids)) {

      } else {
                         
$sql "DELETE FROM categorias WHERE CategoryId = '$id'";
      
$result2 mysql_query($sql) or die(mysql_error());
      echo 
$sql; echo "</br>";
      }

Vale el problema lo tengo en que realmente necesito cargar esta función varias veces, es decir, tengo una base de datos en la cual hay unos ID's, esos ID's estan asociados a nombres de ficheros xml en este caso esta función funciona perfectamente el problema es cuando realizo una consulta a la DB para ver el nombre del fichero y en la funcion completa hago otro while para que me realice esta funcion con todos los archivos XML que se han cargado a traves de la ID de la DB

Espero haber explicado bien, el tema es que si meto otro WHILE me hace un DELETE de todo lo que hay en la base de datos no compara

Buenas noches
  #2 (permalink)  
Antiguo 16/07/2013, 16:51
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Cargar dos while

Cita:
Iniciado por UkySoft Ver Mensaje
Buenas noches,

Primero de todo MIL gracias.

Tengo un problema que me reconcome todo el dia y ya no puedo más.

Tengo el siguiente codigo:

Código PHP:

$xml_file 
'xml/categoria.xml';
if (
file_exists($xml_file)) {

$xml simplexml_load_file($xml_file);
} else {
exit(
'Error al intentar abrir el fichero '.$xml_file);
}

$ids = array();
foreach(
$xml->CategoriesControllerCategoryView as $CategoriesControllerCategoryView) {
$ids[] = $CategoriesControllerCategoryView->CategoryId;


$query 'SELECT categoryid FROM categorias';
/
$res mysql_query($query);


while(list(
$id) = mysql_fetch_row($res)) {
      if(
in_array($id$ids)) {

      } else {
                         
$sql "DELETE FROM categorias WHERE CategoryId = '$id'";
      
$result2 mysql_query($sql) or die(mysql_error());
      echo 
$sql; echo "</br>";
      }

Vale el problema lo tengo en que realmente necesito cargar esta función varias veces, es decir, tengo una base de datos en la cual hay unos ID's, esos ID's estan asociados a nombres de ficheros xml en este caso esta función funciona perfectamente el problema es cuando realizo una consulta a la DB para ver el nombre del fichero y en la funcion completa hago otro while para que me realice esta funcion con todos los archivos XML que se han cargado a traves de la ID de la DB

Espero haber explicado bien, el tema es que si meto otro WHILE me hace un DELETE de todo lo que hay en la base de datos no compara

Buenas noches
no termino de entender tu problema, por qué no divides la función en dos, una función para una cosa y otra para otra cosa, le pasa parámetros y listo, si trabajas con objetos pues un método para una cosa y otro para otra o directamente dos clases.
  #3 (permalink)  
Antiguo 17/07/2013, 16:45
 
Fecha de Ingreso: febrero-2007
Mensajes: 80
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Cargar dos while

Primero de todo muchas gracias por tu respuesta.

Ya lo he realizado como me has dicho pero tengo un pequeño problema que imagino que es de programación, he hecho este codigo

Código PHP:
$query mysql_query("SELECT * FROM categorias");

while(
$enc1 mysql_fetch_array($query)) {

$xml_file 'xml/'.$enc1['CategoryId'].'.xml';
if (
file_exists($xml_file)) {

$xml simplexml_load_file($xml_file);
} else {
exit(
'Error al intentar abrir el fichero '.$xml_file);
}

$variable "ProductView";

foreach (
$xml->$variable as $ProductView) {

 
$sql "DELETE FROM productos WHERE Id != '".$ProductView->CategoryId."'";
  
$result2 mysql_query($sql) or die(mysql_error());
 echo 
$sql; echo "</br>";

}


El tema esta en que me borra toda la base de datos no los productos que haya diferente entre XML y DB


Mill gracias
  #4 (permalink)  
Antiguo 18/07/2013, 04:54
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Cargar dos while

Cita:
Iniciado por UkySoft Ver Mensaje
Primero de todo muchas gracias por tu respuesta.

Ya lo he realizado como me has dicho pero tengo un pequeño problema que imagino que es de programación, he hecho este codigo

Código PHP:
$query mysql_query("SELECT * FROM categorias");

while(
$enc1 mysql_fetch_array($query)) {

$xml_file 'xml/'.$enc1['CategoryId'].'.xml';
if (
file_exists($xml_file)) {

$xml simplexml_load_file($xml_file);
} else {
exit(
'Error al intentar abrir el fichero '.$xml_file);
}

$variable "ProductView";

foreach (
$xml->$variable as $ProductView) {

 
$sql "DELETE FROM productos WHERE Id != '".$ProductView->CategoryId."'";
  
$result2 mysql_query($sql) or die(mysql_error());
 echo 
$sql; echo "</br>";

}


El tema esta en que me borra toda la base de datos no los productos que haya diferente entre XML y DB


Mill gracias
Entonces lo que te está fallando es el delete en la base de datos no?

qué se supone que contiene $ProductView->CategoryId?

¿has comprobado que el valor que está llegando ahí es el que esperas que sea o que está llegando algún valor escepto 0 o null?

hazle un var_dump($ProductView->CategoryId)

a ver qué te devuelve

Etiquetas: mysql, select, 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 15:59.