Visa ett inlägg
Oläst 2012-10-10, 13:51 #4
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
Tack för era bådas kommentarer!

Såhär ligger det till:

Gregoff: Jag har för mycket kod i test.php för att vilja skriva ut allt. Men jag vet att detta fungerar, eftersom att jag har gjort precis som Jonas skrev.

Jonas: Jag har gjort precis som du skrev tidigare, så jag vet att det är mycket enklare.

Problemet och skälet varför jag vill använda mig av ajax är för att det tar för lång tid att ladda upp produkterna, vilket gör att, på vissa webbhotell (city network), så får jag en 505 error. (jag får inte det på binero).

Jag kan visa hur jag har gjort tidigare:
PHP-kod:
<?php include('includes/header.php');
if (
checkAccess() == false) {header("Location: login.php");}; /* om man är inte inloggad */
?>
    <div id="admin-menu">
        <div id="menu">
            <ul>
            <li class="hem"><a href="/admin/">Hem</a></li>
            <li class="produkter current"><a href="produkter.php">Produkter</a></li>
            <li class="reklam"><a href="ads.php">Reklam</a></li>
            <li class="sidor"><a href="sidor.php">Sidor</a></li>
            </ul>
        </div><!-- menu -->
        <div class="clear"></div>
    </div>
<?php
if (isset($_POST['submit'])) { // när man klickar på OK knappen
    
if (!empty($_FILES["file"]["name"])) {
        if (!empty(
$_POST['store'])) {
            
$allowedExts = array("xml");
            
$array explode("."$_FILES["file"]["name"]);
            
$extension $array['1'];
            if ((
$_FILES["file"]["type"] == "text/xml") && in_array($extension$allowedExts)) {
                if (
$_FILES["file"]["error"] <= 0) {
                    
$filed_store $_POST['store']; // Hämtar datan ur radio-knapparna
                    
if ($filed_store == "nelly") { // om man valt nelly
                        
include('xml_upload_nelly.php');
                    } elseif (
$filed_store == "ellos") { // om man valt ellos
                        
include('xml_upload_ellos.php');
                    } else {
$message "Det verkar som om du har valt <strong>fel butik till xml filen</strong>. Kontrollera en extra gång så att xml filen tillhör " $filed_store ".";};
                } else { 
$message "Error: " $_FILES["file"]["error"]; };
            } else { 
$message "Det verkar som om filen du försöker använda inte är en xml fil."; };
        } else { 
$message "Du måste välja någon av de ovanstående butikerna."; };// om någon av radio knapparna är ifyllda
    
} else { $message "Du måste välja en xml fil att ladda upp."; };
};



?>
<div class="clear"></div>
<h2>Lägg till en XML-produktlista</h2>
<div id="progress"></div>
<form action="" method="post" enctype="multipart/form-data"  id="xml_form">
    <label for="file" id="for_file">Välj xml fil</label> <span id="label_for"></span> <input type="file" name="file" id="file" />
    <div class="clear"></div>
    <div class="clear"></div>
    <div id="xml_stores">
        <div class="xml_box"><input type="radio" name="store" value="nelly" class="xml_store" /> <span>Nelly</span></div>
        <div class="xml_box"><input type="radio" name="store" value="ellos" class="xml_store" /> <span>Ellos</span></div>
    <div class="clear"></div>
    </div>
    <input type="submit" name="submit" value="Ladda upp" id="submit_xml" /> <?php if (isset($message)) {echo "<div class=\"xml_message\">" $message "</div>";}; ?>
</form>

<div class="clear"></div>
<?php include('includes/footer.php'); ?>
xml_upload_nelly.php
PHP-kod:
<?php
                    
$xml_file 
$_FILES["file"]["tmp_name"];
$xml simplexml_load_file($xml_file);

$query "UPDATE products SET fresh = 0";
$update mysql_query($query);

foreach(
$xml->product as $product){
    
set_time_limit(0);
    
$categori $product->fields->productGroup;
    
$gender $product->fields->gender;
    
    if (empty(
$categori) || !isset($categori)) {$categori "-";};
    
    if (
    
$gender == "Kille" || 
    
$gender == "Tjej" || 
    
$gender == "Unisex" || 
    
$gender == "Mamma") {} // om $gender innehåller "kille, tjej, unisex eller mamma", gör inget
    
elseif ($categori == "Baddräkter" || 
    
$categori == "Bikinis" || 
    
$categori == "Blusar & skjortor" || 
    
$categori == "Byxor" || 
    
$categori == "Byxor & shorts" || 
    
$categori == "Festklänningar" || 
    
$categori == "Jackor" || 
    
$categori == "Jeans" || 
    
$categori == "Jumpsuit" || 
    
$categori == "Kjolar" || 
    
$categori == "Klänningar" || 
    
$categori == "Leggings" || 
    
$categori == "Linnen" || 
    
$categori == "Shorts" || 
    
$categori == "Sport bh" || 
    
$categori == "Strandplagg" || 
    
$categori == "T-shirts" || 
    
$categori == "Toppar" || 
    
$categori == "Tröjor" || 
    
$categori == "-")  // om $categori innehåller "något av ovanstående", gör inget
    
{
            if (
$product->fields->sale == "true") {
                
$img mysql_real_escape_string($product->fields->extraImageProductLarge);
                
$title mysql_real_escape_string($product->name); if ($title == "") {$title "-";};
                
$brand mysql_real_escape_string($product->brand); if ($brand == "") {$brand "-";};
                
$store "Nelly";
                
$price mysql_real_escape_string($product->price); if ($price == "") {$price "-";};
                
$url mysql_real_escape_string($product->productUrl);
                
$category mysql_real_escape_string($categori); if ($category == "") {$category "-";};
                
$gender mysql_real_escape_string($product->fields->gender); if ($gender == "") {$gender "-";};
                
$info mysql_real_escape_string($product->description); if ($info == "") {$info "-";};
                
                
$xml_url $product->advertiserProductUrl;
                
$new_xml_url_without substr($xml_url7);
                
$new_xml_url urlencode($new_xml_url_without);
                
$delete_url = array("%2F");
                
$replace_url   = array("/");
                
$new_url_function str_replace($delete_url$replace_url$new_xml_url);
                
                
$advertiserProductUrl "http://" $new_url_function;

                
$query "INSERT INTO products (img, title, brand, store, price, url, category, gender, visible, info, advertiserProductUrl, fresh, new) VALUES ";
                
$query .= "('$img', '$title', '$brand', '$store', $price, '$url', '$category', '$gender', 1, '$info', '$advertiserProductUrl', 1, 1) ";
                
$query .= "ON DUPLICATE KEY UPDATE fresh = 1";
                
$insert mysql_query($query) or die (mysql_error());
            };
    };
};

$query "SELECT id, advertiserProductUrl FROM products WHERE `new` = 1";
$select mysql_query($query) or die(mysql_error());

while (
$result mysql_fetch_array($select)) {
    
set_time_limit(0);
    
$url $result['advertiserProductUrl'];
    
$id $result['id'];
    
$org_price getOrgPrice($url);  

    if (!empty(
$org_price)) {
        
$query "UPDATE `products` SET `org_price`=$org_price,`new`=0 WHERE id = $id";
        
$insert mysql_query($query) or die (mysql_error());
    };
    
};

$query "DELETE FROM products WHERE fresh = 0";
$delete mysql_query($query) or die(mysql_error());

$message "<strong>Super!</strong> Allt fungerade som det skulle, och databasen är nu uppdaterad med nya produkter från <strong>"$filed_store "</strong>.";
                

?>
Detta fungerar kanon, bara att det tar för lång tid. Ibland så överstiger webbläsarens minne, och man får börja om (göra en refresh och skicka med den datan man valt i formuläret igen).

Ibland så tar det för lång tid, så att man får 505 error (händer bara på city network).

Så det jag strävade efter egentligen, var att hitta ett sätt där uppladdningen (xml_upload_nelly.php) sköts bakom stängda dörrar, så att webbläsaren slipper jobba medans koden körs.

Förstod ni?

PS. test.php innehöll samma kod som xml_upload_nelly.php innehåller, förutom att $xml_file = $_FILES["file"]["tmp_name"]; byttes ut mot $path = $_POST['path'];
jonssondesign är inte uppkopplad   Svara med citatSvara med citat