kostenloser Webspace werbefrei: lima-city


PHP&MySQL -Wert automatisch erhöhen, wenn schon in Datenabnk

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    s*****d

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. simon-d schrieb:
    ... 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??
    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.
    wenn das dich hier jetzt nicht befriedigt, dann habe ich deine ausdrucksweise leider nicht ganz behirnt.
  4. Autor dieses Themas

    s*****d

    Hallo!
    czibere schrieb:
    simon-d schrieb:
    ... 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??
    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.
    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.
  5. simon-d schrieb:
    Hallo!
    czibere schrieb:
    simon-d schrieb:
    ... 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??
    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.
    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.
    oh ich glaube jetzt ist es klar.
    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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!