|
 |
|
| Autor |
Nachricht |
Malli User [User]


Anmeldung: 03.02.08 Beiträge: 19 Wohnort: Berlin
|
Verfasst am: 14.07.2008, 03:36 Titel: Zufall in php...ich seh nicht durch... |
|
|
Da mir bei meiner letzten Frage so fix und sehr gut geholfen wurde, hoffe ich dass ich nochmals eine kleine Hilfestellung bekommen könnte.
Undzwar geht es diesmal um das Zufällige aufrufen von Daten aus der Datenbank.
ich weiß zwar dass man das mit "rand" macht, aber in diesem Beispiel habe ich leider keine Ahnung wo ich das Anwenden sollte.
hier mal meine PHP-Code:
| Code: |
if(!$epp) $epp=20;
if ($_REQUEST['entries']) $entries=intval($_REQUEST['entries']); else $entries=0;
if ($_REQUEST['sort'] != '') { $sort = addslashes($_REQUEST['sort']);}
if ($_REQUEST['styp'] != '') { $styp = addslashes($_REQUEST['styp']);}
if ($_REQUEST['fmod'] != '') { $fmod = addslashes($_REQUEST['fmod']);}
if ($_REQUEST['fsub'] != '') { $fsub = intval($_REQUEST['fsub']);}
if ($_REQUEST['faut'] != '') { $faut = intval($_REQUEST['faut']);}
if ($_REQUEST['fcat'] != '') { $fcat = addslashes($_REQUEST['fcat']);}
if ($_REQUEST['fmim'] != '') { $fmim = addslashes($_REQUEST['fmim']);}
if(!$styp) $styp = 'desc';
if($sort) $order = 'order by '.$sort.' '.$styp;
else $order = 'order by media_timestamp '.$styp;
if($fmod) $filter .= " and media_class = '$fmod'";
if($faut) $filter .= " and media_user_id = '$faut'";
if($fcat) $filter .= " and media_cat = '$fcat'";
if($fmim) $filter .= " and media_mime = '$fmim'";
if($fsub) $filter .= " and media_sub_id = '$fsub'";
$filter = " where media_class!='submit' AND media_user_id = user_id $filter AND (media_rights='' OR ".sqlrights($db_tab['media'].'.media_rights').')';
$counter=$DB->fetch_array($DB->query("SELECT COUNT(*) FROM ".$db_tab['media'].",".$db_tab['user']." $filter"));
$counter_size=$DB->fetch_array($DB->query("select sum(media_size) FROM ".$db_tab['media'].",".$db_tab['user']." $filter"));
$total_files = $counter[0];
$total_size = number_format($counter_size[0]/1024,2,",",".");
$min=$DB->fetch_array($DB->query("SELECT min(media_timestamp) FROM ".$db_tab['media'].",".$db_tab['user']." $filter"));
$media_per_day=number_format(($total_files/(ceil((time()-$min[0])/86400))),1,",",".");
if ($entries>$counter[0]) $entries=0;
$total_side=sidelinkfull($counter[0], $epp, $entries, "$scrlink&sort=$sort&fmod=$mod&faut=$faut&fcat=$fcat&styp=$styp","small");
$SQL = "SELECT *
FROM ".$db_tab['media'].",".$db_tab['user']."
$filter
$order
LIMIT $entries,$epp";
if($styp == 'desc') $styp = 'asc';
else $styp = 'desc';
$get_hist=$DB->query($SQL);
while ($list=$DB->fetch_array($get_hist)) {
$row=rowcolor($row);
$id = $list['media_id'];
$timestamp = date($config['mcp_history_date'],$list['media_timestamp']);
$media_type = strtoupper(substr($list['media_class'],0,1));
$media_title = cutstring(htmlentities($list['media_title']),20);
$media_mime = cutstring($list['media_mime'],10);
|
Sorry, ich wollte es der Übersichtlichkeit eigentlich verweiden soviel Code hier zu posten, aber ich hoffe Ihr könnt mir dennoch helfen...
Vielen Dank schonmal...
(PS: In diesem Beispiel wird der Conent nach Datum sortiert und nichtmal da weiß ich wie das zu stande kommt *schäm* )
|
|
| Nach oben |
|
 |
JFM Beliebter [User]


Anmeldung: 25.09.05 Beiträge: 321 Wohnort: Gütersloh
|
Verfasst am: 14.07.2008, 10:10 Titel: |
|
|
Ich glaube (ohne es genau zu wissen) :
Mein PHP ist immo etwas eingetrocknet, weil ich mich mit anderen Sachen beschäftige und mit dem Lesen von fremden Quelltexten tu ich mir auch immer etwas schwer, also schreibe ich das mal unter vorbehalt. Wenn es blödsinn ist, wird mich 800xe sicher bald berichtigen
Der "Rand()-befehl" wird etwa so eingesetzt:
ORDER BY rand() LIMIT 1
Das bedeutet das deine Ausgabe zufällig sortiert wird und dabei nur der erste Eintrag ausgegeben wird.
Also müsstes du bei deinem Beispiel folgendes ändern:
original:
| Code: | $SQL = "SELECT *
FROM ".$db_tab['media'].",".$db_tab['user']."
$filter
$order
LIMIT $entries,$epp";
|
Geändert:
| Code: | $SQL = "SELECT *
FROM ".$db_tab['media'].",".$db_tab['user']."
$filter
ORDER BY rand() LIMIT 0,1
LIMIT $entries,$epp";
|
Problem stellt hier aber da, das deine Abfrage Dynamisch erstellt wird, dh. der User hat offenbar die Möglichkeit die Sortierung frei zu wählen, das würde dann zumindest für die Sortierung weg fallen.[/code] _________________
http://www.FCG-Frauen.de
JFM:Blog
'Was zum Töten animiert, gehört verboten' (Edmund K.)
War Ede nicht derjenige, der Bruno hat erschießen lassen?
|
|
| Nach oben |
|
 |
800XE Bekannter [Mod]


Anmeldung: 24.10.04 Beiträge: 1220 Wohnort: Speyer
|
Verfasst am: 14.07.2008, 12:14 Titel: |
|
|
| JFM hat folgendes geschrieben: | Ich glaube (ohne es genau zu wissen) :
Mein PHP ist immo etwas eingetrocknet, weil ich mich mit anderen Sachen beschäftige und mit dem Lesen von fremden Quelltexten tu ich mir auch immer etwas schwer, also schreibe ich das mal unter vorbehalt. Wenn es blödsinn ist, wird mich 800xe sicher bald berichtigen
Der "Rand()-befehl" wird etwa so eingesetzt:
ORDER BY rand() LIMIT 1[/code] |
Ich hab den Code oben jetzt garnicht erst gelesen
und will JFM hier auch nicht berichtigen
vor Wochen war mir noch neu das SQL einen eigenen Würfelbescher hat
und vom Gefühl her, bin ich auch gegen SQLabfragen mit Rufall drin, die sollten konkret sein = der Zufall Konkret fest eingebaut
| Code: |
$so_mutch_i_have = ....
// irgendwoher kommt die INfo wieviele Datensätze es gibt
$givThis = mt_rand( 1, $so_mutch_i_have );
$query = '';
$query.= ' SELECT ...';
$query.= ' LIMIT ' . $givThis . ' ,1 ';
$result= mysql_query( $query );
|
so tät ich das machen
SQL = Structured Query Langwitch
not
Spiel Quitung Lasvegas
aber
Applicationen in LasVegas dürfen natürlich auch mit SQL arbeiten
Gruß
Andy 800XE Zmuda
PS
bei ORDER BY RAND() LIMIT 0,1
da wird doch nicht etwa wirklich am Ende(also, am Anfang) erstmal alles durchgewürfelt(durchgemischt)
SQL wird sicherlich so schlau seinund einfach "einen von allen" nehmen, ohne erstmal alle zu mischen ....
... aber der Befehl selbst, der sugeriert das unnötige Arbeit gemacht werden soll
@JFM
bitte verstehe mein gschreibsel nicht als Kritik, ich philosophiere nur über sein und nicht sein, anschein haben, beser sein tun(=es beser tun, oder es beser aussehen lassen, nicht so aussehen lassen das es aussieht als wäre es schlecht)
PS2(nicht die SPielKonsole)
bin kein Politiker
bin angaschiert von der Pharmaindustrie ... Projekt "duplicate the Kopfwehtablette-Umsatz" _________________
Seien wir realistisch, versuchen wir das Unmögliche!
CMS800 :::::::::: Andy 800XE Zmuda :::::::::
ich bin nicht unhöflich, ich bin binär
|
|
| Nach oben |
|
 |
Malli User [User]


Anmeldung: 03.02.08 Beiträge: 19 Wohnort: Berlin
|
Verfasst am: 14.07.2008, 19:32 Titel: |
|
|
Vielen lieben Dank JFM. Werd ich direkt mal ausprobieren..
| JFM hat folgendes geschrieben: |
Problem stellt hier aber da, das deine Abfrage Dynamisch erstellt wird, dh. der User hat offenbar die Möglichkeit die Sortierung frei zu wählen, das würde dann zumindest für die Sortierung weg fallen.[/code] |
Hast du genau richtig erkannt, aber da wirklich nur zufällig etwas angezeigt werden sollm benötige ich ja die sortierungsfunktion nicht mehr.
|
|
| Nach oben |
|
 |
Malli User [User]


Anmeldung: 03.02.08 Beiträge: 19 Wohnort: Berlin
|
Verfasst am: 14.07.2008, 19:46 Titel: |
|
|
Sorry, für den Doppelpost, aber an dieser Stelle wirklich mal vielen Dank für die super geniale Hilfe hier im Forum und natürlich an JFM. Ich könnte Luftsprünge machen, es funktioniert Tadellos. Viiiielen DANK!! 
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde
|
| Seite 1 von 1 |
|  |