Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

wie posts von Leerdatensätzen in DB verhindern?

Empfohlene Antworten

Veröffentlicht

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

WAS steht denn vor deiner Datenbank?

Ich nehme mal an PHP?

Was da steht? Das ist php, richtig

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.

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

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?

schau dir einfach mal meinen Code an und schrieb die if schleife um dein sql query, dann passt es...

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]

wo ist zeile 71?^^

das ist die letzte Zeile (habe ich nicht mitkopiert, da sind nur die Schriftarten etc. festgelegt).

Zeile 71 ist übrigens leer :)

dir fehlt ein "}" für das else würde ich jetzt mal tippen

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.

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

mmh.... nur zu dumm, dass das Eingabeformular ein als *.php abgespeicherter html-file ist ;)

was soll das denn heißen?

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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.