• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[GELOEST] Gruppierte Bilderdarstellung nach SQL-Abfrage

voumi

Neues Mitglied
Hallo zusammen

Mein Ziel ist es, Bilder von Aktivmitgliedern des Vereins auf der Homepage, gruppiert nach Instrumenten, darzustellen. Mit dem unten stehenden Code, welchen ich mehr oder weniger zusammengeklickt habe, werden alle Bilder fortlaufend angezeigt. Ich möchte nun - im Vergleich zu einer Tabelle - in der Spalte A, Zelle 1, ein Kategorienbild (Dateiname jeweils rol_name + .jpg) anzeigenlassen. In der Spalte B, Zeile 1, sollen jene Personen hintereinander angezeigt werden, deren Kategorien-Nummer kleiner 30 ist. Dabei soll die Spaltenanzahl nicht definiert - bzw. an der Bildschirmbreite angepasst sein. (In der ersten Zeile sind üblicherweise lediglich Bilder von zwei Personen).
In der nächsten Zeile (A2) beginnt wieder eine neue Kategorie mit deren Bild. Ab der Spalte B (B2) sollen die Bilder jener Bilder angezeigt werden, deren Kategorien-Nummer grösser = 30 und kleiner als 50 ist.
In der nächsten Zeile (z.B. A3) beginnt wieder eine neue Kategorie mit deren Bild. Ab der Spalte B (z.B. B3) sollen solange Bilder eingefügt werden, wie die Kategorien-Nummer unverändert bleibt. Sobald eine neue Nummer auftaucht, soll in der Spalte A (z.B. A5) das entsprechende Bild eingefügt werden. Ab Spalte B (B5) deren Bilder.
und so weiter und so fort....
Grundsätzlich soll immer, falls mehr Bilder vorhanden sind, als Spalten Platz haben, auf der nächsten Zeile in Spalte B fortgefahren werden.

Eigentlich möchte ich das ganze nicht mittels Tabelle machen. Habe aber keinen Plan, wie ich an die Umsetzung heran gehen soll. Dabei ist das mit den Wenn-Dann-Bedingungen mein kleineres Problem. Die für mich grössere Herausforderung ist das mit der Darstellung...

Ich freue mich über jeden Tipp und bedanke mich bereits im Voraus.

Liebe Grüsse
voumi

Code:
<style>
    #side{float: left;}
    #middle{float: left; margin-bottom: 5px; margin-top: 5px;}
    #main{float: left;}
</style>

<?php
date_default_timezone_set('Europe/Berlin');
defined('_JEXEC') or die('Restricted access');
header("Content-Type: image/jpeg");

error_reporting(0);

require_once ('xxxxxxx/config.php');
$db = mysqli_connect (
                     $g_adm_srv,
                     $g_adm_usr,
                     $g_adm_pw,
                     $g_adm_db
                    );

if ( $db )
{
#    echo 'Verbindung sehr erfolgreich: ';
#    print_r( $db_link);
}
else
{
    // hier sollte dann später dem Programmierer eine
    // E-Mail mit dem Problem zukommen gelassen werden
    die('keine Verbindung möglich: ' . mysqli_error());
}

$db->set_charset('utf8');

//echo "<center><h1>Vorstand</h1></center>";

echo "Die Mitgliederinnen und Mitglieder der MG.....";
echo "<br><br>";
$erg = $db->query("SELECT usr_id,
CONCAT(id1.usd_value) AS name, rol_id, rol_instr_sequence, rol_name

FROM adm_roles, adm_categories, adm_members, adm_users

LEFT JOIN adm_user_data id1 ON id1.usd_usr_id = usr_id
AND id1.usd_usf_id = 89

WHERE rol_id > 1 and rol_instr_sequence <> '' AND mem_begin <= NOW() AND mem_end > NOW()

AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id

AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY rol_instr_sequence ASC");
$anzahl=0;   
while ($zeile = $erg->fetch_object()) {

?>   

<div id="behold">
             <div id="middle">
                <center>
                    <img src="admidio/adm_program/modules/profile/profile_photo_zeigen.php?usr_id=<?=$zeile->usr_id;?>">
                    <span style="font-size:8pt; line-height: 100%">
                        <i>
                            <br><br>
                            <?=$zeile->rol_name;?>
                            <br>
                            <?=$zeile->name;?>
                            <br>
                        </i>
                    </span>
            </div>
</div>

<?php

}

# Verbindung schliessen
$erg->free();
$db->close();

?>
 
Werbung:
Hallo Sempervivum

Ja, das ist im Ansatz genau das, was ich will! :D:D:D Im Moment bin ich noch zuversichtlich, dass ich die Anpassungen mit meinen bescheidenen Kenntnissen hinbekommen kann. Dabei bin ich gespannt, ob ich auch mein 'kleineres Problem' lösen kann. :wink: Aber das Gerüst steht. Du hast bei mir einen riesigen Knoten gelöst.

Vielen herzlichen Dank für Deine Hilfe!!! Ich melde mich auf alle Fälle wieder (hoffentlich mit positivem Bescheid).

Liebe Grüsse aus der Schweiz und einen angenehmen Abend.

voumi
 
Hallo Sempervivum

Dein Code macht zu 100% das, was ich möchte. Ich konnte zusätzliche Mitglieder hinzufügen - und es passte immer noch. :smile:

Nur wenn ich jetzt mit "meiner" Schleife komme, passt es nicht mehr so ganz.... :eek:
Rechts neben dem ersten Kategorienbild wird das Bild des ersten Mitgliedes dieser Kategorie angezeigt. So weit, so gut... Beim Bild des zweiten Mitgliedes passt es bereits nicht mehr. Es wird unter dem ersten angezeigt. Darunter kommt dann ein Bild der nächsten Kategorie. Rechts daneben das Bild des ersten Mitgliedes dieser Kategorie. Die weiteren werden wiederum darunter aufgelistet - inkl. das Bild der nächsten Kategorie. Dann wiederum das erste Bild rechts daneben und die weiteren darunter. Und so weiter und so fort....
Ich habe das Gefühl, dass ich nicht mehr allzu weit vom Endergebnis entfernt bin. Aber der zündende Gedanke ist noch nicht gekommen..... Vielleicht hast Du mir ja noch einen Tipp.

Besten Danke.
voumi

PS: Die beiden IF-Bedingungen benötige ich, um: 1. Festzustellen, ob die Ausgabe einer neuen Kategorie ansteht, und 2. um zu prüfen, ob ein Kategorienbild vorhanden ist. Wenn kein Bild vorhanden ist, sollen die Bilder der folgenden Mitglieder ganz "normal" nach rechts weiter aufgelistet werden - also quasi der Vorgängerkategorie angehören.

CSS:
<style>
        .line-wrapper {
            display: flex;
            align-items: flex-start;
        }

        .members {
            display: flex;
            flex-wrap: wrap;
            font-size: 10px;
            float: left;
           
        }

        .line-wrapper figure {
            margin: 0;
            padding: 1em;
            display: flex;
            flex-direction: column;
            align-items: center;
                     
        }

        .line-wrapper figure p {
            text-align: center;
           
        }
</style>



PHP:
<?php
date_default_timezone_set('Europe/Berlin');
defined('_JEXEC') or die('Restricted access');
header("Content-Type: image/jpeg");

error_reporting(0);

require_once ('admidio/adm_my_files/config.php');
$db = mysqli_connect (
                     $g_adm_srv,
                     $g_adm_usr,
                     $g_adm_pw,
                     $g_adm_db
                    );

if ( $db )
{
#    echo 'Verbindung sehr erfolgreich: ';
#    print_r( $db_link);
}
else
{
    // hier sollte dann später dem Programmierer eine
    // E-Mail mit dem Problem zukommen gelassen werden
    die('keine Verbindung möglich: ' . mysqli_error());
}

$db->set_charset('utf8');

echo "Die Mitglieder der MG U..........................................";
echo "<br><br>";
$erg = $db->query("SELECT usr_id,
CONCAT(id1.usd_value) AS name, rol_id, rol_instr_sequence, rol_name

FROM adm_roles, adm_categories, adm_members, adm_users

LEFT JOIN adm_user_data id1 ON id1.usd_usr_id = usr_id
AND id1.usd_usf_id = 89

WHERE rol_id > 1 and rol_instr_sequence <> '' AND mem_begin <= NOW() AND mem_end > NOW()

AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id

AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY rol_instr_sequence ASC");

$pfad = "admidio/instrumente/";

while ($zeile = $erg->fetch_object()) {

$instr = strToLower($zeile->rol_name);
$bild = $pfad.$instr.".jpg";
$rolleneu = $zeile->rol_instr_sequence;
   
IF ($rolleneu != $rollealt){
       
IF (file_exists($bild)) {
?>
    <div class="line-wrapper">

        <figure>
<?php
            echo '<img src="'.$bild.'">';
?>
        </figure>

<?php
}
}

?>

        <div class="members">
            <figure>
                <img src="admidio/adm_program/modules/profile/profile_photo_zeigen.php?usr_id=<?=$zeile->usr_id;?>">
                <figcaption>
                   
                    <span style="font-size:8pt; line-height: 120%"><center>
                     <p><?=$zeile->rol_name;?><br><?=$zeile->name;?></p>                  
                   
                </figcaption>
            </figure>
   
<?php

$rollealt = $rolleneu;
}

?>
 
Zuletzt bearbeitet:
Werbung:
Super! :D Vielen herzlichen Dank. Jetzt macht es auch mit Schleife das, was es schon bei Deiner ersten Version gemacht hat. Du bist mein Held und Retter! :smile:
 
Zurück
Oben