Mysql Datenbank-Tabelleneinträge begrenzen

T

Träumer12

Hallo!
Ich habe lange versucht ,mit einem Php Skript die Anzahl von Besucher Beiträgen
auf meiner Mysql-Datenbanktabelle zu begrenzen,leider bis jetzt keine passende
Lösung gefunden.Beim Anzeigen funktioniert sehr gut,beim Einfügen nicht.
Bitte um Ihren Vorschläge
 
Wie hast du es dir gedacht?
Ein Besucher darf aller x Minuten nur y Beiträge schreiben?

Ein paar mehr Hintergrundinformationen wären nett.
 
Hallo,
merzi86,ich möchte folgender php mysql Code umstellen:
//Datenbankverbindung gegeben
//Datenbank ausgewählt

$sql =("INSERT INTO table_name (email, text, datum)

VALUES

('".mysql_real_escape_string ($_POST ["email"])."', '".mysql_real_escape_string ($_POST["nachricht"])."',NOW());
");

mysql_query($sql, $db_link);
if(mysql_affected_rows($db_link)== 5)
mysql_query ($sql, $db_link) OR die (mysql_error());
 
Hallo,
ich habe dir mal ein paar Punkte aufgeschrieben:

1. Die mysql-Funktionen sind veraltet, daher solltest du mysqli oder pdo nutzen.
2. Du solltest den Inhalt überprüfen. Beispielsweise durch
RegExp oder andere Funktionen, um SQL-Injections und andere Fehler zu vermeiden.
3. Um den Code übersichtlicher zu machen, würde ich dir empfehlen, dass du die Funktionen, die du in das SQL-Statement geschrieben hast, in Variablen schreibst. Damit du nur das schreiben musst:
(Variablen: $email, $nachricht vor dem $sql definieren)
PHP:
$sql = "INSERT INTO table_name (email, text, datum) VALUES ('$email', '$nachricht', NOW())";
4. Ich verstehe leider nicht was du mit diesem Code bezwecken wolltest:
  • Du legst in $sql das SQL Statement zum Eintragen in die Datenbank fest.
  • Das SQL Statement wird verarbeitet (->Daten werden in die Datenbank eingetragen).
  • Du fragst ab, wie viele Zeilen betroffen sind (->Vom Eintragen).
  • Wenn fünf Zeilen betroffen sind, sollen die Daten nochmal eingetragen werden.
Ich denke, dass das nicht so gewollt war...

Daher solltest du wie folgt vorgehen:
Bevor du die Daten in die Datenbank einträgst, musst du abfragen, wie viele Beiträge mit der E-Mail verfasst wurden.
Das erreichst du durch ein SELECT Statement.
Nachdem diese Abfrage verarbeitet wurde, kannst du mit der Funktion mysqli_num_rows() oder mysqli_affected_rows() die Anzahl der zutreffenden Zeilen ermitteln.
(Ich empfehle dir mysqli_num_rows())
Nun kannst du durch if-Abfragen das weitere Vorgehen planen.
Später kannst du dann mysqli_affected_rows() anwenden, um zu überprüfen, ob dein INSERT INTO Statement verarbeitet wurde.

Ich hoffe ich konnte dir etwas weiterhelfen.

MfG
 
Dem, was dUser aufgezählt hat wäre nur noch hinzuzufügen, dass man Abfragen ala:

PHP:
$sql = "INSERT INTO table_name (email, text, datum) VALUES ('$email', '$nachricht', NOW())";

Heute nicht mehr machen sollte. Besonders wenn man alles Umbaut in richtung mysqli bzw. PDO.
Dann sollte man es gleich richtig machen und sich mit Prepared Statements beschäftigen und diese gleich nutzen.
 
Ich möchte nach den Sternen greifen,denn Gründe gibst dafür genug.

Hallo merzi86,
Danke für deine ausführliche Antwort.
Die Schritte die du aufgeschrieben hast ,wie ich am Anfang
meiner Anwort erwähnt hatte,ich habe vorher alles deklariert.
Datenbankverbindung besteht,vorher hatte ich Error Fehler
eingebaut und mysql_query erstellt,soweit funktioniert alles
sehr gut,auch Datenbankeinträge mt SELECT Anweisung begrenzt
angezeigt.Ich möchte bei INSERT Anweisung die datenbankeinträge
auch begrenzen,es funktioniert nicht wie bei der SELECT Anweisung.
Meine Frage ist,ist es möglich die datenbankeinträge auch mit INSERT
Anweisung zu begrenzen.
 
Zurück