PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : if Spalte Inahlt


CocaCola
26.05.2009, 23:23:48
Tach!

Ich habe folgende Frage, ich hoffe hier kann mir jemand weiterhelfen :)

Ich gebe auf meiner 1. Seite folgende Spalten aus:
Datum, Event, Ort
Außerdem habe ich zu jedem Event auch eine Zusatzseite mit genaueren Infos.
Also gibt es nach der Spalte Ort noch einen Link "mehr ..." der zu dieser Seite verlinkt ist.
Auf dieser Seite wird dann einfach folgende Spalte ausgegeben:
Info

Jetzt erscheint ja aber dieser Link immer, egal ob vorher bei INfo etwas angegebem wird oder nicht. Das ist blöde, weil sonst klickt man ja auf mehr und da steht dann manchmal gar nix.

Deswegen will ich diesen Link "mehr..." nur einblenden lassen, wenn in der Spalte "info" etwas steht.

Hier die Stelle im Code dazu:

<table>
<tr>
<td class="datum"><b>Datum</b></td>
<td class="event"><b>Event</b></td>
<td class="ort"><b>Ort</b></td>
</tr>
<?
$abfrage = mysql_query("
SELECT ID, datum, event, ort FROM eventliste ORDER BY datum ASC");

//Für jedes Ergebnis eine eigene Zeile in der Tabelle
while($ergebnis = mysql_fetch_object($abfrage))

{
echo "
<tr>
<td class='datum'>".date("<b>d.m.Y</b> H:i", strtotime($ergebnis->datum))."&nbsp;Uhr</td>
<td class='event'>".$ergebnis->event."</td>
<td class='ort'>".$ergebnis->ort."<a href=\"http://#?id=".$ergebnis->ID."\"> mehr ...</td>
</tr>
";
}
?>
</table>

Kann mir da jemand weiterhelfen?
Vielen Dank schonmal :)
Gruß, Coke

asipak4you
27.05.2009, 11:29:39
Ich gehe jetzt mal davon aus der Inhalt von Info steht in der Spalte `info` in der Tabelle `eventliste` ?

Dann lies doch einfach diese Splate zusätzlich aus und vergleiche auf

if (trim($ergebnis->info) != '') {
//Link ausgeben
}

Diese Abfrage solltest du dann aber auch noch auf der Infoseite ausführen, um sicher zu gehen, dass niemand "ausversehen" oder bewusst den Link verändert um sich die Infos anzeigen zu lassen obwohl keine da sein!

CocaCola
27.05.2009, 12:59:26
Ok, super vielen dank schonmal!
Japp, die Beschreibung oder Info steht in der 'info'.

Aber ich habe noch eine Frage allgemein zu den if-Anweisungen.
Ich habe mit diesen bis jetzt noch nicht wirklich was zu tun gehabt.

Deswegen weiß ich auch nicht, an welcher Stelle ich sie einsetzen muss.

In meinem Fall zum Beispiel ...

<table>
<tr>
<td class="datum"><b>Datum</b></td>
<td class="event"><b>Event</b></td>
<td class="ort"><b>Ort</b></td>
</tr>
<?
$abfrage = mysql_query("
SELECT ID, datum, event, ort FROM eventliste ORDER BY datum ASC");

//Für jedes Ergebnis eine eigene Zeile in der Tabelle
while($ergebnis = mysql_fetch_object($abfrage))

{
echo "
<tr>
<td class='datum'>".date("<b>d.m.Y</b> H:i", strtotime($ergebnis->datum))."&nbsp;Uhr</td>
<td class='event'>".$ergebnis->event."</td>
<td class='ort'>".$ergebnis->ort."<a href=\"http://#?id=".$ergebnis->ID."\"> mehr ...</td>
</tr>
";
}
?>
</table

Ich habe schon ein paar Dinge probiert, aber hab damit eher mehr kaputt gemacht.

asipak4you
27.05.2009, 14:46:59
Hier:
echo "
<tr>
<td class='datum'>".date("<b>d.m.Y</b> H:i", strtotime($ergebnis->datum))."&nbsp;Uhr</td>
<td class='event'>".$ergebnis->event."</td>
<td class='ort'>".$ergebnis->ort."<a href=\"http://#?id=".$ergebnis->ID."\"> mehr ...</td>
</tr>
";
echo aufteilen:
echo '<tr>';
echo '<td class="datum">' . date("<b>d.m.Y</b> H:i", strtotime($ergebnis->datum)) . '&nbsp;Uhr</td>';
echo '<td class="event">' . $ergebnis->event . '</td>';
echo '<td class="ort">';
echo $ergebnis->ort;
if (trim($ergebnis->info) != '') {
echo '<a href="http://#?id=' . $ergebnis->ID . '"> mehr ...';
}
echo '</td>';
echo '</tr>';
Das macht es übersichtlicher finde ich und man findet schneller die Stelle an welche die Bedingung gehört ;)

