| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

06-10-2002, 13:06
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
for-Schleife, Rand, und MySQL Problem, oder so, lest einfach mal
Hi, also in meinem Script wird per zufall eine Zahl z.B. 1 und 3 gesucht, naja egal.
angenommen in einer MySQL Tabelle sieht es so aus:
ID Name Link
3 Ich www.keine.de
2 du www.wieder-keine.de
5 richard -
So, wie ihr sehen könnt ist id 3 vor id 2, nun das Problem,
per rand wird einfach nicht 3 gezogen, immer nur 2 oder 5, nun meine idee:
geht es irgend wie per insert befehl, das ich dem Code sage, er soll den nächsten Beitrag nach 5 einsetzen?? Wenn ich nämlich einen Eintrag lösche, dann wird der nächste eintrag an die stelle gesetzt, wo der letze beitrag gelöscht wurde.
Also gibt es die möglichkeit dem insert befehl zu sagen, das er nach der id 5 eintragen soll???
Danke für die Hilfe
|

06-10-2002, 13:41
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
ich glaub nicht, mysql füllt die gelöschtenfelden um den overflow wieder wegzukriegen.. wo ist denn dein problem ? order by rand() werden dir die einträge durchgemischt.
|

06-10-2002, 13:54
|
|
bohni
Member
|
|
Registriert seit: Oct 2001
Beiträge: 423
|
|
hast du auch den zufallsgenerator vorher mittels mt_srand() initialisiert, ansonsten werden zufallszahlen immer mit dem selben startwert erzeugt.
ausserdem würde ich lieber statt rand() mt_rand() benutzen, da der bessere zufallszahlen erzeugt.
|

06-10-2002, 13:54
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
Code:
PHP-Code:
srand ((double)microtime()*1000000);
$rand = @rand(1, $count);
$rand = $rand-1;
//Delzone
$query = mysql_query("SELECT * FROM ".$tab."banner ORDER BY id ASC LIMIT $rand,1 ");
$arraygib = mysql_fetch_array($query);
$rand = $arraygib[id];
so das ist der code
$count ist 3, weil 3 einträge in der DB sind. Nun wird aber wiegesagt niemals id 3 aufgerufen, wie würde deine Idee im SCript aussehen???
|

06-10-2002, 13:55
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
hmm, mt_rand, werde ich mal probieren, was macht mt_rand??
|

06-10-2002, 14:11
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
ok das mit mt_rand hab ich jetzt, auch wenn ich den sinn davon nicht ganz verstehe warum der kautz soviele rands programmiert hat  egal, nun habe ich immer noch das link problem (anderer beitrag)
|

06-10-2002, 14:52
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
$query = mysql_query("SELECT * FROM ".$tab."banner ORDER BY RAND() LIMIT 1 ");
dann haste gleich ein zufalls eintrag...
|

06-10-2002, 19:20
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
also so oder
PHP-Code:
$query = mysql_query("SELECT * FROM ".$tab."banner ORDER BY RAND(1, $count) LIMIT 1 ");
|

06-10-2002, 19:26
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
wozu das 1, $count ?
|

06-10-2002, 19:26
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
Nur leider gibt's in MySQL die Funktion RAND(1, $count) in der Syntax nicht ... entweder RAND() oder RAND($count) ... wobei das sehr wenig sinn macht wenn man 'nen zufälligen Datensatz haben will ... weil's dann im allgemeinen mehre Datensätze mit dem gleichen Wert für RAND() gibt!
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

06-10-2002, 22:33
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
das problem ist ja das mit limit, den da fänt eintrag eins mit 0 an. Also muss order by rand($count) seit, aber wenn count 3 ist, wie kommt er dann auf eine zahl, macht der dan zwischen 1-3 oder 0-3????
|

06-10-2002, 23:18
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
$query = mysql_query("SELECT * FROM ".$tab."banner ORDER BY RAND() LIMIT 1 ");
falls es dir noch nicht aufgefallen ist, dieses RAND() hat nicht mit der PHP funktion rand() zu du, das ist eine function aus der Mysql ebene..
geschweige davon, das man keine PHP function so einfach in ner string ausführen kann.
|

07-10-2002, 00:02
|
|
Rob K
Junior Member
|
|
Registriert seit: Oct 2002
Ort: Dresden
Beiträge: 148
|
|
Zitat:
|
$query = mysql_query("SELECT * FROM ".$tab."banner ORDER BY RAND() LIMIT 1 ");
|
genau so geht es!
funzt aber erst ab mysql v 3.23!
siehe auch:
http://www.dclp-faq.de/q/q-mysql-zufall.html
__________________
GNU/LINUX
|

07-10-2002, 00:05
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.242
|
|
@Rob K: Das ist richtig ... aber nur noch sehr schlechte Provider verwenden MySQL Versionen < 3.23 ...
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
http://www.mysqldiff.org
|

07-10-2002, 10:24
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|