Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] INSERT, UPDATE y DELETE con PHP

Estas en el tema de INSERT, UPDATE y DELETE con PHP en el foro de PHP en Foros del Web. Buenas noches, Tengo un pequeño problema, actualmente tengo un sistema para exportar información de un archivo xml a mysql, el problema lo tengo en que ...
  #1 (permalink)  
Antiguo 11/07/2013, 16:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 80
Antigüedad: 17 años, 2 meses
Puntos: 0
INSERT, UPDATE y DELETE con PHP

Buenas noches,

Tengo un pequeño problema, actualmente tengo un sistema para exportar información de un archivo xml a mysql, el problema lo tengo en que cada vez que ejecuto la consulta me agrega los datos continuamente, este es mi codigo
Código PHP:
 $count=0; foreach ($xml->CategoriesControllerCategoryView as $CategoriesControllerCategoryView) {
  
$qry "INSERT INTO categorias ".
     
"(CategoryGroupId, CategoryId, CategoryName, ParentCategoryId)".
     
" VALUES ('$CategoriesControllerCategoryView->CategoryGroupId', ".
     
"'$CategoriesControllerCategoryView->CategoryId', ".
     
"'".addslashes($CategoriesControllerCategoryView->CategoryName)."', ".
     
"'$CategoriesControllerCategoryView->ParentCategoryId')"
Lo que quiero ahora es que me compruebe si "CategoryName" existe y si existe haga un update de los demas valores, miestras que si no existe haga un INSERT INTO y si ya no esta haga un DELETE, como podria realizar este procedimiento?

De ante mano muchisimas GRACIAS!

Última edición por UkySoft; 11/07/2013 a las 16:22
  #2 (permalink)  
Antiguo 11/07/2013, 19:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: INSERT, UPDATE y DELETE con PHP

Podrías usar REPLACE en lugar de INSERT INTO, pero para saber si una categoría ya no está, por ejemplo: tendrías que guardar cada ID en un array, luego, recorrer la tabla para ver si existe en el array o, de lo contrario, eliminar.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 12/07/2013, 00:23
 
Fecha de Ingreso: febrero-2007
Mensajes: 80
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: INSERT, UPDATE y DELETE con PHP

Primero de todo muchas gracias por tu respuesta.

Me podrias hechar un poco un cable con lo del tema del array?
  #4 (permalink)  
Antiguo 12/07/2013, 01:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: INSERT, UPDATE y DELETE con PHP

Antes de tu ciclo define un array para almacenar las ID's, dentro del ciclo lo vas llenando y, al finalizar, tendrás que recorrer la tabla y comparar con esta lista, si no existe, eliminas el elemento:

Código PHP:
Ver original
  1. // Defines el array antes del ciclo
  2. $ids = array();
  3.  
  4. foreach(/* Aquí las opciones para recorrer el XML */) {
  5.     // Después del REPLACE guardas la id actual
  6.     $ids[] = $CategoriesControllerCategoryView->CategoryId;
  7. }
  8.  
  9. // Al finalizar, ejecutas una consulta para leer todos los ID's en la tabla
  10. $query = 'SELECT categoryid FROM categorias';
  11. // Aqui aplica la librería que estás usando mysql, mysqli, PDO
  12. $res = mysql_query($query);
  13. // Recorres los resultados
  14. while(list($id) = mysql_fetch_row($res)) {
  15.       if(!in_array($id, $ids)) {
  16.              // No existe en el XML
  17.              // Aquí ejecutas la consulta para eliminar
  18.       }
  19. }
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 12/07/2013, 08:21
 
Fecha de Ingreso: febrero-2007
Mensajes: 80
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: INSERT, UPDATE y DELETE con PHP

Buenas tardes,

Algo estoy haciendo mal seguro, porque no me funciona:

Código PHP:
  $ids = array();
  foreach(
$xml->CategoriesControllerCategoryView as $CategoriesControllerCategoryView) {
    
// Después del REPLACE guardas la id actual
    
$ids[] = $CategoriesControllerCategoryView->CategoryId;
}
 
// Al finalizar, ejecutas una consulta para leer todos los ID's en la tabla
$query 'SELECT categoryid FROM categorias';
// Aqui aplica la librería que estás usando mysql, mysqli, PDO
$res mysql_query($query);
// Recorres los resultados

while(list($id) = mysql_fetch_row($res)) {
      if(
in_array($id$ids)) {
        
         
            
$sql "DELETE FROM categorias WHERE CategoryId = '$ids'";
      
$result2 mysql_query($sql) or die(mysql_error());
      

Lo que no entiendo es en que hace referencia $id y $ids o como lo tengo que estructurar.

GRACIAS!


Muchas gracias por tu atención.

Etiquetas: delete, insert, mysql, update
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 10:38.