Visa ett inlägg
Oläst 2012-04-11, 01:27 #1
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
jonssondesign jonssondesign är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2010
Inlägg: 709
Standard sql-satts som inte vill fungera..

Hejsan.

Har nu suttit ett par timmar med ett och samma problem, men jag kommer verkligen inte på någon lösning.

Vad jag vill åstadkomma:

Jag vill ladda upp och läsa av en xml-fil.
Där efter vill jag lägga in data från xml-filen till min databas.

Har angett kolumnen "url" som en unik index, så att det inte blir några dubbletter i databasen.

Sen vill jag kontrollera om det finns några "produkter" i databasen som inte finns med i xml filen.
De produkter som finns i databasen men inte i xml filen skall tas bort.

Mitt problem

Allt går som smort tills det kommer till att ta bort de produkter i datbasen som inte finns med i xml-filen.

Min kod

PHP-kod:
$upload_path "xml-files/";
    
$allowed_filetypes = array('.xml''.csv');
    
    
$filename $_FILES['uploadedfile']['name'];
    
$ext substr($filenamestrpos($filename,'.'), strlen($filename)-1);
    
    if(!
in_array($ext,$allowed_filetypes)) { die("Du har inte laddat upp en .xml- eller .csv-fil. Var vänlig försök igen."); }    
    if(!
is_writable($upload_path)) { die("Du kan inte ladda upp filen till mappen."); }
    
    if(
move_uploaded_file($_FILES['uploadedfile']['tmp_name'],$upload_path $filename)) {
        
$upload_sucess 'Filen laddades upp utan problem. Du kan kolla på den <a href="' $upload_path $filename '" title="$filename">här</a>';
        
        
// hämta ut data från xml-filen
        
$xml simplexml_load_file($upload_path $filename);
        foreach (
$xml->product as $product) {
            
$sale $product->fields->sale;
            
$product_image mysql_real_escape_string($product->fields->extraImageProductLarge);
            
$product_name mysql_real_escape_string($product->name);
            
$product_brand mysql_real_escape_string($product->brand);
            
$product_store mysql_real_escape_string($product->programName);
            
$product_price mysql_real_escape_string($product->price);
            
$product_url mysql_real_escape_string($product->productUrl);
            
$product_category mysql_real_escape_string($product->fields->productGroup);
            
$product_race mysql_real_escape_string($product->fields->gender);
            
$product_info mysql_real_escape_string($product->description);
            
            
// hämta data från databasen om de redan tillagda produkterna
            
$query "SELECT * FROM products";
            
$result mysql_query($query);
            while (
$row mysql_fetch_array($result)) {
                
                
$db_image $row['img'];
                
$db_name $row['title'];
                
$db_brand $row['brand'];
                
$db_store $row['store'];
                
$db_price $row['price'];
                
$db_url $row['url'];
                
$db_category $row['category'];
                
$db_race $row['race'];
                
$db_info $row['info'];
                
            }
            if (
$sale == 'true') {
            
                
$query "INSERT INTO products (img, title, brand, store, price, url, category, race, visible, info) VALUES ";
                
$query .= "('$product_image', '$product_name', '$product_brand', '$product_store', $product_price, '$product_url', '$product_category', '$product_race', 1, '$product_info') ";
                
$query .= "ON DUPLICATE KEY UPDATE url = '$product_url'";
                
$insert mysql_query($query) or die (mysql_error());
                
                    
$query "DELETE FROM products WHERE url <> '$product_url'";
                    
$delete mysql_query($query) or die (mysql_error());
                
            }
            
        } 
Det är denna snutt som strular för mig:

PHP-kod:
$query "DELETE FROM products WHERE url <> '$product_url'";
                    
$delete mysql_query($query) or die (mysql_error()); 
Vad som händer
Filen laddas upp, produkterna läggs till, allt går fint.
Sen när den kommer till att ta bort produkter så tar den bort ALLA produkter UTOM den sist tillagda.. hm.

Någon med några idéer varför denna kod är så elak och förstör för mig? :/
Eller du kanske kommer på en annan lösning på mitt problem?

Tack på förhand, Fredrik
jonssondesign är inte uppkopplad   Svara med citatSvara med citat