Also ein bissl musste auch selbst machen =)

Ranglisten mit Sql-Datenbank erstellen
-
-
Also damit ich ein Update machen kann, muss ich jedem Feld wo ich ein Update der Daten machen möchte einen Unique-Schlüssel geben?
-
Nein.
Aber jede Tabelle sollte einen eindeutigen Ident besitzen.
Normalerweise ist das ein Feld:
und nochmal zur besseren Übersicht:Code`id` -- name der spalte UNSIGNED INT -- integer (ganze zahl) (UNSIGNED bedeutet keine vorzeichen - also "kein minus", nur positive zahlen) NOT NULL -- kein datensatz darf in diesem feld den wert NULL (nicht gesetzt) besitzen AUTO_INCREMENT -- ~"zähle diesen wert automatisch hoch" PRIMARY KEY -- dieses feld ist der primäre schlüssel, also eine eindeutige id
"ON DUPLICATE KEY UPDATE" greift hier immer dann, wenn Du ein INSERT auf eine `id` versuchst, die es bereits gibt.
Aber auch
wenn Du zB ein Feld `name` auf den Index-Type "UNIQUE" (einzigartig) stellst. -
also da ich ein id-feld hab, dann kann ich das ja benutzen... oder?
PHP
Alles anzeigen<?php // Wenn Formular abgeschickt if(isset($_POST["send"])) { $server = "localhost"; $benutzer = "root"; $data = "rangliste"; // Zugangsdaten zum Verbinden mit dem MySQL-Server $dbconnection = mysql_connect($server, $benutzer) or die ("Fehler mysql_connect: ".mysql_error()); // Auswahl der zu verwendenden Datenbank auf dem Server mysql_select_db($data) or die ("Fehler bei select_db: ".mysql_error()); //Variablen definieren $name = $_POST["name"]; $monat = $_POST["punkte"]; $monat2 = $_POST["monat"]; /*$.$monat2. = $_POST["punkte"];*/ //Hilfe für das Entwickeln.... $echo = "Name: ".$name.", Punkte: ".$monat.", Monat: ".$monat2.""; //ebenfalls Hilfe für das Entwickeln... echo $echo; // wenn das nicht leer ist if(!empty($name) && !empty($monat2) && !empty($monat)){ // Daten in Datenbank eintragen $sQl = mysql_query("INSERT INTO ON DUPLICATE KEY UPDATE rangliste_neu4 (name, ".$monat2.") VALUES ('$name', '$monat')"); // wenn Daten in Datenbank eingetragen if($sQl) { echo "<br>Punkte erfolgreich eingetragen"; }//ansonsten else { echo "<br>Es konnte leider keine Verbindung zur Datenbank hergestellt werden"; } }//Aber wenn das leer ist... else { echo "<br>Bitte füllen Sie alle Felder aus"; } } ?>
Muss ich dann noch die id abfragen, oder ?!
-
$sQl = mysql_query("INSERT INTO ON DUPLICATE KEY UPDATE rangliste_neu4 (name, ".$monat2.") VALUES ('$name', '$monat')");
Hast Du das mal getestet? -
Hallo,
danke für den Tipp, habe ich eben ausprobiert, dann schreibt er mir die Fehlermeldung, (die von mir gewählte) wenn das Eintragen nicht funktioniert hat "Es konnte leider keine Verbindung zur Datenbank hergestellt werden!"
Außerdem hab ich mal den hier eingesetzt:
[PHP]<?php error_reporting(E_ALL); ?>[/PHP]und der spukt mir das hhier aus:
Zitat
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\neu\versteck.php on line 21Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\neu\rechteranking.php on line 9
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\neu\ansprache.php on line 8
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\neu\versteck.php on line 480
Was hat das nun auf sich?
wie muss ich das mit dem mysqli machen?
UPDATE:
Das mit dem mysqli habe ich nun erledigt... aber warum kommt dann die Fehlermeldung?
-
Das mit dem mysqli habe ich nun erledigt... aber warum kommt dann die Fehlermeldung?
Welche Fehlermeldung? -
Zitat
$sQl = mysql_query("INSERT INTO ON DUPLICATE KEY UPDATE rangliste_neu4 (name, ".$monat2.") VALUES ('$name', '$monat')");
// wenn Daten in Datenbank eingetragen
if($sQl) {
echo "<br>Punkte erfolgreich eingetragen";
}//ansonsten
else {
echo "<br>Es konnte leider keine Verbindung zur Datenbank hergestellt werden";Die letztere...
"Es konnte leider keine Verbindung zu Datenbank hergestelt werden" -
Du schreibst die Abfrage falsch.
Guck Dir nochmal die Syntax an: Ranglisten mit Sql-Datenbank erstellen
und/oder hier http://dev.mysql.com/doc/refma…/insert-on-duplicate.html -
ja Moment das hier ist doch nur für im SQL oder?
Zitat
INSERT INTO `points`
SET
`mitglied_id` = 2,
`punkte` = 22,
`monat` = MONTH(NOW()), -- monat = DER MONAT VON (JETZT())
`jahr` = YEAR(NOW()) -- jahr = DAS JAHR VON (JETZT())
ON DUPLICATE KEY UPDATE -- wenn schon vorhanden, dann update:
`punkte` = `punkte` + 22
;wie wäre der passende PHP-Snippet dazu?
also wie mache ich das dann in meinem bsp?
-
Das bringt so nichts. Du musst Dir doch erstmal paar Gedanken machen oder zumindest mal ansehen, was man Dir rät.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!