Witajcie, mam problem, którego nie potrafię rozwiązać. Wygląda to tak, że mam formularz w html, który jest wysyłany postem. W nim są wysyłanie różne inputy tekstowe ALE również zdjęcia.
Formularz musi pokazywać wybrane zdjęcia, mieć możliwość usunięcia i dogrania.
Pod linkiem możecie zobaczyć jak to wygląda i działa:
https://fck-auto.de/ankaufahrzeuge/
Formularz generuje zdjęcia w generowanych folderach, bo klient chciał mieć generowaną galerie z załączników do każdego maila... W mailu przychodzą dane z inputów i link do galerii.
Nie potrafię przekazać zdjęć z skryptu js do php. Patrzę na ten kod i już nie ogarniam.
KOD PONIŻEJ:
HTML:
<div class="container">
<form id="contact" action="../form/sendmemail.php" method="post" enctype="multipart/form-data">
<div class="nf-field-element">
<div class="columnformone">
<h1><div style="color: green;">Skup aut online</div></h1>
<div class="bordercolumnformone">
<span style="background-color: rgba(255, 255, 255, 0.62); font-family: "Open Sans", Arial, Tahoma, sans-serif; font-size: 18px; caret-color: rgb(0, 0, 0);">Sprzedaj swój samochód szybko i bezproblemowo. Wypełnij formularz i uzyskaj konkretną ofertę. Po akceptacji ceny przelejemy pieniądze na Twoje konto i odbierzemy samochód z podanej lokalizacji.
</span><p></p>
</div>
</div>
<div class="columnformone">
<h1><div style="color: green;">Formularz wyceny</div></h1>
<div class="bordercolumnformone">
<span style="background-color: rgba(255, 255, 255, 0.62); font-family: "Open Sans", Arial, Tahoma, sans-serif; font-size: 18px; caret-color: rgb(0, 0, 0);"> Czy to nie proste? Sprzedaż samochodu nigdy wcześniej nie była taka łatwa. Skupujemy wszystkie pojazdy więc nie czekaj i dokonaj darmowej wyceny już teraz.
<br></span><br><p></p>
</div>
</div>
</div>
<fieldset id="field1">
<label>Rodzaj pojazdu</label>
<select id="pole1" name="rodzaj_pojazdu" tabindex="1" >
<option value="osobowy">osobowy</option>
<option value="dostawczy">dostawczy</option>
<option value="ciarowy">ciężarowy</option>
<option value="autobus">autobus</option>
<option value="motocykl">motocykl</option>
<option value="przyczepanaczepa">przyczepa/naczepa</option>
<option value="pojazd rolniczy">pojazd rolniczy</option>
<option value="maszyna">maszyna</option>
</select>
</fieldset>
<fieldset>
<label>Marka</label>
<input placeholder="Marka" type="text" name="email" tabindex="2">
</fieldset>
<fieldset>
<label>Model</label>
<input placeholder="model" type="text" name="subject" tabindex="3" >
</fieldset>
<fieldset>
<label>Rok produkcji</label>
<input placeholder="Rok produkcji" type="text" name="rok_produkcji" tabindex="4" >
</fieldset>
<fieldset id="field2">
<label>Typ silnika</label>
<select id="pole2" name="typ_silnika" tabindex="5" >
<option value="typ-silnika" >Typ silnika</option>
<option value="Benzyna">Benzyna</option>
<option value="Diesel">Diesel</option>
<option value="LPG">LPG</option>
<option value="cng">CNG</option>
<option value="hybryda">Hybryda</option>
<option value="elektryczny">Elektryczny</option>
<option value="etanol">Etanol</option>
<option value="wodor">Wodór</option>
</select>
</fieldset>
<fieldset>
<label>Pojemność silnika</label>
<input type="text" name="poj_silnika" tabindex="6" >
</fieldset>
<fieldset>
<label>Moc silnika</label>
<input type="text" name="moc_silnika" tabindex="7">
</fieldset>
<fieldset>
<label>Przebieg</label>
<input type="text" name="przebieg" tabindex="8" >
</fieldset>
<fieldset>
<label>Skrzynia biegów</label>
<select id="choseone1" name="skrzynia_biegow" tabindex="9" >
<option value="skrzynia-biegow" selected="selected">Skrzynia biegów</option>
<option value="manualna">Manualna</option>
<option value="automatyczna">Automatyczna</option>
</select>
</fieldset>
<fieldset>
<label>Napęd</label>
<select id="choseone2" name="naped" tabindex="10" >
<option value="przedni" selected="selected">Przedni</option>
<option value="tyl">Tył</option>
<option value="4x4">4x4</option>
</select>
</fieldset>
<fieldset>
<label>Drugi komplet kół: </label>
<select id="choseone3" name="drugi_komplet_kol" tabindex="11">
<option value="tak" selected="selected">Tak</option>
<option value="nie">Nie</option>
</select>
</fieldset>
<fieldset>
<label>Lokalizacja pojazdu (miasto)</label>
<input type="text" name="lokalizacja" tabindex="12" >
</fieldset>
<fieldset>
<label>Przegląd ważny do:</label>
<input type="text" name="przeglad" tabindex="13">
</fieldset>
<fieldset>
<label>Łączna liczba włascicieli:</label>
<input type="text" name="liczba_wlascicieli" tabindex="14" >
</fieldset>
<fieldset>
<label>Uwagi dotyczące stanu technicznego</label>
<textarea name="message" tabindex="15" ></textarea>
</fieldset>
<fieldset>
<span>Wyposażenie (CTRL+lewy przycisk myszy zaznacza kolejne opcje) *</span>
<select id="fileupload" action="#" class="option-select-custom" name="wyposazenie[]" tabindex="16" multiple="multiple">
<option value="ABS">ABS</option>
<option value="CD">CD</option>
<option value="Centralny zamek">Centralny zamek</option>
<option value="Elektryczne szyby przednie">Elektryczne szyby przednie</option>
<option value="Elektrycznie ustawiane lusterka">Elektrycznie ustawiane lusterka</option>
<option value="Immobilizer">Immobilizer</option>
<option value="Poduszka powietrzna kierowcy">Poduszka powietrzna kierowcy</option>
<option value="Poduszka powietrzna pasaera">Poduszka powietrzna pasażera</option>
<option value="Radio fabryczne">Radio fabryczne</option>
<option value="Wspomaganie kierownicy">Wspomaganie kierownicy</option>
<option value="Alarm">Alarm</option>
<option value="Alufelgi">Alufelgi</option>
<option value="ASR kontrola trakcji">ASR (kontrola trakcji)</option>
<option value="Asystent parkowania">Asystent parkowania</option>
<option value="Asystent pasa ruchu">Asystent pasa ruchu</option>
<option value="Bluetooth">Bluetooth</option>
<option value="Czujnik deszczu">Czujnik deszczu</option>
<option value="Czujnik martwego pola">Czujnik martwego pola</option>
<option value="Czujnik zmierzchu">Czujnik zmierzchu</option>
<option value="Czujnki parkowania przednie">Czujnki parkowania przednie</option>
<option value="Czujniki parkowania tylne">Czujniki parkowania tylne</option>
<option value="Dach panoramiczny">Dach panoramiczny</option>
<option value="Elektrochromatyczne lusterka boczne">Elektrochromatyczne lusterka boczne</option>
<option value="Elektrochromatyczne lusterko wsteczne">Elektrochromatyczne lusterko wsteczne</option>
<option value="Elektryczne szyby tylne">Elektryczne szyby tylne</option>
<option value="Elektrycznie ustawiane fotele">Elektrycznie ustawiane fotele</option>
<option value="ESP stabilizacja toru jazdy">ESP (stabilizacja toru jazdy)</option>
<option value="Gniazdo AUX">Gniazdo AUX</option>
<option value="Gniazdo SD">Gniazdo SD</option>
<option value="Gniazdo USB">Gniazdo USB</option>
<option value="Hak">Hak</option>
<option value="HUD wywietlacz przezierny">HUD (wyświetlacz przezierny)</option>
<option value="Isofix">Isofix</option>
<option value="Kamera cofania">Kamera cofania</option>
<option value="Klimatyzacja automatyczna">Klimatyzacja automatyczna</option>
<option value="Klimatyzacja czterostrefowa">Klimatyzacja czterostrefowa</option>
<option value="Klimatyzacja dwustrefowa">Klimatyzacja dwustrefowa</option>
<option value="Klimatyzacja manualna">Klimatyzacja manualna</option>
<option value="Komputer pokadowy">Komputer pokładowy</option>
<option value="Kurtyny powietrzne">Kurtyny powietrzne</option>
<option value="opatki zmiany biegw">Łopatki zmiany biegów</option>
<option value="MP3">MP3</option>
<option value="Nawigacja GPS">Nawigacja GPS</option>
<option value="Odtwarzacz DVD">Odtwarzacz DVD</option>
<option value="Ogranicznik prdkoci">Ogranicznik prędkości</option>
<option value="Ogrzewanie postojowe">Ogrzewanie postojowe</option>
<option value="Podgrzewana przednia szyba">Podgrzewana przednia szyba</option>
<option value="Podgrzewane lusterka boczne">Podgrzewane lusterka boczne</option>
<option value="Podgrzewane przednie siedzenia">Podgrzewane przednie siedzenia</option>
<option value="Podgrzewane tylne siedzenia">Podgrzewane tylne siedzenia</option>
<option value="Poduszka powietrzna chronica kolana">Poduszka powietrzna chroniąca kolana</option>
<option value="Poduszki boczne przednie">Poduszki boczne przednie</option>
<option value="Poduszki boczne tylne">Poduszki boczne tylne</option>
<option value="Przyciemniane szyby">Przyciemniane szyby</option>
<option value="Radio niefabryczne">Radio niefabryczne</option>
<option value="Regulowane zawieszenie">Regulowane zawieszenie</option>
<option value="Relingi dachowe">Relingi dachowe</option>
<option value="Relingi dachowe">Relingi dachowe</option>
<option value="Szyberdach">Szyberdach</option>
<option value="wiata do jazdy dziennej">Światła do jazdy dziennej</option>
<option value="wiata LED">Światła LED</option>
<option value="wiata przeciwmgielne">Światła przeciwmgielne</option>
<option value="wiata Xenonowe">Światła Xenonowe</option>
<option value="Tapicerka skrzana">Tapicerka skórzana</option>
<option value="Tapicerka welurowa">Tapicerka welurowa</option>
<option value="Tempomat">Tempomat</option>
<option value="Tempomat aktywny">Tempomat aktywny</option>
<option value="Tuner TV">Tuner TV</option>
<option value="Wielfunkcyjna kierownica">Wielfunkcyjna kierownica</option>
<option value="Zmieniarka CD">Zmieniarka CD</option>
</select>
</fieldset>
<fieldset>
<span>Dodaj zdjęcia (max 20 sztuk na jeden raz) *</span>
<div class="files" id="files1">
<input type="file" name="upload[]" multiple="multiple" enctype="multipart/form-data" />
<br />
<ul class="fileList"></ul>
</div>
<div class="row">
<div class="span16">
<table class="zebra-striped"><tbody class="files"></tbody></table>
</div>
</div>
<a href="https://fck-auto.de/ankaufahrzeuge/foto/">Zobacz jak powinny wyglądać zdjęcia do wyceny</a>
<div class="row">
<button type="x" id="uploadBtn" class="btn primary start">Start upload</button>
</div>
</fieldset>
<fieldset>
<label>Nr telefornu</label>
<input type="text" name="tel" tabindex="17" >
</fieldset>
<fieldset>
<label>E-mail</label>
<input type="text" name="adres_emai" tabindex="18" >
</fieldset>
<fieldset>
<label>Uwagi</label>
<textarea name="message_uwagi" tabindex="19" ></textarea>
</fieldset>
<fieldset>
<button name="submit" type="submit" id="contact-submit" data-submit="...Wysyłanie">Wyślij</button>
</fieldset>
</form>
</div>
JavaScript:
$.fn.fileUploader = function (filesToUpload, sectionIdentifier) {
var fileIdCounter = 0;
this.closest(".files").change(function (evt) {
var output = [];
for (var i = 0; i < evt.target.files.length; i++) {
fileIdCounter++;
var file = evt.target.files[i];
var fileId = sectionIdentifier + fileIdCounter;
filesToUpload.push({
id: fileId,
file: file
});
var removeLink = "<a class=\"removeFile\" href=\"#\" data-fileid=\"" + fileId + "\">Remove</a>";
output.push("<li><strong>", escape(file.name), "</strong> - ", file.size, " bytes. ", removeLink, "</li> ");
};
$(this).children(".fileList")
.append(output.join(""));
//reset the input to null - nice little chrome bug!
evt.target.value = null;
});
$(this).on("click", ".removeFile", function (e) {
e.preventDefault();
var fileId = $(this).parent().children("a").data("fileid");
// loop through the files array and check if the name of that file matches FileName
// and get the index of the match
for (var i = 0; i < filesToUpload.length; ++i) {
if (filesToUpload[i].id === fileId)
filesToUpload.splice(i, 1);
}
$(this).parent().remove();
});
this.clear = function () {
for (var i = 0; i < filesToUpload.length; ++i) {
if (filesToUpload[i].id.indexOf(sectionIdentifier) >= 0)
filesToUpload.splice(i, 1);
}
$(this).children(".fileList").empty();
}
return this;
};
(function () {
var filesToUpload = [];
var files1Uploader = $("#files1").fileUploader(filesToUpload, "files1");
$("#uploadBtn").click(function (e) {
e.preventDefault();
var formData = new FormData();
for (var i = 0, len = filesToUpload.length; i < len; i++) {
formData.append("files", filesToUpload[i].file);
}
$.ajax({
data: formData,
processData: false,
contentType: false,
type: "POST",
success: function (data) {
},
error: function (data) {
alert("ERROR - " + data.responseText);
}
});
});
})()
ORAZ PHP:
<?php session_start();
if(isset($_POST['submit'])) {
$youremail = 'm.szkubiel@e-intermedia.pl';
$fromsubject = 'Temat wiadomości';
$name = $_POST['rodzaj_pojazdu'];
$mail = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['rok_produkcji'];
$poj_silnika = $_POST['poj_silnika'];
$moc_silnika = $_POST['moc_silnika'];
$przebieg = $_POST['przebieg'];
$lokalizacja = $_POST['lokalizacja'];
$przeglad = $_POST['przeglad'];
$liczba_wlascicieli = $_POST['liczba_wlascicieli'];
$message = $_POST['message'];
$tel = $_POST['tel'];
$adres_emai = $_POST['adres_emai'];
$message_uwagi = $_POST['message_uwagi'];
$skrzynia_biegow = $_POST['skrzynia_biegow'];
$naped = $_POST['naped'];
$drugi_komplet_kol = $_POST['drugi_komplet_kol'];
$wyposazenie = implode(', ', $_POST['wyposazenie']);
$typ_silnika = $_POST['typ_silnika'];
if(count($_FILES['upload']['name']) > 0){
$rand = rand();
$createFolder = uniqid();
mkdir('uploads/'.$createFolder);
for($i=0; $i<count($_FILES['upload']['name']); $i++) {
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
if($tmpFilePath != ""){
$shortname = $_FILES['upload']['name'][$i];
$explode = explode(".", $_FILES['upload']['name'][$i]);
$filePath = "uploads/".$createFolder. '/' . rand().'.'.$explode[1];
if(move_uploaded_file($tmpFilePath, $filePath)) {
$files[] = $shortname;
}
}
}
}
$to = $youremail;
$headers .= "Reply-To: Some One <".$_POST['name'].">\r\n";
$headers .= "Return-Path: Some One <".$_POST['name'].">\r\n";
$headers .= "From: Some One <".$_POST['name'].">\r\n";
$headers .= "Organization: FCK AUTO\r\n";
$headers .= "Content-Type: text/html\r\n";
$mailsubject = $fromsubject;
$body .= $fromsubject.'
<table>
<tr> <td> Rodzaj pojazdu: </td> <td> '.$name.' </td> </tr>
<br>
<hr>
<tr> <td> Marka: </td> <td>'.$mail.'
<br>
<hr>
<tr> <td> Model: </td> <td>'.$subject.'
<br>
<hr>
<tr> <td> Rok produkcji: </td> <td>'.$message.'
<br>
<hr>
<tr> <td> Typ silnika: </td> <td>'.$typ_silnika.'
<br>
<hr>
<tr> <td> Pojemność silnika: </td> <td>'.$poj_silnika.'
<br>
<hr>
<tr> <td> Moc silnika:</td> <td> '.$moc_silnika.'
<br>
<hr>
<tr> <td> Przebieg:</td> <td> '.$przebieg.'
<br>
<hr>
<tr> <td> Skrzynia biegów: </td> <td>'.$skrzynia_biegow.'
<br>
<hr>
<tr> <td> Napęd: </td> <td>'.$naped.'
<br>
<hr>
<tr> <td> Drugi komplet kół:</td> <td> '.$drugi_komplet_kol.'
<br>
<hr>
<tr> <td> Lokalizacja: </td> <td>'.$lokalizacja.'
<br>
<hr>
<tr> <td> Przegląd: </td> <td>'.$przeglad.'
<br>
<hr>
<tr> <td> Łączna liczba właścicieli: </td> <td>'.$liczba_wlascicieli.'
<br>
<hr>
<tr> <td> Uwagi dotyczące stani technicznego: </td> <td>'.$message.'
<br>
<hr>
<tr> <td> Wyposażenie: </td> <td>'.$wyposazenie.'
<br>
<hr>
<tr> <td> Telefon:</td> <td> '.$tel.'
<br>
<hr>
<tr> <td> Adres e-mail:</td> <td> '.$adres_emai.'
<br>
<hr>
<tr> <td> UWAGI:</td> <td> '.$message_uwagi.'
<br>
<hr>
<a href="https://fck-auto.de/form/galeria.php?upload=/'.$createFolder.'">LINK DO GALERII</a>
<table>
';
echo "<div> Dziękujemy za przesłanie wiadomości, odezwiemy się w najbliższym czasie</div>
<div>Za chwilę nastąpi powrót do strony...</div>
";
mail($to, $subject, $body,$headers);
} else {
echo "You must write a message. </br> Please go to <a href='/index.html'>Home Page</a>";
}
?>