php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.04.2006, 00:35  
Neuer Benutzer
 
Registriert seit: 15.04.2006
Beiträge: 15
thokon89
Standard Bannerrotation mehrerer Pics, Prob: manchmal gleiches pic

also, ich habe ne bannerrotation geschrieben, bloß kommt es vor, da ich 3pics auf einmal anzeigen lassen will, dass es das gleiche 2mal anzeigt oder manchmal gar 3 mal

bitte helfen... THX

Code:
<?php
$allbanner = safe_query("SELECT * FROM ".PREFIX."links");
$total = mysql_num_rows($allbanner);
if($total) {
	$end = round(rand(1, $total));
	$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
	
	echo '[img]./images/links/'.$banner['banner'].'[/img]
';
} else echo 'Keine Links vorhanden.';
unset($banner);

if($total) {
	$end = round(rand(1, $total));
	$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
	
	echo '<img src'.$banner['url'].'" border="0" alt="'.$banner['name'].'">
';
} else echo 'Keine Links vorhanden.';
unset($banner);

if($total) {
	$end = round(rand(1, $total));
	$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
	
	echo '[img]./images/links/'.$banner['banner'].'[/img]';
} else echo 'Keine Links vorhanden.';
unset($banner);
?>
thokon89 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.04.2006, 00:49  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

Warum liest du nicht auf einmal 3 Zeilen aus, die mit RAND vorher gemixt wurden?
Code:
SELECT linkID, banner, name FROM ".PREFIX."links LIMIT 3 ORDER BY RAND()
das ganze dann mit
Code:
$result = mysql_query(...);
while($banner = mysql_fetch_assoc($result)) {

..

}
auslesen.
Buhmann ist offline  
Alt 18.04.2006, 00:50  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Du musst eben solange überprüfen (do-while oder while-Schleife), ob deine Zufallszahl schon gezogen wurde, bis alle 3 nicht die selben sind.

Edit: oder so wie Buhmann, ist sogar viel besser.
Zergling-new ist offline  
Alt 18.04.2006, 01:00  
Neuer Benutzer
 
Registriert seit: 15.04.2006
Beiträge: 15
thokon89
Standard

hmmm, ich verstehe nicht, was ihr meint, könnte mir jemand bitte meins mal bearbeiten?

MfG
thokon89 ist offline  
Alt 18.04.2006, 01:07  
Gast
 
Beiträge: n/a
Standard

Buhmann hat Dir doch schon so eine schöne Lösung geliefert, die auch bereits an Dein Skript angepasst ist.

Verstehst Du Dein SKript überhaupt?
Was macht
Zitat:
$end = round(rand(1, $total));
$banner = mysql_fetch_array(safe_query("SELECT * FROM ".PREFIX."links LIMIT ".($end-1).",$end"));
und warum macht es das, was es tut?
 
Alt 18.04.2006, 01:09  
Neuer Benutzer
 
Registriert seit: 15.04.2006
Beiträge: 15
thokon89
Standard

also, ich hatte das ausprobiert, ging aber net, war irgendwas falsch

kA, bin nicht so der Checker

deswegen hatte ich ja darum gebeten, ob mir das vll mal jemand, direkt für das komplette Skript machen könnte

THX
thokon89 ist offline  
Alt 18.04.2006, 01:10  
Gast
 
Beiträge: n/a
Standard

Das gehört dann aber nach
Zitat:
Gesuche
In diesem Forum dürfen Gesuche nach Jobangeboten (Programmierer, Designer), fertigen Scripts, etc. gestellt werden.
 
Alt 18.04.2006, 01:16  
Neuer Benutzer
 
Registriert seit: 15.04.2006
Beiträge: 15
thokon89
Standard

naja, ich meinte das jetzt so, dass mir vll jemand, das jetzt von Buhmann in meins reinstezen könnte

jetzt bräuchte ich das bloß noch so, dass der keins doppelt anzeigt

pls help, THX

MfG
thokon89 ist offline  
Alt 18.04.2006, 01:59  
Neuer Benutzer
 
Registriert seit: 15.04.2006
Beiträge: 15
thokon89
Standard

ok, frag ich mal so, warum geht das nicht?

Code:
<?php
$result = mysql_query(...); 
while($banner = mysql_fetch_assoc($result)) { 

$allbanner = safe_query("SELECT * FROM ".PREFIX."links");
$total = mysql_num_rows($allbanner);
if($total) {
	$end = round(rand(1, $total));
	$banner = mysql_fetch_array(safe_query("SELECT linkID, banner, name FROM ".PREFIX."links LIMIT 3 ORDER BY RAND()"));
	
	echo '[img]./images/links/'.$banner['banner'].'[/img]';
} else echo 'Keine Links vorhanden.';
unset($banner);
}
?>
bzw. wie müsste es wirklich heißen?

bin für jede hilfe dankbar

MfG
thokon89 ist offline  
Alt 18.04.2006, 09:31  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Da hatte Buhmann noch einen kleinen Fehler in seiner Abfrage. Zuerst kommt die ORDER BY-Klausel und danach das LIMIT:
Code:
SELECT linkID, banner, name FROM ".PREFIX."links ORDER BY RAND() LIMIT 3
xabbuh ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.