bei Einfügen nach doppelten Datensätzen suchen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von leopittoni »

Hallo!

Wie kann ich allgemein, wenn ich mit PHP einen Datensatz einfüge, zuerst überprüfen, ob es diesen bereits gibt?
Also:
zufallszahl = x
gibt es schon einen Datensatz mit zahl=x?

ja -> neuanfang!
nein -> daten einfügen -> Ende
Danke, Léo
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von PhilippK »

In dem du ein SELECT auf die Datenbank machst und prüfst, ob du ein Ergebnis erhältst.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von leopittoni »

Code: Alles auswählen

	function passgen($length) {
		$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
		$str = str_shuffle($str);
		$password = substr($str, 0, $length);
	return $password;
}

$forum_code = passgen(10);

$sql = "SELECT forum_id
		FROM FORUMS_TABLE
		WHERE forum_passwort = $forum_code"; 

	if( !$result = $db->sql_query($sql) )
	{
	}
	else
	{
$forum_code = passgen(10);
}
So wärs theoretisch ok, nur muss ich da irgendwie eine Schlaufe reinbringen... Der neue Code (unwahrscheinlich aber trotzdem) muss auch wieder überprüft werden, ob er bereits exisitert...

Danke, Léo
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von Miriam »

Was möchtest Du denn genau machen?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von leopittoni »

Per PHP einen zufallscode in die DB einfügen.

Der Code wird so generiert:

Code: Alles auswählen

 function passgen($length) {
      $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
      $str = str_shuffle($str);
      $password = substr($str, 0, $length);
   return $password;
}

$forum_code = passgen(10);
Ein Code darf nicht doppelt in der DB vorkommen, deshalb sollte vor dem Einfügen in die DB nach bereits vorhanden Datensätzen mit demselben Code gesucht werden. Gibt es diese schon, muss das ganze Script von vorne beginnen: Neuer Code erzeugt-> dieser wieder überprüfen.

Danke für die Hilfe!

Léo
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von Miriam »

So vllt?

Code: Alles auswählen

function passgen($length) 
{
	$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	$str = str_shuffle($str);
	$password = substr($str, 0, $length);
	return $password;
}

do 
{
	$forum_code = passgen(10);
	$sql = "SELECT forum_id
			FROM FORUMS_TABLE
			WHERE forum_passwort = $forum_code";
}
while ($result = $db->sql_query($sql));
//
// hier kommt das Einfügen des $forum_code
//
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von PhilippK »

Sofern die Voraussetzungen passen, gibt es dann natürlich noch einen anderen Weg:
Das Feld in der Datenbank als UNIQUE markieren. Dann einfach den Datensatz einfügen und prüfen, ob der Vorgang erfolgreich war. Wenn nicht, musst du eine neue ID erstellen.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von Boecki91 »

Bei den Foren mag das zwar noch nicht ganz so Wild sein, aber je mehr Einträge in der DB sind, desto mehr Abfragen gibt es, wobei bei 3656158440062976 theoretischen (36 hoch 10) Möglichkeiten es sehr viele Foren braucht um das zu erreichen, aber fals das jemand mit weniger Stellen aber mehr Einträgen plant sollte er das bedenken, vielleicht eine maximale Suchabfragen Anzahl festlegen und die Anzahl der Stellen beim Misslingen erhöhen.
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Benutzeravatar
leopittoni
Mitglied
Beiträge: 1162
Registriert: 26.04.2004 20:17

Re: bei Einfügen nach doppelten Datensätzen suchen?

Beitrag von leopittoni »

Code: Alles auswählen

	
function passgen($length) {
		$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
		$str = str_shuffle($str);
		$password = substr($str, 0, $length);
return $password;
}


//10 stelliger Zufallscode erzeugen
$forum_code = passgen(10);

//Gibt es den Coder bereits?
$sql = mysql_query("SELECT forum_id
		FROM support_codes
		WHERE forum_code = '$forum_code'"); 

$result = mysql_fetch_array($sql);

//Solange es den Code bereits gibt, immer einen neuen erzeugen
	if($result)
	{
	while ($result) 
		{
		$forum_code = passgen(10);
		//Gibt es den Coder bereits?
		$sql = mysql_query("SELECT forum_id
		FROM support_codes
		WHERE forum_code = '$forum_code'"); 

		$result = mysql_fetch_array($sql);
		}
	}
	
$sql = "INSERT INTO support_codes (forum_id, forum_code)
				VALUES ('".$forum_identify."', '".$forum_code."')";
Ich habe das nun so etwas zusammengebastelt. Ist das dasselbe wir Miriam's Lösung, nur etwas komplizierter?

Und ja: es wird relativ viele Datensätze geben. Ich möchte bei der Überprüfung nicht den Server in die Knie zwingen, gibts da eine schonendere Lösung?

Danke, Léo
Antworten

Zurück zu „Coding & Technik“