Meldung nur bei doppelten Eintrag

Apfelwein

Grünschnabel
Hallo nochmal,
bin gerade dabei Php und Mysql zu lernen und habe mich in den letzten Tagen intensiv mit meinem Script beschäftigt, nochmals umgebaut und all eure Tips berücksichtigt. Ich hoffe es findet eure Gnade. Datenbankeinträge und Formular funktioniert astrein. Jetzt habe ich noch ein kleines Problem, wenn ich die Seite aufrufe erscheint immer der Satz "Eine Anmeldung mit der Ausweisnummer: liegt uns bereits vor!" Dieser soll auch erscheinen aber eben nur wenn die Ausweisnummer auch wirklich in der Datenbank vorhanden ist. Wenn die Ausweisummer in der Datenbank vorhanden ist erscheint der Satz so: "Eine Anmeldung mit der Ausweisnummer: xyz12345 liegt uns bereits vor! Also funktioniert die Abfrage. Ich möchte gerne erreichen, dass dieser Satz nur bei einer schon vorhanden Ausweisnummer erscheint. Über einen Tip von Euch würde ich mich sehr freuen, denn im Moment komme ich nicht mehr weiter.
PHP:
    $server = "localhost"; 
    $user="xyz"; 
    $pass = "123456";
    $database = "datenbank";
    $table = "golf";
    
    $verbindung = mysql_connect($server, $user, $pass)  or die ("Keine Verbindung      moeglich");
    
    mysql_select_db($database, $verbindung) or die ("Die Datenbank existiert nicht." .   mysql_error());
     
    
         
         $vorname = $_POST['vorname'];
         $strasse = $_POST['strasse'];
         $plz = $_POST['plz'];
         $ort = $_POST['ort'];
         $hcp = $_POST['hcp'];
         $dgvnummer = $_POST['dgvnummer'];
         $telefon = $_POST['telefon'];
         $email = $_POST['email']; 
    
         $sql =    "SELECT dgvnummer FROM $table WHERE dgvnummer ='$dgvnummer'";
         $res = mysql_query($sql);
         $gefunden = mysql_num_rows($res);  
         
         $sql ="";
         
         if ($gefunden == 0) {
         
         $sql = "INSERT INTO $table (
         name, 
         vorname, 
         strasse, 
         plz, 
         ort,
         hcp, 
         dgvnummer,
         telefon, 
         email) 
         
         VALUES (
        '$name',
        '$vorname',
        '$strasse',
        '$plz',
        '$ort',
        '$hcp',
        '$dgvnummer',
        '$telefon',
        '$email'
        )";
        
        $ausgabe = "Vielen Dank!<br>
                            Sie wurden erfolgreich in die Startliste aufgenommen.";
         }
        
        else    
        
        $ausgabe = 
        "Eine Anmeldung mit der Ausweisnummer: $dgvnummer liegt uns  bereits vor!";
        
        if ($sql != "")
        mysql_query($sql) or die("MySQL Error: ".mysql_error());
          
        mysql_free_result($res);
        mysql_close ($verbindung);
        
        echo $ausgabe;
?>
 
Probiere mal:
PHP:
$server = "localhost";  
    $user="xyz";  
    $pass = "123456"; 
    $database = "datenbank"; 
    $table = "golf"; 
     
    $verbindung = mysql_connect($server, $user, $pass)  or die ("Keine Verbindung      moeglich"); 
     
    mysql_select_db($database, $verbindung) or die ("Die Datenbank existiert nicht." .   mysql_error()); 
      
     
          
         $vorname = $_POST['vorname']; 
         $strasse = $_POST['strasse']; 
         $plz = $_POST['plz']; 
         $ort = $_POST['ort']; 
         $hcp = $_POST['hcp']; 
         $dgvnummer = $_POST['dgvnummer']; 
         $telefon = $_POST['telefon']; 
         $email = $_POST['email'];  
     
         $sql =    "SELECT dgvnummer FROM $table WHERE dgvnummer ='$dgvnummer'"; 
         $res = mysql_query($sql); 
         $gefunden = mysql_num_rows($res);   
          
         $sql =""; 
          
         if ($gefunden == 0) { 
          
         $sql = "INSERT INTO $table if not exists ( 
         name,  
         vorname,  
         strasse,  
         plz,  
         ort, 
         hcp,  
         dgvnummer, 
         telefon,  
         email)  
          
         VALUES ( 
        '$name', 
        '$vorname', 
        '$strasse', 
        '$plz', 
        '$ort', 
        '$hcp', 
        '$dgvnummer', 
        '$telefon', 
        '$email' 
        )"; 
         
        $ausgabe = "Vielen Dank!<br> 
                            Sie wurden erfolgreich in die Startliste aufgenommen."; 
         } 
         
        else     
         
        $ausgabe =  
        "Eine Anmeldung mit der Ausweisnummer: $dgvnummer liegt uns  bereits vor!"; 
         
        if ($sql != "") 
        mysql_query($sql) or die("MySQL Error: ".mysql_error()); 
           
        mysql_free_result($res); 
        mysql_close ($verbindung); 
         
        echo $ausgabe;
