Seite 1 von 2
zufallszahlen als mysql id
Verfasst: 05.06.2005, 10:50
von Litronic
hallo
für meine mysql einträge brauch ich statt normalen auto_increment zufallszahlen, ich muss zuerst zufallszahlen generieren und dann überprüfen ob die nicht schon vergeben ist, ich wollte das so lösen
Code: Alles auswählen
while($dop_id_count == '0') //Überprüfen ob ID nicht schon vergeben worden ist
{
$takid = rand(1,200000);
$dop_get_count_query = mysql_query("SELECT COUNT(AktZaehler) FROM $tak_tab WHERE AktZaehler = $takid");
$dop_get_count = mysql_fetch_array($dop_get_count_query);
$dop_id_count = $dop_get_count[0];
echo "IDCheck: $dop_id_count <br>";
}
ich erstelle nämlich eine zufallszahl und schau ob die schon vergeben ist wenn bei $dop_obj_count = 0 dann gibt es diese zahl noch nicht, aber leider funktioniert das nicht mit der while schleife so wie ich das will,
vielleicht kann mir ja jemand helfen bin auch offen für neue vorschläge wie ich es überprüfen soll
zufallszahlen als mysql id
Verfasst: 05.06.2005, 14:30
von Outman
Hallo,
hier der Code:
Code: Alles auswählen
<?
if($dop_id_count == '0'){
$takid = rand(1,200000);
$sql="SELECT COUNT(AktZaehler) FROM $tak_tab WHERE AktZaehler LIKE '%".mysql_escape_string($takid)."%' LIMIT 1";
$dop_get_count_query = mysql_query($sql) or die(mysql_error() . '<BR><i>' . $sql . '</i>');
$anz='0';
$anz=mysql_num_rows($dop_get_count_query);
}
if($anz=='1')
echo "IDCheck: $takid ist schon vergeben.<br>";
} else {
echo "IDCheck: $takid ist noch frei<br>";
}
?>
Edit: Habe eben nochmal ein kleines Update am Code gemacht.
mfg. Nico
zufallszahlen als mysql id
Verfasst: 05.06.2005, 14:34
von derHund
entschuldige bitte, aber das ist total krank
was möchtest du machen? warum muß es eine zufallszahl sein? was stört dich an autoinc?
mein vorschlag: verwende autoincrment ganz normal und jag, um die zufalls
zahl zu bekommen, noch md5 drüber.
Re: zufallszahlen als mysql id
Verfasst: 05.06.2005, 14:38
von Outman
derHund hat geschrieben:entschuldige bitte, aber das ist total krank
was möchtest du machen? warum muß es eine zufallszahl sein? was stört dich an autoinc?
mein vorschlag: verwende autoincrment ganz normal und jag, um die zufalls
zahl zu bekommen, noch md5 drüber.
Hallo,
ist md5 eine zufalls
zahl?
mfg. Nico
zufallszahlen als mysql id
Verfasst: 05.06.2005, 14:49
von moviemazler
Hi,
wieso denn unbedingt Zufallszahlen? Und warum eindeutig?
Wenn Du eindeutige Einträge brauchst, dann nimm den aktuellen Zeitstempel und dann nen md5 drüber... das ist mal definitiv eindeutig...
Ich glaube, wenn Du uns nicht erklärst, was Du konkret damit bezwecken willst, macht es wenig Sinn.
Gruß Markus
zufallszahlen als mysql id
Verfasst: 05.06.2005, 16:04
von Litronic
ich muss für jemanden was programmieren und da hat der vorige programmierer die db mit zufallszahlen als id gefüllt ich weis auch net warum mir wär auto_increment auch lieber
@Outman
ich brauch aber ne schleife das er ne id raussucht die es noch nicht gibt
zufallszahlen als mysql id
Verfasst: 05.06.2005, 16:09
von Airport1
> da hat der vorige programmierer die db mit zufallszahlen als id gefüllt
Herje, und sowas sind die "Programmierer" von morgen. Nein danke

PHP verleitet wirklich zum Kruschteln, Frickeln und Vorgehen nach dem Try & Error "Prozessmodell"