EDIT:

Bitte lies dir noch diesen Teil im Praxisbuch durch, wo du mit If-Anweisungen vertraut gemacht wirst: If-Anweisung (http://selfphp.de/praxisbuch/praxisbuchseite.php?site=127&group=25)

CocaCola
27.05.2009, 17:21:22
Ok, habe mir die Anleitung gut durchgelesen.

Und der Code funktioniert jetzt auch, hatte zuerst noch vergessen die Spalte "info" auch auszulesen.

Jetzt habe ich aber noch ein letztes Problem.

Und zwar möchte ich diese Infoseite in eine andere Seite.php includen.
Das habe ich auch erfolgreich gemacht und zwar mit diesem Code:

<?php
/*
Template Name: Eventinfo
*/
?>
<?php get_header() ?>

<div id="container">
<div id="content">

<? include ("event_info.php"); ?>

</div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar() ?>

<?php get_footer() ?>

Die Überschriften werden mit ausgelesen, Stlyes werden übernommen, aber der Inhalt der Spalte "info" wird nicht ausgegeben.
(Auf der Infoseite soll nur "info" ausgegeben werden.)

asipak4you
27.05.2009, 17:36:42
Hallo,

wo hast du denn jetzt das Problem?

PS.

So etwas hier

?>
<?php funktion(); ?>
<?php echo 'blub'; ?>
<?php //etc.

tut man nicht.

Wenn zwischen ?> und <?php kein Code steht, kannst du diese weglassen!

=>
<?php
funktion();

echo 'blub';

//etc.
?>
funktioniert genauso und sieht auch noch schöner aus!

CocaCola
27.05.2009, 19:25:37
Ok, dann werd ich das in Zukunft so machen, danke für den Tipp! :)

Also mein Problem ist, dass ich ja jetzt über den Link "mehr" zu einer neuen Seite gelange, auf der der oben genannte Code includet wird.

Und zwar die event_info.php in die event_info_seite.php

event_info.php:

<table>
<tr>
<td class="info"><b>Mehr Infos zu diesem Event</b></td>
</tr>
<?
$abfrage = mysql_query("
SELECT info FROM eventliste WHERE ID = '".$_GET["ID"]."'");

//Für jedes Ergebnis eine eigene Zeile in der Tabelle
while($ergebnis = mysql_fetch_object($abfrage)){
echo "
<tr>
<td class='info2'>".$ergebnis->info."</td>
</tr>
";
}
?>
</table>

In meine event_info_seite.php

<?php
/*
Template Name: Eventinfo
*/
?>
<?php get_header() ?>

<div id="container">
<div id="content">

<? include ("event_info.php"); ?>

</div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar() ?>

<?php get_footer() ?>

Das Problem ist nun, dass zwar der Text "Mehr Infos zu diesem Event" angezeigt wird, aber alles was in "info" steht nicht. Die Spalte wir nach dem includen gar nicht mehr ausgegeben. Wenn ich sie nicht include gehts.