Variable mit Werten aus MySQL Tabelle vergleichen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absenden
array
ausgabe
code
datenbank
datensatz
ende
ergebnis
fehler
header
index
login
null
spitzname
tabelle
verbindung
vergeben
vergleichen
vorhandenen spitznamen
zeile
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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 -
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örtheader("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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage