dr_Alex
Erfahrenes Mitglied
ich möchte für meine Seite ein Banner System nach Priorität haben. Also wie oft ein Banner in vergleich zu den anderen Bannern gezeigt wird.
Die Datenbank ist so aufgebaut:
banner_html
banner_view
banner_view_temp
banner_order
Ich hab jetzt zB drei Banner in der Datenbank:
Banner 1: Priorität=10
Banner 2: Priorität=20
Banner 3: Priorität=30
Jetzt würde ich gerne das bei 60 aktualisierungen der erste Banner 10mal angezeigt wird, der 2te 20 mal usw.
Dabei dürfen sich die Banner nicht wiederholen.
Das war mein erster Code der nicht ging (ziemlich unsauber, ich weiss ):
ok dann hab ich etwas umstruktuirt:
Bei den ersten Code die priorität nicht. die banner werden nach einander ausgegeben. Bei den zweiten wird die view_temp nicht zurück gestezt.
normaler weisse würde ich weiter rumexperementieren aber ich hab irgentiwe ne sperre und es kommt gar nichts bei raus.
hoffe um hilfe
danke vorraus
Die Datenbank ist so aufgebaut:
banner_html
banner_view
banner_view_temp
banner_order
Ich hab jetzt zB drei Banner in der Datenbank:
Banner 1: Priorität=10
Banner 2: Priorität=20
Banner 3: Priorität=30
Jetzt würde ich gerne das bei 60 aktualisierungen der erste Banner 10mal angezeigt wird, der 2te 20 mal usw.
Dabei dürfen sich die Banner nicht wiederholen.
Das war mein erster Code der nicht ging (ziemlich unsauber, ich weiss ):
PHP:
$res=mysql_query("SELECT * FROM auktion_banner WHERE banner_active='1' AND banner_cat='1' AND banner_show='0' ORDER BY banner_id") or die(mysql_error());
if(mysql_num_rows($res)==0){
mysql_query("UPDATE auktion_banner SET banner_show='0'");
$res=mysql_query("SELECT * FROM auktion_banner WHERE banner_active='1' AND banner_cat='1' AND banner_show='0' ORDER BY banner_id") or die(mysql_error());
}
// alle banner die aktiv sind in die schleife
while($row=mysql_fetch_assoc($res)){
$array[]=$row;
}
// alle dessen priorität schon ab ist löschen
while(list($key,$value)=each($array)){
if($value['banner_view_temp']==$value['banner_order']){
unset($array[$key]);
}
if($value['banner_show']==1){
unset($array[$key]);
}
}
if(count($array)==0){
mysql_query("UPDATE auktion_banner SET banner_view_temp='0'");
$res=mysql_query("SELECT * FROM auktion_banner WHERE banner_active='1' AND banner_cat='1' ORDER BY banner_id");
while($row=mysql_fetch_assoc($res)){
$array[]=$row;
}
}
$array = array_values($array);
mysql_query("UPDATE auktion_banner SET banner_view_temp='".($array[0]['banner_view_temp']+1)."', banner_view='".($array[0]['banner_view']+1)."',banner_show='1' WHERE banner_id='".$array[0]['banner_id']."' LIMIT 1") or die(mysql_error());
ok dann hab ich etwas umstruktuirt:
PHP:
function lese_mysql($ok){
// sicherheit
global $i;
$i=$ok+1;
if($i==100) return false;
//
$res=mysql_query("SELECT * FROM auktion_banner WHERE banner_active='1' AND banner_cat='1' AND banner_show='0' ORDER BY banner_order DESC");
if(mysql_num_rows($res)!=0){
$res2=mysql_query("SELECT * FROM auktion_banner WHERE banner_active='1' AND banner_cat='1' AND banner_show='0' AND banner_view_temp<banner_order ORDER BY banner_order DESC");
if(mysql_num_rows($res2)==0){
mysql_query("UPDATE auktion_banner SET banner_view_temp='0',banner_show='0' WHERE banner_view_temp<banner_order");
lese_mysql($i);
}else{
return $res2;
}
}else{
mysql_query("UPDATE auktion_banner SET banner_show='0' WHERE banner_view_temp<banner_order");
lese_mysql($i);
}
}
while($row=mysql_fetch_assoc(lese_mysql(1))){
$banner[]=$row;
mysql_query("UPDATE auktion_banner SET banner_view_temp='".($row['banner_view_temp']+1)."', banner_view='".($row['banner_view']+1)."',banner_show='1' WHERE banner_id='".$row['banner_id']."' LIMIT 1") or die(mysql_error());
break 1;
}
Bei den ersten Code die priorität nicht. die banner werden nach einander ausgegeben. Bei den zweiten wird die view_temp nicht zurück gestezt.
normaler weisse würde ich weiter rumexperementieren aber ich hab irgentiwe ne sperre und es kommt gar nichts bei raus.
hoffe um hilfe
danke vorraus