fille en détresse, html php intégration site ... HELP!!

fille en détresse, html php intégration site ... HELP!! - HTML/CSS - Programmation

Marsh Posté le 30-09-2014 à 18:46:52    

Bonjour,  
 
je suis avant tout une newbie et je me fais vraiment violence pour demander de l'aide... (oui je suis trop fière et j'aime faire les chose par moi meme mais la....)
 
donc je vous explique, je suis en train de créer un site dans l'impression 3d, pour faire une tarification juste il me faut donc proposer au client d’intégrer leurs fichiers stl ou obj, puis d'après ce fichier calculer tous ce qu'il faut pour le prix final.
 
J'ai donc trouver sur internet une personne qui propose ça: http://www.3dpartprice.com/
 
Il propose donc les fichiers pour pouvoir intégrer ce système à son propre site.
 
Mais ... ca marche pas c'est à dire que j'arrive rien a en tirer ça fais plusieur jour que je cherche et je suis vraiment à bout j'ai passer 3 jours en tous pour trouver une solution soit avec ce que le site propose ou soit par moi même.... mais par moi même vu que je suis nul de chez nul je vais pas loin ^^
 
je ne demande pas à ce qu'on me fasse le boulot, mais si vous avez des pistes ou des logiciel qui puisse m'aider?
 
Merci encore si vous pouvez éclairer ma lanterne merci à vous!!!!
 
Marie

Reply

Marsh Posté le 30-09-2014 à 18:46:52   

Reply

Marsh Posté le 01-10-2014 à 10:36:18    

Je vois que vous etes beaucoup à lire mais zero reponse du coup je sais pas trop comment le prendre.... voici le code qui marche pas et je sais pas pourquoi:
 
<?php require_once("config.php" ); ?>
 
<?php if ($_SERVER['REQUEST_METHOD'] != "POST" ){ ?>
<html>
<head>
<title></title>
 
<script>
function addAnotherFileUploadElement(){
    //document.getElementById('fileUploadElements').innerHTML += '<input type=file name=stlFiles[]>';
    var theDiv = document.getElementById("fileUploadElements" );
    var newNode = document.createElement('span');      
    newNode.innerHTML = "<input type=file name=stlFiles[] multiple>";
    theDiv.appendChild(newNode);
}
 
window.onload = function(){
    var rad = document.customQuote.color;
    for(var i = 0; i < rad.length; i++) {
        rad[i].onclick = function() {
            document.getElementsByName("material" )[0].value = this.className;
        };
    }
}
 
</script>
 
</head>
<body>
<form method="POST" enctype="multipart/form-data" name="customQuote">
STLs or zipped STL Files: <span id="fileUploadElements"><input type="file" name="stlFiles[]" multiple></span><a href="javascript:addAnotherFileUploadElement()">Add another</a><br>
<!-- Material: -->
<select name="material" style="display: none;">
<?php
     
    foreach(partPriceConfig::$materials as $key=>$val){
        echo "<option value=$key>$key";
        if ($val['fullName'] != null)
            echo " ({$val['fullName']})";
        echo "</option>";
    }
     
?>
</select> <!--br-->
<style>
table#availableColors{
    background-image: url("dimension.png" );
    border-spacing: 1px;
}
 
table#availableColors tr:nth-child(odd){  
  border-top: gray 2px solid;  
}
 
table#availableColors td:first-child{
    background: white;
    text-align: right;
}
table#availableColors td{
    border: solid 1px darkgray;
    text-align: center;
    padding: 5px;
}
 
</style>
Available Materials/Colors:
<table id="availableColors">
<?php
 
    $colors = array();
    foreach(partPriceConfig::$materials as $material){
        foreach($material["colors"] as $color)
            if (in_array($color, $colors) == false)
                array_push($colors, $color);
    }
 
    $checkedFirst = false;
     
    foreach(partPriceConfig::$materials as $key => $material){
             
        echo "<tr><td>$key";
        if (partPriceConfig::$materials[$key]["fullName"] != null)
            echo " (".partPriceConfig::$materials[$key]["fullName"]." )";
        echo ": </td>";
         
         
        foreach($colors as $color){
            if (in_array($color, $material["colors"])){
                echo "<td style='background: {$color};'><input type='radio' name='color' value='{$color}' class='".$key."' ";
                 
                if ($checkedFirst == false){
                    echo "checked";
                    $checkedFirst = true;
                }
                     
                echo "></td>";
            }
            else
                echo "<td></td>";
        }
        echo "</tr>";
    }
