Kranetierli
Mitglied
Hallo zusammen
Während dem programmieren an meinem Firmenprojekt bin ich auf ein Problem gestossen, an dem ich nun schon ein paar Tage herumbastel. Falls das hier mehr mit MySQL zu tun hat, wär ich einem Moderator dankbar, den Thread zu verschieben.
Ausgangslage:
In der Applikation geht es um eine Teileverwaltung, in der die Kunden Testtetile erfassen, einbauen und ausbauen könnnen. Das ist alles schon programmiert und funktioniert bestens. Nun soll man pro Teil auch noch eine Datei anfügen können. Das Upload-Formular hab ich auch bereits programmiert und das funktioniert auch bestens, bis auf einen Punkt; Beim Heraufladen einer Datei werden alle Informationen zu einer Datei, also zum Beispiel Originalname und Dateityp, in die Datenbank gespeichert und die Datei zuerst in das TEMP-Verzeichnis auf den Server und dann unbenannt und in /upload kopiert.
Problem:
Um zu verhindern dass eine Datei überschrieben wird, speichere ich die Datei unter der ID der Datenbank. So kann ich auch später per ID die Datei anzeigen und zum Herunterladen anbieten.
Nun aber... Da die Datei gleichzeitig mit dem Datenbankeintrag heraufgeladen wird, muss ich quasi den Auto_Wert des Datenbankeintrages schon vorher wissen.
Lösungsansatz:
Bis jetzt hab ich das wie folgt gelöst:
Der letzte Eintrag in der Tabelle "attachment" wird ausgelesen, um "1" erhöht und in der Variable "$nameneu" gespeichert. Falls die Variable "$nameneu" nicht vorhanden ist, also noch kein Eintrag in der Datenbank ist, wird der Wert "1" zugewiesen.
Das funktioniert ja auch!
und jetzt das grosse ABER
Die Datenbank sieht wie folgt aus:
-------------------------------------
| ID | Originalname |
| 1 | 16032007.pdf |
| 2 | Zeitberechnung.xls |
-------------------------------------
Zwei Anhänge sind also vorhanden, auch auf den Server kopiert. Nun löscht ein Kunde die Datei mit der ID "2".
Nun wird die nächste Datei "2" heissen, da ja durch die Abfrage die höchste ID 1 ist, die um eins erhöht wird und dann 2 wird und die Datei auf 2 getauft wird und kopiert.
Aber in der Datenbank ist die ID 3 eingetragen, da MySQL den AutoWert ja hochzählt.
Frage:
Wie kann ich den Auto_Wert voraussehen, auch wenn ein Teil gelöscht wurde?
System:
XAMPP 1.5.5
- PHP Version 5.2.0
- phpMyAdmin 2.9.1.1
- MySQL 5.0.27
Achso und ich entschuldige mich für den halben Roman, aber aus Erfahrung weis ich, dass man lieber zu viel als zuwenig über das System wissen sollte, damit man das Problem lösen kann.
mfg
Kranetierli
Während dem programmieren an meinem Firmenprojekt bin ich auf ein Problem gestossen, an dem ich nun schon ein paar Tage herumbastel. Falls das hier mehr mit MySQL zu tun hat, wär ich einem Moderator dankbar, den Thread zu verschieben.
Ausgangslage:
In der Applikation geht es um eine Teileverwaltung, in der die Kunden Testtetile erfassen, einbauen und ausbauen könnnen. Das ist alles schon programmiert und funktioniert bestens. Nun soll man pro Teil auch noch eine Datei anfügen können. Das Upload-Formular hab ich auch bereits programmiert und das funktioniert auch bestens, bis auf einen Punkt; Beim Heraufladen einer Datei werden alle Informationen zu einer Datei, also zum Beispiel Originalname und Dateityp, in die Datenbank gespeichert und die Datei zuerst in das TEMP-Verzeichnis auf den Server und dann unbenannt und in /upload kopiert.
Problem:
Um zu verhindern dass eine Datei überschrieben wird, speichere ich die Datei unter der ID der Datenbank. So kann ich auch später per ID die Datei anzeigen und zum Herunterladen anbieten.
Nun aber... Da die Datei gleichzeitig mit dem Datenbankeintrag heraufgeladen wird, muss ich quasi den Auto_Wert des Datenbankeintrages schon vorher wissen.
Lösungsansatz:
Bis jetzt hab ich das wie folgt gelöst:
PHP:
$query_se = "SELECT ID FROM attachment;";
$result = mysql_query($query_se) OR die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$nameneu = $row['ID']+1;
}
if (!isset($nameneu)) {
$nameneu=1;
}
Das funktioniert ja auch!
und jetzt das grosse ABER
Die Datenbank sieht wie folgt aus:
-------------------------------------
| ID | Originalname |
| 1 | 16032007.pdf |
| 2 | Zeitberechnung.xls |
-------------------------------------
Zwei Anhänge sind also vorhanden, auch auf den Server kopiert. Nun löscht ein Kunde die Datei mit der ID "2".
Nun wird die nächste Datei "2" heissen, da ja durch die Abfrage die höchste ID 1 ist, die um eins erhöht wird und dann 2 wird und die Datei auf 2 getauft wird und kopiert.
Aber in der Datenbank ist die ID 3 eingetragen, da MySQL den AutoWert ja hochzählt.
Frage:
Wie kann ich den Auto_Wert voraussehen, auch wenn ein Teil gelöscht wurde?
System:
XAMPP 1.5.5
- PHP Version 5.2.0
- phpMyAdmin 2.9.1.1
- MySQL 5.0.27
Achso und ich entschuldige mich für den halben Roman, aber aus Erfahrung weis ich, dass man lieber zu viel als zuwenig über das System wissen sollte, damit man das Problem lösen kann.
mfg
Kranetierli