Überprüfung per PHP in Mysql Datenbank

KeyT0ast3r

Grünschnabel
Hallo
Ich wollte mal nachfragen ob mir jemand weiterhelfen kann.
Kurze Erklärung zu meinem Vorhaben:
  • Ich möchte eine Datenbank mit Daten füllen. ( Momentane Spalten: | Id | Spielername | Gildenname | Stufe | )
  • Das mit dem Eintragen funktioniert schon.
Code:
<center>
<h4>Hier kannst du alle deine Fertigkeiten eintragen: </h4>
</center>
		<form method = "post">
			<center>
            Spielername:
			<input type = "text" name= "Spielername" placeholder="Charaktername" />
			Gildenname:
			<input type = "text" name= "Gildenname" placeholder="Gildenname" />
			Stufe:
            <input type = "text" name= "Stufe" placeholder="Handwerksstufe" />
			<br />
            <br />
            <input type = "submit" name= "Eintragen" />
			</center>
        </form>

<?php
include ( './*************' );

	if (isset($_POST ['Spielername']) and isset($_POST ['Gildenname']) and isset($_POST ['Stufe']))
	{
		$sql = "INSERT INTO 1_Aktion (Spielername, Gildenname, Stufe) VALUES('".$_POST['Spielername']."', '".$_POST['Gildenname']."', '".$_POST['Stufe']."')";
		$result = mysql_query($sql);
			die ("Daten wurden eingetragen.");
	}
	mysql_close ( $db_link );
?>
  • Wenn jetzt der Spielername schon vorhanden ist, dann soll er nur die Zeile updaten.

Beispiel:
1Testuser-1Testgilde-150
2Testuser-2Testgilde-240

Wenn ich jetzt den "Testuser-1" später nochmal in das Formularfeld "Spielername" eintrage und dieser ist schon vorhanden dann soll er nur die Zeile wo der "Testuser-1" ist abändern und nicht neueintragen.

Ist sowas möglich ?
Falls ja bitte ich um eine Erklärung hierzu wie man dies umsetzen kann.

Habe leider noch nicht ganz so die Erfahrung mit PHP und Mysql. Nur wir arbeiten dran :)

Gruß Micha
 
Wenn du es in PHP machen willst, musst du zuerst abfragen, ob ein "Testuser-1" bereits existiert (mit SELECT). Falls nicht, machst du die ganz normale INSERT Operation in SQL. Ansonsten machst du UPDATE.

Falls du's gleich direkt in SQL machen willst ginge etwas in dieser Richtung:
IF EXISTS (SELECT Id FROM 1_Aktion WHERE Spielername='Testuser-1')
UPDATE 1_Aktion SET ( [...] ) WHERE Spielername='Testuser-1'
ELSE
INSERT INTO [...]

Kurze Frage: Wieso hast du beim include den Dateinamen zensiert? :)
 
Bevor du weiterarbeitest, informiere dich unbedingt über Kontextwechsel/SQL-Injections.

- http://php-de.github.io/jumpto/faq/#sql-injection
- http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel

Du nutzt zudem die veraltete mysql-Extension. Die wird in kommenden PHP-Versionen standardmäßig nicht mehr enthalten sein. Nutze mysqli (quasi identisch) oder PDO.

- http://php-de.github.io/jumpto/faq/#deprecated-mysql (Abschnitt „Ist die mysql-Erweiterung wirklich veraltet…“)

Wenn du einen Index auf Spielername legst, ist die beste Antwort wohl ON DUPLICATE KEY UPDATE:

- https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
 
Zurück