?>
 
</table>
 
Layer Height: <input type="text" name="layerHeight" value="<?php echo partPriceConfig::$layerHeights["default"]["amount"] ?>">
(<?php echo partPriceConfig::$layerHeights["default"]["unit"];?>,  
min: <?php echo partPriceConfig::$layerHeights["min"]["amount"].partPriceConfig::$layerHeights["min"]["unit"] ?>,  
max: <?php echo partPriceConfig::$layerHeights["max"]["amount"].partPriceConfig::$layerHeights["max"]["unit"] ?> )
<br>
Infill Percentage: <input type="text" name="infillPercentage" value="30"> (0 to 100%)<br>
Support Removal: <input type="checkbox" name="supportRemoval"> (weight * <?php echo partPriceConfig::$addOns["supportRemovalMultiplier"] ?> )<br>
Vapor Polishing: <input type="checkbox" name="vaporPolishing"> (weight * <?php echo partPriceConfig::$addOns["vaporPolishingMultiplier"] ?>, eligible materials: <?php
 
$materialsVaporPolished = array();
foreach(partPriceConfig::$materials as $key => $value)
    if ($value["canBeVaporPolished"] == true)
        $materialsVaporPolished[] = $key;
 
echo implode("/",$materialsVaporPolished);
   
?> )<br>
Shipping: <input type="radio" name="shipping" value="pickup"> pickup (free), <input type="radio" name="shipping" value="delivery" checked> delivery (<?php echo '$'.number_format(partPriceConfig::$deliveryCosts["base"]["amount"],2).' '.partPriceConfig::$deliveryCosts["base"]["unit"].' + $'. number_format(partPriceConfig::$deliveryCosts["weightPrice"]["amount"],2).' '.partPriceConfig::$deliveryCosts["weightPrice"]["unit"] ?> )<br>
Rush Printing: <input type="checkbox" name="rushPrinting"><br>
 
<input type="submit">
</form>
 
</body>
</html>
<?php } ?>
 
<?php
 
function buildMultipartPost($fields, $files, $boundary="" ){
     
    //echo "<pre>".print_r($fields,true)."</pre>";
    //echo "<pre>".print_r($files)."</pre>";
     
    $output = "";
    $disallowedChars = array("\0", "\"", "\r", "\n" );
    foreach($fields as $key => $value){
        $key = str_replace($disallowedChars, "_", $key);
        $value = str_replace($disallowedChars, "_", $value);
        $output .= $boundary . "\n" . "Content-Disposition: form-data; name=\"".$key."\"\n\n".$value."\n";
    }
     
    foreach($files as $key => $value){
        $key = str_replace($disallowedChars, "_", $key);
         
        if (is_array($value["name"]) == false){
            $value['name'] = str_replace($disallowedChars, "_", $value['name']);
            $value['type'] = str_replace($disallowedChars, "_", $value['type']);
            $output .= $boundary . "\n" . "Content-Disposition: form-data; name=\"".$key."\"; filename=\"".$value['name']."\"\n" . "Content-Type: ".$value['type']."\n\n".file_get_contents($value['tmp_name'])."\n";
        }
        else{
            for($i=0; $i<count($value["name"]); $i++){
                if ($value["error"][$i] != 0)
                    continue;
                $value['name'][$i] = str_replace($disallowedChars, "_", $value['name'][$i]);
                $value['type'][$i] = str_replace($disallowedChars, "_", $value['type'][$i]);
                $output .= $boundary . "\n" . "Content-Disposition: form-data; name=\"".$key."[]\"; filename=\"".$value['name'][$i]."\"\n" . "Content-Type: ".$value['type'][$i]."\n\n".file_get_contents($value['tmp_name'][$i])."\n";
            }
        }
    }
     
    return $output.$boundary."--";
}
 
