Zum Inhalt springen

wie posts von Leerdatensätzen in DB verhindern?


interocitor

Empfohlene Beiträge

Hallo,

manche user machen es sich anscheinend zum Hobby, leere Datensätze an meine SQL Datenbank zu schicken. Die müssen dann alle per Hand via mysql gelöscht werden.

Gibt es eine Möglichkeit einzustellen, dass bestimmte Felder in der Eingabemaske ausgefüllt werden MÜSSEN? Es soll eine Fehlermeldung erscheinen, wenn eines dieser Felder leer bleibt.

DANKE für Hilfe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es eine Möglichkeit einzustellen, dass bestimmte Felder in der Eingabemaske ausgefüllt werden MÜSSEN?

Du könntest beim anlegen der Tabelle angeben, welche Felder ausgefüllt sein müssen. Beispiel:

CREATE TABLE T_Benutzer (

  ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

  Vorname VARCHAR(50) NOT NULL,

  Nachname VARCHAR(50) NOT NULL,

  Herkunftsland VARCHAR(50) NULL,

  PRIMARY KEY(ID),

  ) ENGINE=INNODB;

Die Felder Name und Vorname dürfen bzw. können jetzt bei einem neuen Datensatz nicht leer sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jo aber dann kommt nur ne hässlige SQL Exception, wenn mich nciht alles täuscht. Du solltest es am besten mit PHP Code verhindern.

Ich habe es in meinem Gästebuch damals so gemacht:


if(isset($_POST['gbeintrag_write'])) //wenn der Button der Form gedückt wurde
{
$gbE = $_POST['gbeintrag']; //Text des Eintrages
$gbE = trim($gbE); //trim zieht die Leerzeichen ab

$gbU = $_POST['gbUeberschrift'];
$gbU = trim($gbU); //s.o

if ($gbE == "" OR $gbU == "") //ne Fehlermeldung wenn es vorkommt
{
$meldung = "Bitte alle Felder füllen!";
}
else
{
//SQL Query zum einfügen des gbEintrags mit neuladen der Seite
mysql_query ('INSERT INTO gbook (F_ID_user, Ueberschrift, gbooktext, Datum, Uhrzeit)
VALUES ('.$userid['P_id_user'].',"'.mysql_real_escape_string($gbU).'","'.mysql_real_escape_string
($gbE).'","'.$datum.'","'.$uhrzeit.'")');
header("Location: ../src/gbook.php");
}

}

[/PHP]

Ich hoffe es hilftdir etwas

Link zu diesem Kommentar
Auf anderen Seiten teilen

und wie wird es bei html gemacht? sehe gerade, dass es sich ursprünglich um eine html Datei handelt, die nur als *.php gespeichert wird.

hab das ganze mal mit frontpage geöffnet, aber keine Funktion gefunden, wie man eine Eingabe in ein bestimmtes Feld erzwingen kann...

Ich habe auch noch die submit.php, die so aussiet:

<?

include("dbconnect.php");

$dienst = $_POST["dienst"];

$freq = $_POST["freq"];

$station = $_POST["station"];

$itu = $_POST["itu"];

$lang = $_POST["D1"];

$date = $_POST["T1"];

$time = $_POST["time"];

$sonstiges = $_POST["sonstiges"];

$receiver = $_POST["receiver"];

$antenna = $_POST["antenna"];

$qth = $_POST["qth"];

$SINPO = $_POST["SINPO"];

$betriebsart = $_POST["betriebsart"];

$user = $_POST["user"];

$empfangsland = $_POST["empfangsland"];

$datum = explode(".",$date);

$date = $datum[2]."-".$datum[1]."-".$datum[0];

$eintragen = mysql_query("INSERT INTO qrgdb (freq, station, itu, lang, date, time, sonstiges, receiver, antenna, qth, SINPO, betriebsart, user,empfangsland, dienst) VALUES ('$freq','$station','$itu','$lang','$date','$time','$sonstiges','$receiver','$antenna','$qth','$SINPO','$betriebsart','$user','$empfangsland','$dienst')");

?>

<font face="Arial" color="#C0C0C0">

<b><i>Your data has been posted successfully to our database.<br>

Thank you very much for your support.</i><br>

</b>Ihre Daten wurden erfolgreich an die Datenbank übermittelt.<br>

Vielen Dank für Ihre Unterstützung.<br>

 </font><p>

<font color="#C0C0C0" face="Arial"><i><b><a href="index.php">

<font color="#C0C0C0">Enter new data</font></a></b></i><br>

<a href="index.php"><font color="#C0C0C0">Neuen Datensatz

eingeben</font></a><br>

<br>

<i><b><a href="suche.php"><font color="#C0C0C0">Start new search</font></a></b></i><br>

<a href="suche.php"><font color="#C0C0C0">Neue Suche starten</font></a></font></p>

<hr color="#C0C0C0" size="1">

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<p> </p>

<font face="Arial" color="#C0C0C0">

<b><i>Your data has been posted successfully to our database.<br>

Thank you very much for your support.</i><br>

</b>Ihre Daten wurden erfolgreich an die Datenbank übermittelt.<br>

Vielen Dank für Ihre Unterstützung.<br>

 </font><p>

<font color="#C0C0C0" face="Arial"><i><b><a href="index.php">

<font color="#C0C0C0">Enter new data</font></a></b></i><br>

<a href="index.php"><font color="#C0C0C0">Neuen Datensatz

eingeben</font></a><br>

<br>

<i><b><a href="suche.php"><font color="#C0C0C0">Start new search</font></a></b></i><br>

<a href="suche.php"><font color="#C0C0C0">Neue Suche starten</font></a></font></p>

<hr color="#C0C0C0" size="1">

Kann das nicht da festgelegt werden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

jo, vielen Dank. hab deinen Eintrag erst gesehen, als ich neu gepostet hatte.

habe das jetzt nur auf zwei Felder angewendet, also das "OR" belassen.

bekomme allerdings diese Fehlermeldung

arse error: syntax error, unexpected $end in /home5/www/b32/geoo/test3/submit.php on line 71

wenn ich meine PHP Datei so habe:

<?
include("dbconnect.php");

$dienst = $_POST["dienst"];
$freq = $_POST["freq"];
$station = $_POST["station"];
$itu = $_POST["itu"];
$lang = $_POST["D1"];
$date = $_POST["T1"];
$time = $_POST["time"];
$sonstiges = $_POST["sonstiges"];
$receiver = $_POST["receiver"];
$antenna = $_POST["antenna"];
$qth = $_POST["qth"];
$SINPO = $_POST["SINPO"];
$betriebsart = $_POST["betriebsart"];
$user = $_POST["user"];
$empfangsland = $_POST["empfangsland"];

$datum = explode(".",$date);
$date = $datum[2]."-".$datum[1]."-".$datum[0];

if ($freq == "" OR $user == "") //ne Fehlermeldung wenn es vorkommt
{
$meldung = "Bitte alle Felder füllen!";
}
else
{

$eintragen = mysql_query("INSERT INTO qrgdb (freq, station, itu, lang, date, time, sonstiges, receiver, antenna, qth, SINPO, betriebsart, user,empfangsland, dienst) VALUES ('$freq','$station','$itu','$lang','$date','$time','$sonstiges','$receiver','$antenna','$qth','$SINPO','$betriebsart','$user','$empfangsland','$dienst')");
?>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du solltest es am besten mit PHP Code verhindern.

Ich habe es in meinem Gästebuch damals so gemacht:

Am allerbesten solltest du das (ohne dass du den PHP-Teil wegläßt) per Javascript vor dem Absenden des Formulars prüfen lassen. Dann muss das Formular nicht erst an den Server gesendet werden, um dann wieder zurück zum Client zu kommen, mit der Meldung, dass da ein Fehler in den Daten ist.

Das ging glaub ich so:


...
<form name="NeuerEintrag" action="some/url.php"
onsubmit="return(checkForm());">
...
</form>
...
[/php]

wobei checkForm eine Funktion ist, die True oder False zurückgibt.Bei False wird kein Submit ausgeführt und du musst halt eine Meldung anzeigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am allerbesten solltest du das (ohne dass du den PHP-Teil wegläßt) per Javascript vor dem Absenden des Formulars prüfen lassen. Dann muss das Formular nicht erst an den Server gesendet werden, um dann wieder zurück zum Client zu kommen, mit der Meldung, dass da ein Fehler in den Daten ist.

Das ging glaub ich so:


...
<form name="NeuerEintrag" action="some/url.php"
onsubmit="return(checkForm());">
...
</form>
...
[/php]

wobei checkForm eine Funktion ist, die True oder False zurückgibt.Bei False wird kein Submit ausgeführt und du musst halt eine Meldung anzeigen.

Sehr gute Idee.... Erspart dir traffic und Zeit wenn du nen kostenlosen DB Anbieter hast.

:uli

Link zu diesem Kommentar
Auf anderen Seiten teilen

sorry, dachte wir sprechen von einer anderen Datei.

Bzgl. dieses codes hier:

...

<form name="NeuerEintrag" action="some/url.php"

onsubmit="return(checkForm());">

...

</form>

...

wie muss ich den in die Seite einbauen?

<?

include("dbconnect.php");

$dienst = $_POST["dienst"];

$freq = $_POST["freq"];

$station = $_POST["station"];

$itu = $_POST["itu"];

$lang = $_POST["D1"];

$date = $_POST["T1"];

$time = $_POST["time"];

$sonstiges = $_POST["sonstiges"];

$receiver = $_POST["receiver"];

$antenna = $_POST["antenna"];

$qth = $_POST["qth"];

$SINPO = $_POST["SINPO"];

$betriebsart = $_POST["betriebsart"];

$user = $_POST["user"];

$empfangsland = $_POST["empfangsland"];

$datum = explode(".",$date);

$date = $datum[2]."-".$datum[1]."-".$datum[0];

$eintragen = mysql_query("INSERT INTO qrgdb (freq, station, itu, lang, date, time, sonstiges, receiver, antenna, qth, SINPO, betriebsart, user,empfangsland, dienst) VALUES ('$freq','$station','$itu','$lang','$date','$time','$sonstiges','$receiver','$antenna','$qth','$SINPO','$betriebsart','$user','$empfangsland','$dienst')");

?>

und durch was muss dieses "some/url.php" ersetzt werden, bzw. wofür steht es?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...