ok danke dann versuch ich das mal aber kannst du mir sagen wieso man dafür die Usertabelle updaten muss?
Beiträge von Inuyasha2008
-
-
ok das pass ich jetzt an aber was ich nicht versteh beim registrieren soll die der CharaUser ja die ID vom User haben und da brauch man ja noch keine Session. Bei der registrierung wird ja alles in die datenbank eingetragen. Deswegen ist es komisch das da 0 steht oder? Ist an dem Script denn etwas falsch?
-
Nun ja das hier is mein Login:
PHP
Alles anzeigen<?php session_start(); ?> <html> <head> </head> <body background="http://img8.imageshack.us/img8/3394/farbverlauf.jpg"> <?php error_reporting(E_ALL); ini_set("display_errors", true); include(db.php); $username = $_POST['username']; $passwort = md5($_POST['password']); $abfrage = "SELECT * FROM user WHERE Username = '" . $username . "' and passwort = '" .$passwort. "'"; $ergebnis = mysql_query($abfrage); if ($row = mysql_fetch_object($ergebnis)) { $_SESSION['username'] = $username; echo "Login erfolgreich. <br> <a href=\"http://localhost/security/inuyashagame.php\" target=\"_parent\">weiter</a>"; } else { echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>"; } if(!empty($_SESSION['username'])) { $sql = " UPDATE `user` SET `last_hit` = NOW() WHERE `Username` = '".$_SESSION['username'] . "'"; mysql_query($sql) or die(mysql_error()); } $sql = " SELECT `Username` FROM `user` WHERE `last_hit` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)"; $res = mysql_query($sql); ?> </form> </body> </html>
Also ich hab immer alles mit $_SESSION['username'] gemacht und da ist jetzt nicht wirklich ne ID gespeichert oder lieg ich da falsch?
-
naja ok hast schon Recht das es i-wie sinnlos ist... nur krieg ich es i-wie nicht hin das die Werte des eingeloggten users angezeigt werden. Ich krieg die Werte angezeigt aber dann von einem bestimmten also in der Art wie:
hab schon andere sachen ausprobiert aber ich bekomm nie das angezeigt vom eingeloggten user...
-
@Pion wie meinst du das jetzt was für einen Wert die hat? Wie genau soll ich das machen
Tobse: Nun ja der Sinn davon ist das ich später Loginname und char nicht gleichzeitig machen will. Man registriert sich logt sich ein und kann dann erst seinen char erstellen und dieser erstellte char soll mit dem login übereinstimmen. Also wird CharID verschieden von UserId sein aber CharUser sollte den gleichen Wert die UserId haben. Wüsste nicht wie man es sonst machen sollte.
-
habs versucht aber finde irgendwie keinen Fehler...
theoretisch müsste doch UserID und CharaUser die gleiche ID haben... -
also hab noch was rumversucht aber ich hab immer noch das Problem, dass bei mir UserID und CharaUser nicht gleich sind.
Wenn ein User mit der ID 5 ertsellt wurd soll bei CharaUser auc 5 stehen...
Also habs in die Registrierung getan:PHP
Alles anzeigen<html> <head> </head> <body background="http://img8.imageshack.us/img8/3394/farbverlauf.jpg"> <?php error_reporting(E_ALL); ini_set("display_errors", true); include('datenverbindung.php'); $username = $_POST['username']; $passwort = $_POST['passwort']; $passwort2 = $_POST['passwort2']; $email = $_POST['email']; $rasse = $_POST['rasse']; $str = 5; $vert = 5; $speed = 5; $splitter = 0; $geld = 1000; $lp = 50; $gk = 50; if($passwort != $passwort2 OR $username == "" OR $passwort == "" OR $email == "") { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"registrierung.html\">Zurück</a>"; exit; } $passwort = md5($passwort); $result = mysql_query("SELECT UserID FROM user WHERE Username LIKE '$username'"); $menge = mysql_num_rows($result); if($menge == 0) { $eintrag = "INSERT INTO user (username, passwort, email, rasse) VALUES ('$username', '$passwort', '$email', '$rasse')"; $eintrag2 = "INSERT INTO chara (CharaName, CharaStr, CharaVert, CharaSpeed, CharaSplitter, CharaGeld, CharaLP, CharaGK) VALUES ('$username', '$str', '$vert', '$speed', '$splitter', '$geld', '$lp', '$gk')"; $eintragen = mysql_query($eintrag); $eintragen2 = mysql_query($eintrag2); if($eintragen == true) { echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>"; } else { echo "Fehler beim Speichern des Benutzernames. <a href=\"registrierung.html\">Zurück</a>"; } } else { echo "Benutzername schon vorhanden. <a href=\"registrierung.html\">Zurück</a>"; } $chara = "SELECT * FROM user WHERE Username LIKE '$username'"; $chara2 = mysql_query($chara) OR die(mysql_error()); $chara3 = mysql_fetch_assoc($chara2); if(!mysql_fetch_array(mysql_query("SELECT CharaID FROM chara WHERE CharaName = '".$username."'"))) { mysql_query("INSERT INTO chara (CharaName, CharaUser) VALUES('".$username."', '".$chara3['UserID']."')") or die(mysql_error()); } ?> </body> </html>
-
ach so wusste ich noch nicht. Vielen Dank für die schnelle Hilfe
-
Gutan Tag.
Also mein Problem ist folgendes:
Ich habe einmal in mysql alle user. Und diese haben einen charakter wo ich alle Werte rein speicher. Ich will jetzt das die Daten vom char dem jeweiligen User angezeigt werden. D.h. ich hab bei user ein Feld UserID und bei chara hab ich CharaUser. Jetzt soll die UserId mit CharaUser übereinstimmen. Bei UserID stehen auch die Zahlen 1, 2, 3, ... aber bei CharaUser kommt immer 0.
Hoffe es ist verständlich was ich meine. Ich zeige mal wie ich es aufgebaut hab. Also das Problem entsteht bei Login:PHP
Alles anzeigen<?php session_start(); ?> <html> <head> </head> <body background="http://img8.imageshack.us/img8/3394/farbverlauf.jpg"> <?php error_reporting(E_ALL); ini_set("display_errors", true); include('datenverbindung.php'); $username = $_POST['username']; $passwort = md5($_POST['password']); $abfrage = "SELECT * FROM user WHERE Username = '" . $username . "' and passwort = '" .$passwort. "'"; $ergebnis = mysql_query($abfrage); if ($row = mysql_fetch_object($ergebnis)) { $_SESSION['username'] = $username; echo "Login erfolgreich. <br> <a href=\"http://localhost/security/inuyashagame.php\" target=\"_parent\">weiter</a>"; echo '<script language="javascript">window.location="inuyashagame.php";</script>'; } else { echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>"; } if(!empty($_SESSION['username'])) { $sql = " UPDATE `user` SET `last_hit` = NOW() WHERE `Username` = '".$_SESSION['username'] . "'"; mysql_query($sql) or die(mysql_error()); } $sql = " SELECT `Username` FROM `user` WHERE `last_hit` > DATE_SUB(NOW(), INTERVAL 10 MINUTE)"; $res = mysql_query($sql); // $res in gewohnter Weise auswerten $chara = "SELECT * FROM user WHERE Username = '".$_SESSION['username']."'"; $chara2 = mysql_query($chara) OR die(mysql_error()); $chara3 = mysql_fetch_assoc($chara2); if(!mysql_fetch_array(mysql_query("SELECT CharaID FROM chara WHERE CharaName = '".$username."'"))) { mysql_query("INSERT INTO chara (CharaName, CharaUser) VALUES('".$username."', '".$chara3['UserID']."')") or die(mysql_error()); ?> </form> </body> </html>
Ach ja als Fehler bekomme ich dann das:
Parse error: parse error in C:\xampp\security\htdocs\login.php on line 54und Zeile 54 ist </html> das kanns nicht sein xD
-
also hab das mit dem update geändert ka was ich mir dabei gedacht hab oO also habs jetzt mitINSERT INTO gemacht das sieht dann so bei mir aus:
und dann unten:
PHPif (count($add2)) { $query = "INSERT INTO technicken ('technick', 'dmg') VALUES (" . implode(", ", $add2) . " )";
dann bekomm ich als fehlermeldung:
MySQL-Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''technick', 'dmg') VALUES (`technick` = 'sankontessou' )' at line 1
was genau meint man jetzt damit?
-
ok danke jetzt steht da daten aktualisiert jedoch wenn ich in die Tabelle technicken guck steht da nichts bei technick es ist immer noch eine leere tabelle
-
ja hab ich und da kommt das raus: MySQL-Fehler: Unknown column 'sankontessou' in 'field list'
nun ja es soll sankontessou ja nich geben als tabelle es soll nur bei technicken rein gecshrieben werden oO ka wieso es das nicht tut also wenn ich werte um 1 erhöhen will klappt es wenn ich aba ein neues wort einfügen will wie man oben sieht klappts nich...
hatte diesen Mysql Fehler bisher auch noch nie.. sry -
Hoffe verständlich was ich meine oO
Also ich hab jetzt mal ne neue Tabelle mit Technicken erstellt ka ob das umsetzbar is wie ich es vor hab auf jeden Fall hab ich als Datensätze: id, technick und dmg (=damage der technick).
Nun ja dann kommt der teil wo man drauf klicken muss wenn man die technick lernen will:PHP
Alles anzeigen<?php include('datenverbindung.php'); $abfrage = "SELECT Rasse FROM user WHERE username = '" . $_SESSION['username'] ."'"; $out = mysql_query($abfrage); while($row = mysql_fetch_array($out)) { $rasse = $row['Rasse']; } if($rasse == "geborener Halbdämon") { echo "<form action = \"training.php\" method = \"post\"> Sankontessou trainieren! <select name=\"technick\" size=\"1\"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> <option>9</option> <option>10</option> </select> Tag(e) <input type = \"submit\" value=\"trainieren\"> </form>"; } if($rasse == "Dämon") { echo "<form action = \"training.php\" method = \"post\"> Fluch trainieren! <select name=\"technick\" size=\"1\"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> <option>9</option> <option>10</option> </select> Tag(e) <input type = \"submit\" value=\"trainieren\"> </form>"; } ?>
also hab bisher erst 2 Technicken.
dann der teil wohin es gesendet wird:
PHP
Alles anzeigen<?php include('datenverbindung.php'); $technick = $_POST['Sankontessou']; $technick2 = $_POST['Fluch']; $add = array(); if (in_array($technick, $numbers)) $add[] = "`technick` = `Sankontessou`"; if (count($add)) { $query = "update `technicken` set " . implode(", ", $add) . ""; mysql_query($query) or die ("MySQL-Fehler: " . mysql_error()); echo "Daten aktualisiert"; } else echo "Keine Daten aktualisiert"; ?>
Nun ja nachdem ich das alles gemacht hab wird diese technick jedoch nicht in die liste erstellt. Weiß nich genau wie ich es anders machen könnt hoffe es kann mir hier einer helfen.
MfG: Inuyasha2008 -
ok ich lass die '' dann mal weg danke für die erklärung ich werds mir mercken
-
also hab hier jetzt ein Problem das das Update nicht funktioniert.
Also hab den Wert splitter in die db bei werte eingefügt und der User kann ja noch keinen haben. Jetzt hab ich eingestellt wenn man noch keinen Splitter hat bekommt man einen hab es mit INSER INTO gemacht. Dann wenn man schon einen hat wird dieser einfach geupdatet und +1. Nur leider klappt das mit dem +1 nicht, da bei Splitter 0 stehen bleibt obwohl update erfolgreich dort steht. Dann hab ich mal ohne $splitter + 1 gemacht also nur 1 gecshrieben dann wurd er von 0 auf 1 geupdatet. Wenn ich dann nochmal $splitter + 1 schreib sollte ja als nächstes 2 kommen jedoch bleibt es wieder auf 0...
hier is der script:PHP
Alles anzeigen<?php include('datenverbindung.php'); $split = 1; $nummer = rand(1,100); $abfrage2 = "SELECT * FROM werte WHERE id = '3'"; $out2 = mysql_query($abfrage2); while($row2 = mysql_fetch_array($out2)) { $splitter = $row2['splitter']; } if($splitter == 0 and $nummer >=1 and $nummer <=10) { $eintrag = "INSERT INTO werte (splitter) VALUES ('$split')"; $eintragen = mysql_query($eintrag); } elseif($nummer >=1 and $nummer <=10) { $aendern = "UPDATE werte Set splitter = '$splitter + 1' WHERE id = '3'"; $update = mysql_query($aendern); echo "Splitter gefunden"; } else { echo " leider keinen Splitter gefunden"; } ?>
EDIT: sry habs rausgefunden das INSERT INTO quatsch war und das auch update sein muss. und ich split nich brauch sondern einfach 1 update und beim 2. waren die ' ' zuviel sry wegen dem tread kann gelöscht werden
-
Danke für die Lösung
also Grundlagen hab ich gelernt also in nem tut. Naja hier lags eher am nachdenken sry. -
Also ich hab jetzt eine if abfrage erstellt und dort will ich das z.B. 10% chance besteht etwas zu bekommen.
Was ich habe funktioniert auch so wie ich es will nur scheint das etwas lang. gibt es eine möglichkeit es zu verkürzen?PHP
Alles anzeigen<?php include('datenverbindung.php'); $nummer = rand(1,100); if($nummer == 1 OR $nummer == 2 OR $nummer == 3 OR $nummer == 4 OR $nummer == 5 OR $nummer == 6 OR $nummer == 7 OR $nummer == 8) { echo "Splitter gefunden"; } else { echo "keinen Splitter gefunden"; } include('user online.php'); ?>
-
ja sry ich lass es ich wollt nur ne antwort darauf finden sry kommt nich wieder vor. Ich teste es mal
EDIT: ES GEHT!
Danke xD ich lass es auch sein in mehreren Foren zu posten xD.
Vielen Dank für deine Hilfe!EDIT2: Also hab mal nachgecshaut und so wie du in_array verwendet has hab ichs nirgends gefunden also nur anders also ohne mysql.
also dort wurde das array gefüllt und nicht wie in $add = array()
und das implode versteh ich auch nich ganz. Gibts i-wo eine seite wo das genauer erläutert is oder kanns du es vllt kurz erläutern wäre echt cool weil ich ja aber was lernen will un nich nur kopieren -
Also auf der Seite hab ich jetzt 3 buttons von 1-10 wenn ich jetzt bei den von Stärke auf egal was klick ändert sich hier auch alles von speed und vert obwohl eig. nur str geändert werden sollte. Hoffe es kann einer helfen
PHP
Alles anzeigen<?php include('datenverbindung.php'); $abfrage = "SELECT * FROM werte WHERE id = '3'"; $out = mysql_query($abfrage); while($row = mysql_fetch_array($out)) { $str = $row['str']; $vert = $row['vert']; $speed = $row['speed']; } $wert = $_POST['Tage']; $wert2 = $_POST['Tage2']; $wert3 = $_POST['Tage3']; if($wert == 1 OR 2 OR 3 OR 4 OR 5 OR 6 OR 7 OR 8 OR 9 OR 10){ $aendern = "UPDATE werte Set str = $str + 5 WHERE id = '3'"; $update = mysql_query($aendern); } if($wert2 == 1 OR 2 OR 3 OR 4 OR 5 OR 6 OR 7 OR 8 OR 9 OR 10){ $aendern2 = "UPDATE werte Set vert = $vert + 1 WHERE id = '3'"; $update2 = mysql_query($aendern2); } if($wert3 == 1 OR 2 OR 3 OR 4 OR 5 OR 6 OR 7 OR 8 OR 9 OR 10){ $aendern3 = "UPDATE werte Set speed = $speed + 3 WHERE id = '3'"; $update3 = mysql_query($aendern3); } if ($update == true) { echo "Stärke erfolgreich erhöht"; } else { echo "update fehlgeschlagen"; } if ($update2 == true) { echo "Verteidigung erfolgreich erhöht"; } else { echo "update fehlgeschlagen"; } if ($update3 == true) { echo "Geschwindigkeit erfolgreich erhöht"; } else { echo "update fehlgeschlagen"; } ?>
-
es läuft local