21.08.2023, 16:28
Hallo liebe Helfergemeinde
mit PHP und SQL habe ich schon einiges geschrieben. Nun muss aber JS hinzu - und schon gehen die Probleme los.
Mein Anliegen: Ich habe ein Upload-Formular, welches nach dem Upload die Daten in eine SQL schreibt. Das funktioniert auch bestens. Ich kann Daten hochladen, abrufen und ansehen und auch wieder löschen. (Nicht in diesem Teil des Programmes...)
Ich muss aber auch große Dateien (bis ca. 150MB) hochladen können. Deshalb muss da eine Fortschrittsanzeige hin, sonst weiß der User nicht, dass da im HG etwas passiert. Hier ist mein PHP-Programm, welches auch schon funktioniert. (Aber noch in Entwicklung)
Für die Uploadanzeige habe ich mich für eine Datei von Tristan Radke entschieden: Upload
Ich habe eine *.JS erstellt und die eingebunden. Zum Glück funktionierte es auf Anhieb.
Aber nun hänge ich in der Luft und sehe vermutlich nur den Wald vor lauter Bäumen nicht:
Wenn ich den im FORM jetzt auskommentierten Teil mit onsubmit einbinde zeigt er mir den Upload an, aber danach bleibt er "irgendwo" hängen.
Also ich komme nicht in den Programmteil, wo meine Daten in die Datenbank geschrieben werden und ich dann ins Hauptprogramm zurückkomme. Hat da jemand einen Tipp für mich? Irgendwie stehe ich da auf dem Schlauch...
Danke schon mal.
mit PHP und SQL habe ich schon einiges geschrieben. Nun muss aber JS hinzu - und schon gehen die Probleme los.
Mein Anliegen: Ich habe ein Upload-Formular, welches nach dem Upload die Daten in eine SQL schreibt. Das funktioniert auch bestens. Ich kann Daten hochladen, abrufen und ansehen und auch wieder löschen. (Nicht in diesem Teil des Programmes...)
Ich muss aber auch große Dateien (bis ca. 150MB) hochladen können. Deshalb muss da eine Fortschrittsanzeige hin, sonst weiß der User nicht, dass da im HG etwas passiert. Hier ist mein PHP-Programm, welches auch schon funktioniert. (Aber noch in Entwicklung)
Code:
<?php
session_start();
$dat_id = $_GET['ID'];
include "akt_head.php";
?>
<script src="upload.js" type="text/javascript"></script>
<style>
#Inhalte-werden-zentriert {
display: flex;
align-items: center;
justify-content: center;
}
</style>
<div id="header">Dateien einfügen</div>
<div id="inhalt">
<a name="Oben"></a>
<?php
function post_slug($str)
{
return strtolower(preg_replace(array('/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'),
array('', '_', ''), remove_accent($str)));
}
function remove_accent($str)
{
$a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'Ð', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', '?', '?', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', '?', '?', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', '?', 'O', 'o', 'O', 'o', 'O', 'o', 'Œ', 'œ', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'Š', 'š', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Ÿ', 'Z', 'z', 'Z', 'z', 'Ž', 'ž', '?', 'ƒ', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', '?', '?', '?', '?', '?', '?');
$b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
return str_replace($a, $b, $str);
}
// Hier geht es richtig los
include "db_conn.inc";
if (isset($_POST["dele1"])) {
if(is_file('Akten/'.htmlentities($_SESSION['dat_datei']))) {
unlink ('Akten/'.htmlentities($_SESSION['dat_datei']));
$_SESSION['dat_datei'] = $dat_datei = "";
}
$dat_id = $_SESSION['dat_id'];
$sqlupdate = "UPDATE akt_archiv SET dateiname = '', dateiort = '' WHERE id = '$dat_id'";
$result = mysqli_query($dbank, $sqlupdate);
if (!$result) {
echo "Konnte Abfrage nicht erfolgreich ausführen von DB: " . mysql_error();
echo "<a href='akten-sql.php'>Zurück zur Tabelle</a>";
//echo "<input type='button' value='Schließen und zurück' onclick='close()'>";
exit;
}
echo "<meta http-equiv='refresh' content='0; URL=bildload.php?ID=".htmlentities($dat_id)."'>";
}
if (isset($_POST["abbruch"])) {
$dat_id = $_SESSION['dat_id'];
echo $dat_id;
echo "<meta http-equiv='refresh' content='0; URL=akten-sql.php#".htmlentities($dat_id)."'>";
exit;
}
if (isset($_POST["lokalinsert"])) {
$dat_id = $_SESSION['dat_id'];
$dat_datei = $_POST['file2'];
$sqlupdate = "UPDATE akt_archiv SET Dateiname = '$dat_datei', dateiort = 'l' WHERE id = '$dat_id' ";
$result = mysqli_query($dbank, $sqlupdate);
if (!$result) {
echo "Konnte Dateiname nicht speichern! " . mysqli_error();
echo '<meta http-equiv="refresh" content="20; URL=akten-sql.php#'.$dat_id.'">';
exit;
}
echo '<meta http-equiv="refresh" content="0; URL=akten-sql.php#'.$dat_id.'">';
}
// ausgewählte Bilder nach umrechnen und laden
//if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!isset($_POST["bildinsert"])) {
$sql = mysqli_query ($dbank, "SELECT * FROM akt_archiv WHERE id = $dat_id");
$daten = mysqli_fetch_assoc($sql);
$dat_id = $daten['id'];
$dat_datei = $daten['dateiname'];
$dat_dateiort = $daten['dateiort'];
$_SESSION['dat_id'] = $dat_id;
$_SESSION['dat_datei'] = $dat_datei;
} else {
// Hier muss der DIR-Name aus der Datenbank hinein, mit SESSION übergeben?
$dat_id = $_SESSION['dat_id'];
$dat_datei = $_FILES['file1']['name']; //$_SESSION['dat_datei'];
$targetDir = 'Akten/'; //Zum Ablegen der Dateien
foreach($_FILES as $fieldName => $fileData){
if(!$fileData['name']){
echo "Keine Datei im Feld '{$fieldName}' angegeben.<br />\n";
continue;
}
if($fileData['error']){
echo "Fehler beim Upload von '{$fileData['name']}'.<br />\n";
echo "<pre>" ;
print_r($_GET);
print_r($_POST);
print_r($_SESSION) ;
print_r ($_FILES) ;
echo "</pre>" ;
$dat_id = $_SESSION['dat_id'];
echo "<meta http-equiv='refresh' content='20; URL=bildload.php?ID=".htmlentities($dat_id)."'>";
exit;
}
//$dateiname = explode(".", $fileData['name']);
//$namekorrekt = post_slug($dat_datei);
//$fileData['name'] = $namekorrekt.".".$dateiname[1];
$filepath_old = $fileData['tmp_name'];
$filepath_new = $targetDir . $fileData['name'];
move_uploaded_file($filepath_old, $filepath_new);
$sqlupdate = "UPDATE akt_archiv SET Dateiname = '$dat_datei', dateiort = 'w' WHERE id = '$dat_id' ";
$result = mysqli_query($dbank, $sqlupdate);
if (!$result) {
echo "Konnte Fotoname nicht speichern! " . mysqli_error();
echo '<meta http-equiv="refresh" content="20; URL=fotos-sql.php#'.$dat_id.'">';
exit;
}
}
echo '<meta http-equiv="refresh" content="0; URL=akten-sql.php#'.$dat_id.'">';
}
//}
?>
<form name="load" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" >
// onsubmit="ajaxForm(this);return false;"
<table id="newtab">
<tr>
<td colspan="5"><h5><?PHP echo $daten['titel'];?></h5></td>
</tr>
<tr>
<td>PDF-Datei auswählen: <?PHP echo $dat_datei; ?></td>
<td width="150"><?PHP if (!$dat_datei) { echo ' <input type="hidden" name="MAX_FILE_SIZE" value="60000000" /><input type="file" name="file1" accept="application/pdf">'; } ?></td>
<td width="100"><?PHP if ($dat_datei) { echo '<button type="submit" name="dele1"> Löschen</button>'; } ?></td>
</tr>
<tr>
<td><?PHP echo '<input type="hidden" name="dat_datei" value="'.$dat_datei.'">'; ?></td>
<td width="150"><button type="submit" name="bildinsert"> Hochladen </button></td>
<td width="100"></td>
</tr>
</table>
</form>
<?PHP
if ($_SESSION['archiv'] == "Ja"){
echo <<<FORM
<form action="{$_SERVER['PHP_SELF']}" method="post">
<table id="newtab">
<tr>
<td colspan="5"><h5>{$daten['titel']}</h5></td>
</tr>
<tr>
<td width="170">Datei auswählen: </td>
<td width="250">{$dat_datei}</td>
<td width="150"><input type="file" name="file2" ></td>
<td width="100"><button type="submit" name="dele1"> Löschen</button></td>
</tr>
<tr>
<td width="170">{$dat_datei}</td>
<input type="hidden" name="dat_datei" value="{$dat_datei}">
<td width="250"><button type="submit" name="abbruch"> Abbrechen </button></td>
<td width="150"><button type="submit" name="lokalinsert"> Hochladen </button></td>
<td width="100"></td>
</tr>
</table>
</form>
FORM;
}
echo <<<FORM
<form action="{$_SERVER['PHP_SELF']}" method="post">
<table id="newtab">
<tr>
<td width="250"><button type="submit" name="abbruch"> Abbrechen </button></td>
</tr>
</table>
</form>
FORM;
echo "Ende";
?>
</div>
Für die Uploadanzeige habe ich mich für eine Datei von Tristan Radke entschieden: Upload
Ich habe eine *.JS erstellt und die eingebunden. Zum Glück funktionierte es auf Anhieb.
Aber nun hänge ich in der Luft und sehe vermutlich nur den Wald vor lauter Bäumen nicht:
Wenn ich den im FORM jetzt auskommentierten Teil mit onsubmit einbinde zeigt er mir den Upload an, aber danach bleibt er "irgendwo" hängen.
Also ich komme nicht in den Programmteil, wo meine Daten in die Datenbank geschrieben werden und ich dann ins Hauptprogramm zurückkomme. Hat da jemand einen Tipp für mich? Irgendwie stehe ich da auf dem Schlauch...
Danke schon mal.