PHP [PHP]Datensätze mit Benutzereingabe vergleichen

tonikln

Lt. Junior Grade
Registriert
Aug. 2005
Beiträge
314
Hallo zusammen,

ich versuche schon seid stunden Datensätze aus einer DB auszulesen und sie dann mit der Benutzereingabe vergleichen. Ich möchte das keine gleiche Datensätze erstellt werden, darum auch die abfrage, komme aber einfach nicht weiter :(

ich hatte es folgendermaßen versucht:
PHP:
if (isset($_POST["kategorieerstellen"])) 
	{	
		$query1 = "select Kategoriename from kategorie where Kategoriename=".$kategorie;
		$result = mysql_query($query1);
		$row = mysql_fetch_row($result);
		if ($kategorie == $result)
		{
			echo "fehler";
		}
		else
		{
			$query = "insert into kategorie (idKategorie, Kategoriename) values(Null, '$kategorie')";

			$result = mysql_query($query);
		
			if (!$result) 
			{
				die('Fehler: ' . mysql_error());
			}
		
			$erfolgreich = 	"<font size=5 color=red>Kategorie erstellt!</font><br>";			
		}
	}

wo die zweite if abfrage ist, hab ich schon mehrere dinge (variable oder $row[0] etc) hingeschrieben, hat aber leider auch nicht geklappt :(

kann mir da vllt jemand helfen?
 
Was macht er denn genau bzw. was klappt nicht ?

Bricht er irgendwo ab, erstellt er den Eintrag doppelt oder wo hängt es ?
 
Ich würde am anfang nicht mit mysql_fetch_row() arbeiten, sondern mit mysql_num_row() und gucken ob der wert > 0 ist.

EDIT:
Oh ja, Czern1 hat da vollkommen recht. Habe ich übersehen, versuch es mal so. Man is noch uz früh für mich ^^
 
Zuletzt bearbeitet:
Der erste query kann meines erachtens so nicht funktionieren richtig wäre das:
PHP:
$query1 = "select Kategoriename from kategorie where Kategoriename='$kategorie'";
Ich nehme an, du hast schon alle variablen auf ihren Inhalt überprüft oder?
 
Danke erstmal für die schnelle antwort.

Also ich hab das problem das der die daten immerwieder einträgt und das will ich nicht.
ich will nur das es immer nur einmal etwas drin steht.

@Czern1:
Danke da hab ich mich leider vertan, aber daran lag es leider nicht :( das problem liegt glaub ich hier:
PHP:
if ($kategorie == $result)

Ich weiß nämlich nicht mit was ich es vergleichen soll :(
Ergänzung ()

Hat sich erledigt ;)

hab es hinbekommen

die lösung ist folgend:
PHP:
$query1 = $query1 = "select Kategoriename from kategorie where Kategoriename='$kategorie'";
		$result = mysql_query($query1);
		$row = mysql_fetch_row($result);
		if ($kategorie == $row[0])
		{
			echo "fehler";
		}
		else

Der SQL Code war erstmal falsch von mir geschrieben und dann in der if anweisung einfach wieder den $row[0] hinschreiben ;)

Danke Leute
 
Zuletzt bearbeitet:
Kann man das Feld "kategoriename" nicht einfach auf unique stellen? Dann wehrt sich mySQL schon gehen den Eintrag.

Also, einfach einfügen, falls beim mysql_query() ein Fehler erfolgt ist die Kategorie dann scheinbar schon vorhanden. Über die mysql Fehlernummer müssten man das sogar konkreter ausgeben können. Ich weiss jetzt nicht welche Fehlernummer "Duplicate key for..." ist...
 
Ich bins nochmal:D

sry aber das muss jetzt leider sein...

wie müsste es aussehen, wenn ich zwei spalten vergleichen will?

ich hab es so gemacht aber klappt leider nicht:

PHP:
			$query1 = $query1 = "select Vorname, Nachname from autor where Vorname='$vorname' and Nachname='$nachname'";
			$result = mysql_query($query1);
			$row = mysql_fetch_row($result);
			if ($vorname && $nachname == $row[0])
			{
				$fehler = "<font size=5 color=red>Fehler: Autor schon vorhanden!</font><br>";
			}
			else
 
PHP:
if ($vorname && $nachname == $row[0])

?!?!

sollte es wenn dann nicht so in der art aussehen:
PHP:
if ($vorname == $row[0] && $nachname == $row[1])

aber abgesehen davon würde ich eh wieder mit mysql_num_rows arbeiten und dann folgendermaßen:

PHP:
if(mysql_num_rows($result) > 0) ...

alleine schon weil mysql groß und kleinschreibung glaube ich nicht unterscheidet. PHP jedoch schon!
 
hmmm
leider klappt das
PHP:
if ($vorname == $row[0] && $nachname == $row[1])
nicht :(

der spuckt mir folgendes an Fehlermeldung aus:

Fatal error: Function name must be a string in ..... modules\autor.php on line 18

aber in dieser zeile habe ich folgendes:

PHP:
$row = $mysql_num_rows($result);



wüsste jetzt nicht was ich da machen soll :(
 
Was AppLeYArD meint ist folgendes:

PHP:
$query = "select Vorname, Nachname from autor where Vorname='$vorname' and Nachname='$nachname'"; 
     $result = mysql_query($query); 
     if(mysql_num_rows($result)>0) // Wenn mehr als 0 Datensätze gefunden wurden
     {
          echo "Solch einen Eintrag gibt es schon!"; 
     } 
     else 
     {
          echo "Solch einen Eintrag gibt es noch nicht.";
      }

Dadurch fällt der Vergleich in PHP weg, da du ja schon via SQL vergleichst, ob es so einen Datensatz schon gibt. mysql_num_rows gibt dir die Anzahl der Datensätze aus, die auf die obige Abfrage zutreffen. Bei 0 Datensätzen wurde demnach nichts gefunden.
 
Zurück
Oben