Zufallbilder aus bestimmter Kategorie ausser bei 0...

DaveThuet

Erfahrenes Mitglied
Hallo liebe PHP-Profis,

ich bräuchte wiedermal Eure Hilfe, möchte jedoch alle vorerst für die Hilfe die mir bereits gegeben wurde herzlich Danken und wünsche allen zugleich ein frohes Osterfest!

Nun, zu meiner Idee oder respektive zu meinem Vorhaben...
Im Moment werden aus allen Bildern meiner Domain Zufallsbilder ausgegeben in den zwei Bildschirmen im Header, diese kommen ab der tbl_uploads, so weit ganz gut und läuft seit Monaten problemlos. Nun möchte ich das wenn ein Girl Geburtstag hat, an diesem bestimmten Tag, das nur Bilder von Ihr gezeigt werden. Deshalb habe ich dies bereits mal in einer tbl_geburtstage gepackt respektive geschrieben.

Zur Struktur meiner MySQL:
In der genannten Tabelle (tbl_geburtstage) ist nur die id_unterkategorie und das Datum als «07.04.» gespeichert. In einer anderen Tabelle tbl_unterkategorie ist dann auch der Namen der Unterkategorie und die ID der Hauptkategorie abgelegt und in der Tabelle tbl_kategorie ist dann natürlich die id_kategorie und den Namen der Kategorie gespeichert. Etwas verwirrend aber ich denke das es so sehr Logisch aufgebaut. In der grössten Tabelle tbl_uploads sind alle Bilddaten vorhanden mit id_kategorie und id_unterkategorie und einiges mehr das hier nun nicht weiter wichtig ist.

Was bisher als Zufallsscript läuft:
PHP:
// begin Recordset
$query_count = "SELECT COUNT(*) FROM tbl_uploads WHERE aktiv = 1";
$wpCount = $wallpaper->SelectLimit($query_count) or die($wallpaper->ErrorMsg());
$numOfFiles = $wpCount->fields[0];

$fileNum = rand(0, $numOfFiles - 1);

$query_wphead1 = "SELECT * FROM tbl_uploads WHERE aktiv = 1 LIMIT ".$fileNum.", 1";
$wphead1 = $wallpaper->SelectLimit($query_wphead1) or die($wallpaper->ErrorMsg());
// end Recordset
Nun, wie bringe ich es hin das geprüft wird ob eine Unterkategorie Geburtstag hat?
Manuell kann ich ja einfach folgenden Code einstellen und es klappt auch...
PHP:
// begin Recordset
// --> AND id_unterkategorie = Zahl <-- Wieder Löschen für alle SWPs ebenso unten
$query_count = "SELECT COUNT(*) FROM tbl_uploads WHERE aktiv = 1 AND id_unterkategorie = 1989";
$wpCount = $wallpaper->SelectLimit($query_count) or die($wallpaper->ErrorMsg());
$numOfFiles = $wpCount->fields[0];

$fileNum = rand(0, $numOfFiles - 1);

$query_wphead1 = "SELECT * FROM tbl_uploads WHERE aktiv = 1 AND id_unterkategorie = 1989 LIMIT ".$fileNum.", 1";
$wphead1 = $wallpaper->SelectLimit($query_wphead1) or die($wallpaper->ErrorMsg());
// end Recordset
...aber ich möchte dies nun automatisieren nach Datum "07.04." gemäss meiner "tbl_geburtstage" und sollte bei der Spalte id_unterkategorie eine "0" sein, müsste wieder per Zufall auf alle Bilder zurückgegriffen werden. Ich hoffe Ihr versteht einigermassen was ich da realisieren will?

Auf der Hauptseite müsste dann auch der Text angepasst werden, so das auch ausgegeben wird, dass die Dame "Petra Mustermann" heute Geburtstag hat. Liegt aber in der Home und obigen PHP-Code ist ein separates PHP das per include eingebaut ist.

Ich wäre wirklich sehr Dankbar für jegliche Hilfe!
 
So ganz habe ich das Problem hier nicht verstanden. Klappt es so?
PHP:
$datum = date('d.m');
$sql = 'SELECT id_unterkategorie FROM tbl_geburtstage WHERE geburtstag = "'.$datum.'"';
$result = mysql_query($sql);
while( $row = mysql_fetch_assoc($result) ){
  echo 'Heutige Geburtstage: '.$row['id_unterkategorie'];
  //Sonstiges
}
 
Zuletzt bearbeitet:
Hallo timestamp,

nein geht nicht, die von mir eingefügten Codes sind nur um ein Zufall-Bild auszulesen.

Nun möchte ich diesen Code aber um einiges Erweitern, so das er nur angezeigt respektive ausgegeben wird wenn kein Girl Geburtstag hat in der tbl_geburtstage. Ich habe absolut keinen Plan wie so ein Code zu schreiben ist da ich mich einfach mit PHP nicht auskenne.

In der tbl_unterkategorie sind alle Tage des Jahres drinnen als "07.04." und die ID-Nummer der Unterkategorie der Dame die dann an diesem Tag Geburtstag hat.

Der Unterkategorie Name ist in einer eigenen Tabelle tbl_unterkategorie mit ID-Nummer und mit der dazu gehörenden ID-Nummer der Hauptkategorie. Der Hauptkategorie Namen ist in der tbl_kategorie mit der ID-Nummer. Die Bilder mit ID-Nummer und ID-Unterkategorie und ID-Kategorie liegen in der tbl_uploads.

Ich hoffe du verstehst was ich meine oder was ich soeben versuche zu erklären. :)

Hier mal den gesamten Code des aktuellen Zufallsbild im Bildschirm der Domain:
PHP:
<? php
$query_count = "SELECT COUNT(*) FROM tbl_uploads WHERE aktiv = 1";
$wpCount = $wallpaper->SelectLimit($query_count) or die($wallpaper->ErrorMsg());
$numOfFiles = $wpCount->fields[0];

$fileNum = rand(0, $numOfFiles - 1);

$query_wphead1 = "SELECT * FROM tbl_uploads WHERE aktiv = 1 LIMIT ".$fileNum.", 1";
$wphead1 = $wallpaper->SelectLimit($query_wphead1) or die($wallpaper->ErrorMsg());

// Show Dynamic Thumbnail
$objDynamicThumb2 = new tNG_DynamicThumbnail("", "KT_thumbnail2");
$objDynamicThumb2->setFolder("wallpaper/");
$objDynamicThumb2->setRenameRule("{wphead1.bildpfad}");
$objDynamicThumb2->setResize(150, 0, true);
$objDynamicThumb2->setWatermark(false);
$groesse = getimagesize("xyz/".$wphead1->Fields('bildpfad'));
//PHP ADODB document - made with PHAkt 3.7.1
?>
<div class="plakatwp1">
<img src="./images/layout/spacer.png" width="1" height="7" border="0" alt="Spacer" /><br />
<div align="center"><span class="ttheader"><a href="./index.php?page=wallpaper&amp;id=<?php echo $wphead1->Fields('id_uploads'); ?>" rel="nofollow"><span class="tooltip"><span class="top zwptitel">Zufall Sexy Wallpaper 1</span><span class="middle"><strong>Name: </strong><?php echo substr($wphead1->Fields('bildpfad'), 0, -4); ?><br /><strong>Original Auflösung: </strong><?php echo $groesse[0]."x".$groesse[1]; ?> Pixel<br /><strong>Upload-Datum: </strong><?php echo KT_formatDate($wphead1->Fields('timestamp')); ?><br /><strong>Gesamt-Klicks: </strong><?php echo($wphead1->Fields('klicks')); ?><br /><strong>Gesamt-Downloads: </strong><?php echo($wphead1->Fields('downloads')); ?><br /><strong>Bewertung: </strong><?php @print(number_format($wphead1->Fields('bewertung'),2)); ?></span><span class="bottom"></span></span><img src="<?php echo $objDynamicThumb2->Execute(); ?>" border="0" width="150" height="70" alt="<?php echo substr($wphead1->Fields('bildpfad'), 0, -4); ?>" /></a></span></div>
</div>
<?php $wphead1->Close(); ?>

Danke für die Hilfe, wäre Toll wenn man dies hinbringen würde.
 
Du kannst alles über ein einziges SQL lösen.
Das folgende SQL gibt ein Zufallseintrag aus tbl_uploads anhand deiner Regeln zurück.
SQL:
SELECT
	up.*
FROM
	(
		SELECT
			COUNT(*) AS flag
		FROM
			tbl_geburtstage
		WHERE 
			DATE_FORMAT(NOW(), '%d.%m') = geburtstag
	) AS flag,
	tbl_uploads AS up
	LEFT JOIN tbl_geburtstage AS gt
		ON up.id_unterkategorie = gt.id_unterkategorie
WHERE
	CASE 
		WHEN flag.flag > 0
		THEN (DATE_FORMAT(NOW(), '%d.%m') = gt.geburtstag
			AND NOT up.id_uploads IS NULL)
		ELSE
			true
	END
ORDER BY
	RAND()
LIMIT 1;
 
Zuletzt bearbeitet von einem Moderator:
Morgen Yaslaw,

ich habe es nun folgend Eingebaut aber die Ladezeit der Domain erhöht sich massiv und es Klappt irgendwie nicht. Es kommt ein zufälliges Bild aus tbl_uploads und nicht eines des heutigen Geburtstags.

PHP:
// begin Recordset
$query_wphead1 = "SELECT
    up.*
FROM
    (
        SELECT
            COUNT(*) AS flag
        FROM
            tbl_geburtstage
        WHERE 
            DATE_FORMAT(NOW(), '%d.%m') = geburtstag
    ) AS flag,
    tbl_uploads AS up
    LEFT JOIN tbl_geburtstage AS gt
        ON up.id_unterkategorie = gt.id_unterkategorie
WHERE
    CASE 
        WHEN flag.flag > 0
        THEN (DATE_FORMAT(NOW(), '%d.%m') = gt.geburtstag
            AND NOT up.id_uploads IS NULL)
        ELSE
            TRUE
    END
ORDER BY
    RAND()
LIMIT 1";
$wphead1 = $wallpaper->SelectLimit($query_wphead1) 
or die($wallpaper->ErrorMsg());
// end Recordset
Ich stehe wie immer mit solchen Codes einfach auf den Schlauch. :(
 
Zurück