PHP&MySQL -Wert automatisch erhöhen, wenn schon in Datenabnk
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausdrucksweise
base
buchstabe
code
datenbank
entsprechendem code
erfindung
errechnete string
ersten post
prinzip
problem
ringen
stanzen
string
update
url
vergeben
vorkommen
werte base
zahl
-
Hallo liebe Community!
Ich habe da ein kleines Problemchen, weiß aber nicht, wie ich da rangehen soll.
Es geht um den URL-Shortener, an dem ich gerade schreibe. Er ist im Prinzip fertig (aber noch nicht fertig getestet ;D) und mein Problem liegt dort, wo die URL festgelegt werden soll, die in die Datenbank kommt. Dazu habe ich bereits hier einen Thread aufgemacht, aber die Lösung selbst gefunden. Jetzt ist das Problem, dass ich auch die Option anbieten möchte, selbst eine Adresse einzutragen, d. h. dass man den Shortlink selbst schreiben kann.
ich poste hier mal den Code:
if (!empty($_POST['kurzurl']) && isset($_POST['kurzurl']) && !is_array($_POST['kurzurl'])) { $sqlbefehl = "SELECT kurz FROM kurzurls WHERE kurz = '".mysqli_real_escape_string($_POST['kurzlink'])."'"; $ausfuehren = mysqli_query($sqlbefehl); $vorhanden = mysqli_fetch_array($ausfuehren); $werte = count($vorhanden); if($werte == 0) { $kurzadresse = mysqli_real_escape_string ($verbindung, $_POST['kurzurl']); } else { $fehler = "bereitsvorhanden"; } } else { $sqlbefehl = "SELECT kurz FROM kurzurls"; $ausfuehren = mysqli_query($sqlbefehl); $vorhanden = mysqli_fetch_array($ausfuehren); $werte = count($vorhanden); if($werte == 0) { $kurzadresse = "a"; } else { $buchstaben = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $base = 62; do { $kombi = ''; $i = $werte % $base; $kombi = $buchstaben[$i] . $kombi; $werte = ($werte - $i) / $base; } while($werte > 0); $kurzadresse = $kombi; } }
Ich denke der Code ist verständlich. Erst wird überprüft, ob der User etwas eingegeben hat, dann ob es schon in der Datenbank ist. Wenn der User nichts eingegeben hat wird wird halt ein String automatisch generiert, nach Zahl des Auto_Increments. Ich werde das mit dem Auto_Increment zwar noch verändern, aber das Problem bleibt trotzdem gleich: Wie schaffe ich es, das Automatisch ein Wert höher genommen wird, wenn der zuvor errechnete String schon wegen einer Usereingabe vergeben ist??
Ich hoffe ihr könnt mir helfen!
MfG. Simon D. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
simon-d schrieb:
warum willst du löcher stanzen in eine automatisch erhöhte nummernreihe? autoincrement sollte nie von user beeinflußt werden. dafür sorgt (my)sql seit der erfindung und eigentlich kommt nie durcheinander.
... das Problem bleibt trotzdem gleich: Wie schaffe ich es, das Automatisch ein Wert höher genommen wird, wenn der zuvor errechnete String schon wegen einer Usereingabe vergeben ist??
wenn das dich hier jetzt nicht befriedigt, dann habe ich deine ausdrucksweise leider nicht ganz behirnt. -
Hallo!
czibere schrieb:
simon-d schrieb:
warum willst du löcher stanzen in eine automatisch erhöhte nummernreihe? autoincrement sollte nie von user beeinflußt werden. dafür sorgt (my)sql seit der erfindung und eigentlich kommt nie durcheinander.
... das Problem bleibt trotzdem gleich: Wie schaffe ich es, das Automatisch ein Wert höher genommen wird, wenn der zuvor errechnete String schon wegen einer Usereingabe vergeben ist??
wenn das dich hier jetzt nicht befriedigt, dann habe ich deine ausdrucksweise leider nicht ganz behirnt.
Vielleicht habe ich mich wirklich falsch ausgedrückt:
Es gibt zwei möglichkeiten: Entweder der Außer gibt etwas ein - Das wird dann in die Datenbank eingetragen oder erst gibt nichts ein dann wird mit dem entsprechendem Code aus dem ersten Post automatisch ein Stringbestimmt. Es kann ja aber sein, dass ein automatisch generierter St Ring bereits von einem Außer eingetragen wurde und deshalb nicht noch einmal vorkommen soll. Dann soll der Wert des automatisch generierten Strings automatisch erhöht werden, bis ein Atring gefunden wird, der noch nicht in der Datenbank gespeichert ist.
MfG. Simon D.
-
simon-d schrieb:
oh ich glaube jetzt ist es klar.
Hallo!
czibere schrieb:
simon-d schrieb:
warum willst du löcher stanzen in eine automatisch erhöhte nummernreihe? autoincrement sollte nie von user beeinflußt werden. dafür sorgt (my)sql seit der erfindung und eigentlich kommt nie durcheinander.
... das Problem bleibt trotzdem gleich: Wie schaffe ich es, das Automatisch ein Wert höher genommen wird, wenn der zuvor errechnete String schon wegen einer Usereingabe vergeben ist??
wenn das dich hier jetzt nicht befriedigt, dann habe ich deine ausdrucksweise leider nicht ganz behirnt.
Vielleicht habe ich mich wirklich falsch ausgedrückt:
Es gibt zwei möglichkeiten: Entweder der Außer gibt etwas ein - Das wird dann in die Datenbank eingetragen oder erst gibt nichts ein dann wird mit dem entsprechendem Code aus dem ersten Post automatisch ein Stringbestimmt. Es kann ja aber sein, dass ein automatisch generierter St Ring bereits von einem Außer eingetragen wurde und deshalb nicht noch einmal vorkommen soll. Dann soll der Wert des automatisch generierten Strings automatisch erhöht werden, bis ein Atring gefunden wird, der noch nicht in der Datenbank gespeichert ist.
MfG. Simon D.
in dem fall gibst du eine neue zeile ein (INSERT ...) mit keinerlei werten drinnen, dann fragst nach LAST_INSERT_ID(), mit dem rückgabewert (bereits um eins erhöht!) berechnest du den string und gibst den ganzen kram nochmals in die selbe id, diesmal mit UPDATE ... blaaa WHERE ID=<LAST_INSERT_ID()>.
sollte jetzt sein :)
Beitrag zuletzt geändert: 18.3.2014 0:34:46 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage