[gelöst] Doppleter Datenbankeintrag verhindern
am 17.01.2011 - 10:09 Uhr in
Hallo zusammen, habe im Internet schon gesucht, aber leider nicht die passende Lösung gefunden.
Nun hier mein Problem.
Ich habe in Drupal ein Modul erstellt, welches verschiedene Formulare enthält. Zu diesen Formularen gibt es auch eigene Tabellen in der Datenbank. Einige Datenbankfelder sind UNIQUE. Trage ich nun den gleichen Wert noch mal in die Datenbank ein, so erhalte ich eine hässliche Fehlermeldung: user warning: Duplicate entry for ('......').....
Nun würde ich gerne, bevor die Formulardaten in die Datenbank geschrieben werden, prüfen, ob der Eintrag schon vorhanden ist um dann ggf. eine schöne Fehlermeldung auszugeben.
Nun weiß ich aber nicht an welcher Stelle ich diese Abfrage platzieren muss und welche Drupal-Funktion ich dafür verweden muss.
Vielen Dank für eure Hilfe.
Gruß Dani
- Anmelden oder Registrieren um Kommentare zu schreiben
ich nehme mal an, du hast das
am 17.01.2011 - 10:46 Uhr
ich nehme mal an, du hast das Formular mit der Form API gemacht?
Dann machst du dir dafür noch eine Validate-Funktion, prüfst dort mit SQL, ob der Wert existiert und gibst evtl. einen Fehler mit form_set_error aus.
(Hier kannst du auch was zum Thema Form API und Validierung nachlesen: http://drupal.org/node/751826)
<?php
function my_own_form($form_state)
{
//Hier kommt dein Formular-Code
$form['testwert'] = array(
'#type' => 'textfield',
'#title' => 'Mein Test-Feld',
'#size' => 60
'#default_value' => '',
);
}
//Standard-Validate-Funktion:
//Name der Form-Funktion + _validate
function my_own_form_validate($form, &$form_state)
{
//Nur als Beispiel:
$wert = $form_state['values']['testwert'];
$sql = "SELECT COUNT(meine_id) FROM {meine_tabelle} mt WHERE mein_feld LIKE '%s';";
$anzahl = db_result(db_query($sql, $wert));
if ($anzahl != 0)
{
form_set_error('testwert', 'Dieser Wert ist schon vorhanden');
}
}
?>
Vielen Dank
am 17.01.2011 - 13:23 Uhr
Hat mir sehr geholfen.
Gruß Daniel