Müsste klappen probieren :D

Änderung:
PHP:
$sql = "INSERT INTO $table if not exists (
 
Moin,

eine Else-Anweisung kann nur ohne Klammernpaar benutzt werden, wenn auch nur 1 Ausdruck folgt (scheint bei dir der Fall zu sein) UND dieser direkt dahinter steht.

In deinem Fall also einfach den Ausdruck dahinter verschieben oder eben "{}" drum herum:

PHP:
else {
$ausgabe = 
        "Eine Anmeldung mit der Ausweisnummer: $dgvnummer liegt uns  bereits vor!";
}

edit: grad nochmal geschaut - wir sind hier ja net bei C oder so^^ - dürfte also auch so gehen...entschuldigt bitte mein Vergehen.
 
Zuletzt bearbeitet:
Danke euch beiden für die schnellen Antworten. Funktioniert aber leider nicht. Der ominöse Satz erscheint immer noch.
 
Geh in PHP bei admin, setz den eintrag der nicht doppelt sein darf auf Unique und die abfrage wird dir einen fehler ausgeben.

Diese fehlermeldung lautet dann das der wert bereits vorhanden ist, um diese zu ändern kannst du zB folgendes machan:

PHP:
	if(!$stmt->execute()) {
		if(strpos($verbindung->error, $_POST['dgvnummer']) !== false) {
			$error_msg = "Der Username ".htmlspecialchars($_POST['dgvnummer'])." ist bereits vorhanden!";
		}
}

ungetestet aber sollte klappen

lg
 
hab vergessen smt zu deklarieren, richtig wäre es so:

PHP:
$stmt = $verbindung->prepare($sql);
    if(!$stmt->execute()) {
        if(strpos($verbindung->error, $_POST['dgvnummer']) !== false) {
            $error_msg = "Der Username ".htmlspecialchars($_POST['dgvnummer'])." ist bereits vorhanden!";
        }
}

lg
 
Ich würde sagen, es Zeit, das zu debuggen:

PHP:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);

$server 		= "localhost";
$user				= "xyz";
$pass 			= "123456";
$database 	= "datenbank";
$table 			= "golf";

$verbindung = mysql_connect($server, $user, $pass) 
		or die ("Keine Verbindung moeglich");

mysql_select_db($database, $verbindung)
		or die ("Die Datenbank existiert nicht. " .   mysql_error());
 
$vorname 		= isset($_POST['vorname']) ? mysql_real_escape_string($_POST['vorname']) : '';
$strasse 		= isset($_POST['strasse']) ? mysql_real_escape_string($_POST['strasse']) : '';
$plz 				= isset($_POST['plz']) ? mysql_real_escape_string($_POST['plz']) : '';
$ort 				= isset($_POST['ort']) ? mysql_real_escape_string($_POST['ort']) : '';
$hcp 				= isset($_POST['hcp']) ? mysql_real_escape_string($_POST['hcp']) : '';
$dgvnummer	= isset($_POST['dgvnummer']) ? mysql_real_escape_string($_POST['dgvnummer']) : '';
$telefon		= isset($_POST['telefon']) ? mysql_real_escape_string($_POST['telefon']) : '';
$email 			= isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : '';

// Wo kommt $table hier eigentlich her
$sql				= "SELECT dgvnummer FROM $table WHERE dgvnummer = '$dgvnummer'";
$res 				= mysql_query($sql) or die("Fehler beim Ausführen von Query: <pre>$sql</pre>" . mysql_error());
$gefunden 	= mysql_num_rows($res);

// Eigentlich unsinnig!
$sql = "";
 
if ($gefunden == 0) {
	// Auch hier wieder die Frage: Wo kommt $table her?
	$sql = "INSERT INTO $table (
         name, 
         vorname, 
         strasse, 
         plz, 
         ort,
         hcp, 
         dgvnummer,
         telefon, 
         email) 
         VALUES (
        '$name',
        '$vorname',
        '$strasse',
        '$plz',
        '$ort',
        '$hcp',
        '$dgvnummer',
        '$telefon',
        '$email'
        )";
	
	// Wo wird das SQL hier oben ausgeführt?

	$ausgabe = "Vielen Dank!<br>
                            Sie wurden erfolgreich in die Startliste aufgenommen.";
}
else
	$ausgabe =
        "Eine Anmeldung mit der Ausweisnummer: $dgvnummer liegt uns  bereits vor!";

// Unsinnig, pack das in den if-Codeblock
if ($sql != "")
	mysql_query($sql) or die("MySQL Error: ".mysql_error());

mysql_free_result($res);
mysql_close ($verbindung);

echo $ausgabe;
 
Zurück