kostenloser Webspace werbefrei: lima-city


Variable mit Werten aus MySQL Tabelle vergleichen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hallo.
    Ich habe eine Variable $_POST['spitzname'] und die soll mit den bereits vorhandenen Spitznamen aus einer MySQL Tabelle verglichen werden. Wenn der Name schon vorhanden ist soll ein Fehler kommen und wenn nicht soll der Name auch in die Tabelle eingetragen werden. Hier ist mein Ansatz:

    if (isset($_POST['absenden']) && isset($_POST['spitzname'])) {
    	$_SESSION['spitzname'] = $_POST['spitzname'];
    	$spitzname = $_SESSION['spitzname'];
    	$ergebnis = $mysqli->query("SELECT spitzname FROM gaeste;");
    	if ($zeile = $ergebnis->fetch_array()) {
    		if ($spitzname == $zeile['spitzname']){
    			// Name bereits vergeben
    			header("location: index.php?f=1");
    		}
    		else {
    			$spitzname = $mysqli->real_escape_string($spitzname);
    			$insert = "INSERT INTO gaeste (id, spitzname) VALUES ('NULL', '$spitzname')";
    			if($ergebnis2 = $mysqli->query($insert)) {
    				// Erfolgreich eingeloggt
    				$_SESSION["login"] = "ok";
    				header("location: willkommen.php");
    			}
    			else {
    				echo $mysqli->error;
    			}
    		}
    	}
    	$ergebnis->close();
    }


    Allerdings wird die Variable somit nur mit dem 1. Datensatz aus der Tabelle verglichen. Sie soll aber mit jedem Datensatz verglichen werden. Wie macht man das? Kann man die Spitznamen vielleicht in ein Array packen und dann die Variable mit den Werten aus dem Array vergleichen oder kann man sogar die Variable direkt mit allen Werten aus der Tabelle vergleichen?

    Hoffe mir kann jemand helfen.
    Liebe Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Dein
    $ergebnis = $mysqli->query("SELECT spitzname FROM gaeste;");

    ist auch nicht elegant

    besser:
    $ergebnis = $mysqli->query("SELECT spitzname FROM gaeste where spitzname='"$spitzname';");

    kommt es zu einem Ergebnis, dann ist der Spitzname vergeben.

    Beitrag zuletzt geändert: 16.12.2012 11:37:23 von all-in1
  4. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Super danke das klappt perfekt!

    Ich habe aber noch ein Problem. Ich habe jetzt alles auf den Server hochgeladen und die Verbindung.php entsprechend an meine Datenbank angepasst und meine Tabellen zu der Datenbank importiert. Allerdings klappt der gleiche Code jetzt nicht. Hier nochmal der gesamt Code von login.php:

    <?php
    session_start();
    ?>
    
    <?php
    include "verbindung.php";
    
    ?>
    <?php
    if (isset($_POST['absenden']) && isset($_POST['spitzname'])) {
    	$_SESSION['spitzname'] = $_POST['spitzname'];
    	$spitzname = $_SESSION['spitzname'];
    	$ergebnis = $mysqli->query("SELECT spitzname FROM gaeste where spitzname='$spitzname';");
    	if ($zeile = $ergebnis->fetch_array()) {
    		header("location: index.php?f=1");
    	}
    	else {
    		$spitzname = $mysqli->real_escape_string($spitzname);
    		$insert = "INSERT INTO gaeste (id, spitzname) VALUES ('NULL', '$spitzname')";
    		if($ergebnis2 = $mysqli->query($insert)) {
    			// Erfolgreich eingeloggt
    			$_SESSION["login"] = "ok";
    			header("location: willkommen.php");
    		}
    		else {
    			echo $mysqli->error;
    		}
    	}
    	$ergebnis->close();
    }
    ?>


    Wenn man auf Login in klickt wird man weder auf willkommen.php noch auf index.php weitergeleitet, sondern man kommt auf login.php und die Seite ist komplett leer. Woran liegt das?

    EDIT: Hab den Fehler gefunden. Zwischen den php tags von der Session und der Verbindung ganz oben im Code dürfen keine freien Zeilen sein, da es sonst als Ausgabe zählt und vor header Funktionen darf keine Ausgabe stattfinden.

    Beitrag zuletzt geändert: 16.12.2012 12:40:13 von ultimate-bravery
  5. yo mey! paar harmlose bemerkungen ;)

    1. ein dokument braucht - vorausgesetzt, du wechselst nicht zwischen php und html (was eigentlich auch erwünscht wäre) - nur am anfang
    <?php
    // blaaa ...
    und sonst nix! es braucht nicht einmal am ende ein
    // blaaa ...
    ?>
    2. in php brauchst am ende von queries kein ';' (semicolon). das brauchst du nur, wenn du mit cmd oder cli arbeitest (bei anderen tools [phpmyadmin &c.] kenne mich nicht aus);

    3.
    <?php
    // blaaa ...
    header("location: index.php?f=1"); //oder
    header("location: willkommen.php");
    sind abgrundtief falsch! es gehört
    header("Location: html://<host>/<path_to_file>/index.php?f=1");

    ende der nörgelei :)

    Beitrag zuletzt geändert: 16.12.2012 14:37:20 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!