if ($_SERVER['REQUEST_METHOD'] == "POST" ){
     
    //print_r($_FILES);
     
    $boundary = "------WebKitFormBoundary".substr(md5(microtime(true)),0,16);
     
    $ch = curl_init("http://api.3dpartprice.com" );
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data; boundary=".substr($boundary,2)));
    curl_setopt($ch, CURLOPT_POST, true);
    $_POST["configFile"] = urlencode(base64_encode(serialize(get_class_vars("partPriceConfig" ))));
    $_POST["density"] = partPriceConfig::$materials[$_POST["material"]]["density"]["amount"];
    curl_setopt($ch, CURLOPT_POSTFIELDS, buildMultipartPost($_POST, $_FILES, $boundary));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    $response = curl_exec($ch);
 
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     
    if ($httpCode != 200){
        echo "http code: ".$httpCode.", error occured!";
        echo "<pre>".print_r(unserialize($response),true)."</pre>";
    }
    else{
        $responseArray = unserialize($response);
        $totalWeight = 0;
        $totalTime = 0;
         
        foreach($responseArray as $model){
            $totalWeight += $model["filamentUsed"]["amount"];
            $totalTime += $model["printDuration"]["amount"];
        }
         
        $summary = array();
         
        $summary["metadata"]["material"] = $_POST["material"];
        $summary["metadata"]["color"] = $_POST["color"];
        $summary["metadata"]["infillPercentage"] = $_POST["infillPercentage"];
        $summary["metadata"]["layerHeight"] = $_POST["layerHeight"];
        $summary["metadata"]["supportRemoval"] = isset($_POST["supportRemoval"])?"true":"false";
        $summary["metadata"]["vaporPolishing"] = isset($_POST["vaporPolishing"])?"true":"false";
        $summary["metadata"]["shipping"] = $_POST["shipping"];
        $summary["metadata"]["rushPrinting"] = isset($_POST["shipping"])?"true":"false";
         
        $summary["totalWeight"]["amount"] = $totalWeight;
        $summary["totalWeight"]["unit"] = "grams";
         
        $summary["totalTime"]["amount"] = $totalTime;
        $summary["totalTime"]["unit"] = "seconds";
         
        //$summary["material"] = partPriceConfig::$materials[$_POST["material"]];
         
        $summary["costs"]["printTime"]["amount"] = number_format($totalTime*1/(60*60)*partPriceConfig::$printingCost["amount"],2);
        $summary["costs"]["printTime"]["calculation"] = $totalTime." seconds * (1 hour)/(60*60 seconds) * \$".partPriceConfig::$printingCost["amount"].' '.partPriceConfig::$printingCost["unit"];
        $summary["costs"]["printTime"]["unit"] = "USD";
         
        $summary["costs"]["material"]["amount"] = number_format($totalWeight * partPriceConfig::$materials[$_POST["material"]]["price"]["amount"],2);
        $summary["costs"]["material"]["calculation"] = number_format($totalWeight,2)." grams * ".number_format(partPriceConfig::$materials[$_POST["material"]]["price"]["amount"],2). ' '.partPriceConfig::$materials[$_POST["material"]]["price"]["unit"];
        $summary["costs"]["material"]["unit"] = "USD";
         
        if (isset($_POST["supportRemoval"])){
            $summary["costs"]["supportRemoval"]["amount"] = number_format($summary["costs"]["material"]["amount"] * (partPriceConfig::$addOns["supportRemovalMultiplier"]-1),2);
            $summary["costs"]["supportRemoval"]["calculation"] = number_format($summary["costs"]["material"]["amount"],2)." USD * (".partPriceConfig::$addOns["supportRemovalMultiplier"]."-1) supportRemovalMultiplier";
            $summary["costs"]["supportRemoval"]["unit"] = "USD";
        }
         
        if (isset($_POST["vaporPolishing"])){
            $summary["costs"]["vaporPolishing"]["amount"] = number_format($summary["costs"]["material"]["amount"] * (partPriceConfig::$addOns["vaporPolishingMultiplier"]-1),2);
            $summary["costs"]["vaporPolishing"]["calculation"] = number_format($summary["costs"]["material"]["amount"],2)." USD * (".partPriceConfig::$addOns["vaporPolishingMultiplier"]."-1) vaporPolishingMultiplier";
            $summary["costs"]["vaporPolishing"]["unit"] = "USD";
        }
         
        if ($_POST["shipping"] == "delivery" ){
            $summary["costs"]["delivery"]["amount"] = number_format(partPriceConfig::$deliveryCosts["base"]["amount"] + $totalWeight*partPriceConfig::$deliveryCosts["weightPrice"]["amount"],2);
            $summary["costs"]["delivery"]["calculation"] = number_format(partPriceConfig::$deliveryCosts["base"]["amount"],2) . " ".partPriceConfig::$deliveryCosts["base"]["unit"].' base + '.number_format($totalWeight,2).' grams * '.number_format(partPriceConfig::$deliveryCosts["weightPrice"]["amount"],2).' '.partPriceConfig::$deliveryCosts["weightPrice"]["unit"];
            $summary["costs"]["delivery"]["unit"] = "USD";
        }
         
        $summary["subtotal"]["amount"] = 0;
        $summary["subtotal"]["calculation"] = "";
        foreach($summary["costs"] as $costName => $costArray){
            $summary["subtotal"]["amount"] += $costArray["amount"];
            $summary["subtotal"]["calculation"] .= $costArray["amount"]." ". $costArray["unit"]." ".$costName." + ";
        }
        $summary["subtotal"]["calculation"] = substr($summary["subtotal"]["calculation"],0,-3);
        $summary["subtotal"]["unit"] = "USD";
         
        if (isset($_POST["rushPrinting"])){
            $summary["total"]["amount"] = number_format($summary["subtotal"]["amount"]*partPriceConfig::$addOns["rushPrintingMultiplier"],2);
            $summary["total"]["calculation"] = $summary["subtotal"]["amount"]." ".$summary["subtotal"]["unit"]." subtotal * ".partPriceConfig::$addOns["rushPrintingMultiplier"].' rushDeliveryMultiplier';
        }
        else{
            $summary["total"]["amount"] = number_format($summary["subtotal"]["amount"],2);
            $summary["total"]["calculation"] = $summary["subtotal"]["amount"].' subtotal';
        }
        $summary["total"]["unit"] = "USD";
         
        echo "<pre><h2>Total Costs</h2>".print_r($summary,true)."</pre>";
         
        echo "<pre><h2>API Response</h2>".print_r($responseArray,true)."</pre>";
         
    }
     
    //echo "<pre>".print_r($response,true)."</pre>";
}    
 
 
 
 
Du coup j'ai essayer dans WIX et ça me met:
 
