Hallo Bernd,
okay. Also - wenn eins der vier Felder firma, name, firma_L oder name_L gefüllt ist, wird der Besteller-Bereich ausgegeben. Der besteht aus zwei Abschnitten: Ansprechpartner und alternativer Ansprechpartner. Diese Abschnitte werden ausgegeben, wenn es den jeweiligen Ansprechpartner gibt. Das sollte so, wie es jetzt programmiert ist, grundsätzlich funktionieren.
Deine Abfragerei mit dem Strich zwischen den Ansprechpartnern kannst Du rein mit CSS erledigen. Das führt zu kleinerem PHP Code. Dein h3 sollte dazu noch class="besteller"
bekommen, und die Ansprechpartner-divs darin ein class="ansprechpartner"
. Das ermöglicht Dir, die inline-styles loszuwerden. Im CSS schreibst Du dann:
.besteller {
border-bottom: 1px solid #efefef;
width: 81%;
padding-bottom: 6px;
}
.besteller .ansprechpartner {
flex: 0 0 36%;
}
.besteller .ansprechpartner:nth-of-type(n+2) {
border-left: 1px solid #efefef;
padding-left: 7em;
}
Damit hast Du alle inline-styles versorgt, und du bekommst den Abstand von 7em und einen Strich links vom Abstand, wenn mehr als ein Ansprechpartner-Bereiche vorhanden ist. Ich setze ganz bewusst border-left auf der 2. Spalte und nicht border-right auf der 1. Spalte. Von der Optik her sollte das identisch sein, aber es ist in CSS nicht möglich, "vorauszugucken", d.h. ich kann dem linken Ansprechpartner keinen Rand geben, wenn noch ein weiterer Ansprechpartner folgt.
Ob das alles so optimal gestyled ist, darauf gehe ich nicht ein, das führt mir hier zu weit.
Was mich fachlich wundert, ist: Was ist, wenn nur name_L oder firma_L gefüllt sind, gibst Du einen "alternativen Ansprechpartner" aus, ohne "Ansprechpartner". Ist das so von Dir gewollt? Oder sollte man in dem Fall nicht lieber den alternativen Ansprechpartner als Ansprechpartner betiteln
Die Übersichtlichkeit verbesserst Du einerseits durch das oben gezweigte CSS, und ansonsten eigentlich - wie immer - durch den Einsatz von Funktionen. Zum Beispiel diese:
function hatAnsprechpartner($name, $firma) {
return $name != "" OR $firma != "";
}
function schreibeAnsprechpartner($titel, $firma, $name, $telefon, $handy, $email) {
echo "<div class='ansprechpartner'>";
echo "<h4>$titel</h4>";
schreibeAnsprechpartnerZeile("Firma:", $firma);
schreibeAnsprechpartnerZeile("Name:", $name);
schreibeAnsprechpartnerZeile("Telefon:", $telefon);
schreibeAnsprechpartnerZeile("Mobil:", $handy);
schreibeAnsprechpartnerZeile("E-Mail:", $email);
echo "</div>";
}
function schreibeAnsprechpartnerZeile($label, $wert) {
if ($wert != "") {
echo $label . ": " . $wert . "<br>";
}
}
Das "Hauptprogramm" besteht dann nur noch im Aufruf dieser Funktionen (ich unterstelle mal, dass die styles vom h3 auch ins CSS wandern):
<?php if (hatAnsprechpartner($name, $firma) OR hatAnsprechpartner($name_L, firma_L)): ?>
<h3 class="besteller">Besteller</h3>
<div>
<?php
if (hatAnsprechpartner($firma, $name) {
schreibeAnsprechpartner("Ansprechpartner", $firma, $name, $telefon, $handy, $email);
}
if (hatAnsprechpartner($firma_L, $name_L) {
schreibeAnsprechpartner("alternativer Ansprechpartner", $firma_L, $name_L, $telefon_L, $handy_L, $email_L);
}
?>
</div>
<?php endif; ?>
Damit hast Du eine einzige Stelle, wo die Aufbereitung der Ansprechpartnerzeilen erfolgt, d.h. wenn Du das schicker machen willst, musst Du es nur 1x programmieren.
Auf das erwähnte fachliche Problem ("Alternativer AP ohne normalen AP") bin ich jetzt auch nicht eingegangen.
Rolf
sumpsi - posui - clusi