Re: zufallszahlen als mysql id
Verfasst: 05.06.2005, 16:22
von Outman
Litronic hat geschrieben:ich muss für jemanden was programmieren und da hat der vorige programmierer die db mit zufallszahlen als id gefüllt ich weis auch net warum mir wär auto_increment auch lieber
@Outman
ich brauch aber ne schleife das er ne id raussucht die es noch nicht gibt
Hallo,
für was brauchst Du eine Schleife wenn Du nur einen Datensatz holst ?
Du musst nur einen Verbindungs Parameter angeben bei mysql_query();
z.b.:
Code: Alles auswählen
<?php
$dbname = "";
$dbhost = "";
$dbuser = "";
$dbpwd = "";
$db = @mysql_connect($dbhost, $dbuser, $dbpwd);
@mysql_select_db($dbname, $db) or die ("Keine Verbindung zur MySQL Datenbank");
if($dop_id_count == '0'){
$takid = rand(1,200000);
$sql="SELECT COUNT(AktZaehler) FROM $tak_tab WHERE AktZaehler LIKE '%".mysql_escape_string($takid)."%' LIMIT 1";
$dop_get_count_query = mysql_query($sql, $db) or die(mysql_error() . '<BR><i>' . $sql . '</i>');
$anz='0';
$anz=mysql_num_rows($dop_get_count_query);
}
if($anz=='1')
echo "IDCheck: $takid ist schon vergeben.<br>";
} else {
echo "IDCheck: $takid ist noch frei<br>";
}
?>
mfg. Nico
zufallszahlen als mysql id
Verfasst: 05.06.2005, 17:19
von Litronic
wenn jetzt die id schon vergeben ist will ich das er nochmal mit einer neuen id überprüft ob die schon vergeben ist usw. bis er eine id gefunden hat die noch nicht vergeben wurde
Re: zufallszahlen als mysql id
Verfasst: 05.06.2005, 17:29
von Outman
Litronic hat geschrieben:wenn jetzt die id schon vergeben ist will ich das er nochmal mit einer neuen id überprüft ob die schon vergeben ist usw. bis er eine id gefunden hat die noch nicht vergeben wurde
Hallo,
das musst Du schon selber schreiben, das was ich gemacht habe sollte ein Denkansatz sein. Aber ich schreibe Dir nicht das gesamte Script!
mfg. Nico
zufallszahlen als mysql id
Verfasst: 05.06.2005, 17:45
von Litronic
sorry aber ich suche genau wegen der schleife, denn ob id schon vorhanden ist oder nicht funktioniert mit meinem programmcode auch, aber ich habe es nicht hinbekommen diesen code in eine schleife einzubauen
mfg daniel
zufallszahlen als mysql id
Verfasst: 05.06.2005, 18:12
von Metaman
sorry aber das ist wirklich mehr als Krank....
wenn sich dein Vorgänger aufhängt machst du es auch????
Erkläre dem jenigen für den das Script sein soll einfach warum sowas mit zufallszahlen blödsinn wäre, und weiße den jetzigen Datensätzen einfach eine neue eindeutige ID zu.
denn so eine schleife wie Du sie haben willst, kann sehr schnell nach hinten losgehen..
denn je mehr Datensätze du in der DB hast desto größer die Warscheinlichkeit das die erstellte Zufallszahl schon vorhanden ist...
aber so eine schleife ist eigentlich kein Problem.
$x=1;
while($x != 2){
zufallszahl erstellen
abfrage DB select * from tabelle where id=zufallszahl.
menge der Datensätze mit mysql_num_rows() ermitteln
schleife if menge datesätze <1
wenn ja $x=2;
}
das ganze läuft dann solange bis eine Zahl gefunden wir die nicht in der DB steht,
oder bis der Server das Script beendet oder zusammenbricht
zufallszahlen als mysql id
Verfasst: 05.06.2005, 21:52
von Litronic
thx metaman es funktioniert, für den ich es machen soll der will es auch mit zufallszahlen weis auch nicht warum aber es ist so
zufallszahlen als mysql id
Verfasst: 05.06.2005, 22:03
von Metaman
ist trotzdem scheiße.....
wenn er es mit zufallszahlen will, dann doch eigentlich nur aus dem Grund das er eine "zufällige " Sortierung der Einträge wünscht...
und wenn es das alleine ist, dann braucht man dazu keine Zufallszahlen sondern lediglich eine eine sql select Abfrage mit einem order by rand()
oder er möchte keine fortlaufenden Nummern, weil er angst hat das man die inhalte seiner DB über ein Script abgrast....
nur dann nützen ihm die Zufallszahlen auch nichts...
würde mich wirklich mal interessieren welche Gründe es für diese Zufallszahlen geben sollte....
zufallszahlen als mysql id
Verfasst: 06.06.2005, 11:50
von Litronic
er hat das glaub ich so begründet das Access Zufallszahlen als id vergibt nun will er das hier auch Zufallszahlen vergeben werden