The method POST is not allowed for this resource.  
 
 
Merci à vous

Reply

Marsh Posté le 01-10-2014 à 11:03:47    

Décidément, c'est la semaine des gens qui font leur site sur Wix :pfff:  
C'est sûr que tu risques pas d'y arriver. J'ai regardé l'API à télécharger (48 Mo !!!) y'a des fichiers php à installer sur ton site, chose que Wix ne permet pas il me semble.
 
Et vue que tu dis que la méthode POST est pas autorisée vers des urls différents de celle de Wix pour appeler l'api du site web que t'as donné, ça semble être mort.
 
Tu ferais mieux de passer par un CMS type Wordpress (gratuit) que tu installes chez un hébergeur (1&1&, OVH, Olympe.in, ce dernier étant gratuit...). Tu auras beaucoup plus de souplesse pour faire ton site :o
 
Wix semble être très bien pour ceux qui ont des besoins très basiques mais pas pour des besoins spécifiques nécessitant la production de code PHP.
 
Edit : merci d'utiliser la balise [code] quand tu postes du code source, a fortiori quand il est aussi long.


Message édité par rufo le 01-10-2014 à 11:04:28

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-10-2014 à 11:45:41    

Desole pour la balise code je n'ai pas l'habitude comme tu peux le voir, du coup je vais faire simple ça sera sur demande de devis pour commencer et plus tard on verra je me ferais faire un site même si c'est payant mes nerf en peuvent plus lol. merci quand même

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed