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

Titel / werte vergleichen?

Fr3ddy

Mitglied
Hi,

Ich habe ein template (contao cms) mit einer auflistung von partnern. Nun kann es vorkommen, dass einige partner mehr als einmal vorkommen, da die firmenbezeichnung gleich ist allerdings der standort unterschiedlich. Jedem partner kann ich im cms den attribut "main" geben, sollte es also von einem unternehmen mehrere zweigstellen geben mit dem gleichen namen aber unterschiedlicher standort, bekommt ein partner den attribut "main", damit nicht alle angezeigt werden sondern nur der eine.

Nun würde ich gerne den partnernamen vergleichen, wenn ein name mehrmals vorkommt, soll nur der partner genommen werden, der den "main" attribut hat.
Wie kann ich das am besten mit php lösen?

Hier mal der code:

PHP:
<?php if (count($this->entries)): ?>
  <h2>Partner</h2>
<div class="catalog_simple eu">
<?php foreach ($this->entries as $entry): ?>
<div class="wrapper_item">
<div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>"href="#">
<div class="p_position">
    <div class="<?php echo $entry['data']['catitem_vip']['value']; ?>"></div>
</div>
<img src="<?php echo $entry['data']['catitem_partnerlogo']['raw']; ?>" alt="<?php echo $entry['data']['cartitem_partnername']['value']; ?>">
</div>
<div class="wrapper_hidden_content">
    <div class="hidden_content">
    <h2><?php echo $entry['data']['cartitem_partnername']['value']; ?></h2>
    <p><span class="cell"><strong>Webpage:</strong></span>
    <span class="cell">
    <a target="_blank" href="<?php echo $entry['data']['catitem_partnerurl']['raw']; ?>"><?php echo $entry['data']['catitem_partnerurl']['raw']; ?></a>
      </span></p>
    <p><span class="cell"><strong>Partner:</strong></span>
     <span class="cell">
    <?php echo $entry['data']['catitem_vip']['value']; ?>
      </span></p>
    <p><span class="cell"><strong>Address:</strong></span>
    <span class="cell">
    <?php echo $entry['data']['cartitem_partner_street']['value']; ?><br>
    <?php echo $entry['data']['cartitem_plz']['value']; ?> <?php echo $entry['data']['cartitem_ort']['value']; ?><br>
    <?php echo $entry['data']['cartitem_partner_country']['value']; ?>
      </span></p>
      <p><span class="cell"><strong>Phone:<br>Fax:</strong></span>
    <span class="cell"><?php echo $entry['data']['catitem_phone']['raw']; ?><br>
        <?php echo $entry['data']['catitem_fax']['raw']; ?>
        </span>

    </p>
      <p>
    <span class="cell"><strong>Contact person :</strong></span>
    <span class="cell">
    <?php echo $entry['data']['catitem_contact_person']['raw']; ?>
    </span>
      </p>
      <p>
    <span class="cell"><strong>Email:</strong></span>
    <span class="cell">
      <a href="mailto:<?php echo $entry['data']['catitem_email']['raw']; ?>"><?php echo $entry['data']['catitem_email']['raw']; ?></a>
    </span>
      </p><br>
    <p>
    <strong>Description:</strong><br>
    <?php echo $entry['data']['catitem_description']['raw']; ?>
    </p>
      <br>
    </div>
</div>
    </div>
    

<?php endforeach; ?>
</div>
<?php else: ?>

<?php if ($this->condition): ?>
<div class="condition"><?php echo $this->condition; ?></div>
<?php else: ?>

<?php endif; ?>

<?php endif; ?>

LG & danke
 
Das ist schon eine Frage der DB-Abfrage und nicht erst ein Scriptproblem.
 
Achso, verdammt, weil ich halt nur dieses template beinflussen kann. Gibt es da sonst keinen anderen weg das so zu filtern?
 
Gibt es da sonst keinen anderen weg das so zu filtern?
Ja, gibt es, aber der Weg ist sehr mühselig. Du hast diese Schleife:
PHP:
foreach ($this->entries as $entry)
An dieser Stelle wirst du aber nicht wissen, ob es einen Datensatz mit entsprechendem Eintrag gibt. D.h. du müsset vor der Schleife eine Filterung einbauen.
 
Du könntest ein Funktion schreiben, die alle Firmen mit dem Attribut "main" ermittelt. In der vorhandenen Schleife prüfst du dann, ob der aktuelle Datensatz ein Atrribut "main" hat und wenn nicht, prüfst du, ob die Firma schon in den gefundenen Firmen mit "main" vorhanden ist. Wenn nicht, ausgeben, wenn ja, Datensatz überspringen.
 
Dieser Quellcode setzt vorraus, dass es eine bestimmte und unveränderbare Reihenfolge gibt. Aber ist das bei dir gewährleistet? Also kommt immer erst der Standort mit "main" und dann alle anderen mit gleichem Firmenname?
 
Tja, das ist aber wichtig. Wenn die Reihenfolge garantiert ist, könnte man den Scriptteil anpassen, wenn nicht, hilft dir das kein Stück weiter. Dann lieber den sichereren Weg gehen und den vorgeschlagenen Weg von mir nehmen.
 
Zurück
Oben