Zur Navigation

Textdatei mit Filter

1 uwe

Hallo,
ich habe ein Linksammlung als Textdatei.
und will diese mit Filter aufrufen.
Das normale Aufrufen geht, aber der Filter geht nicht.

Gruss
Uwe



Den Aufruf könnte ich mir so vorstellen:

<td
<br><a href="link.php?filter=Alpen">Alplen</a>
<br><a href="link.php?filter=Berlin">Berlin</a>
</td>



<!-- Hier jetzt die Textdatei ------------------------------------------------------------------------ -->

Nr/Region/Namewww/Adresse/Link/Thumb/hoehe/breite
3/Berlin/Philharmonie.de/17.01.2006/philharmonie/philharmonie/50/150
1/Berlin/Artemis.de/11.11.2005/artemis-treppenhaus/artemis-treppenhaus/50/150
3/Berlin/Brandenburger_Tor.de/21.10.2005/brandenburger-tor2/brandenburger-tor2/50/150
4/Alpen/Fuscher_Törl.de/15.08.2005/grossglockner-fuscher-toerl/grossglockner-fuscher-toerl/50/150

<!-- Hier jetzt die PHP Datei zum einlesen ------------------------------------------------------------------------ -->

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
foreach($_GET as $getkey => $getvalue)
$$getkey = $getvalue;
foreach($_POST as $postkey => $postvalue)
$$postkey = $postvalue;

$datenbank= file('daten.txt');
$summe=count($datenbank);

/*
Folgende Bezeichnungen verwenden:
Panoramanummer  = $zeile
Region    = $feld[1]
Namewww    = $feld[2]
Datum     = $feld[3]
Beschreibung = $feld[4]
Thumblink    = $feld[5]
hoehe     = $feld[6]
breite    = $feld[7]
*/
?>

<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Panoramas</title>
</head>

<body>
<div align="center">

  
   <table cellpadding="5"> 

     <?php for($zeile=1;$zeile<$summe;$zeile++){$feld=explode('/',$datenbank[$zeile]); ?>
<!-- Anfang Schleife ------------------------------------------------------------------------ --> 
<!-- Hier der Filter funktioniert nicht!!--------------------------------------------------------------------- --> 

   if (<?php "$feld[1]" ?> == '$filter')
    {
 <tr>
  <td>
   <a href="<?php echo "$zeile" ?>" >
   <img src="thumbs/<?php echo "$feld[5].jpg" ?>" alt="" height="<?php echo "$feld[6].jpg" ?>" width="<?php echo "$feld[7].jpg" ?>" border="0">
     
  </td>
  <td>
   <?php echo "$feld[1]" ?><br> 
   <a href="http://www.<?php echo "$feld[2]" ?>">
    <?php echo "$feld[4]" ?>
   </a>
   
 
  </td>
 </tr>
 } 
<!-- Ende Schleife -------------------------------------------------------------------------------------- -->
     <?php echo "\n"; } ?>
   </table> 
<div> 
  </body>
</html>

[Edit Jörg: Code-Abschnitte zur besseren Lesbarkeit in Code-Blöcke gesetzt]

30.10.2007 19:31 | geändert von Jörg: 31.10.2007 11:09

2 Jörg Kruse

Die Elemente der if Konstruktion gehören zum PHP-Code und müssen entsprechend innerhalb von <?php ?> aufgeführt werden

<!-- Anfang Schleife ------------------------------------------------------------------------ --> 
<!-- Hier der Filter funktioniert nicht!!--------------------------------------------------------------------- --> 
<?php
  if ( $feld[1]  == '$filter')
   {
   ?>
<?php
}
?>
<!-- Ende Schleife
(und die Kommentare könntest du gegebenfalls auch noch mit als PHP-Kommentare in den PHP-Abschnitt packen)

31.10.2007 11:22

3 uwe

Hallo Jörg,
danke!
Ich habe jetzt eine
>>aufruf.php
die dann die Seite index.php mit dem Filter startet.

Wie macht man das jetzt, wenn oben im oberen Bereich
der Seite
das "Auswählen" stehen soll. Wie z.B. jetzt
<a href="index.php?filter=Alpen">Alpen</a><br />
<a href="index.php?filter=Berlin">Berlin</a><br />
und dadrunter dann das gefilterte erscheinen soll?

Mit einem klicken auf den Menuepunkt soll sofort unten der Link sich ändern. (wie jetzt auch)
Gruss
Uwe

-----------------
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php




foreach($_GET as $getkey => $getvalue)
$$getkey = $getvalue;
foreach($_POST as $postkey => $postvalue)
$$postkey = $postvalue;

$datenbank= file('daten.txt');
$summe=count($datenbank);

/*
Folgende Bezeichnungen verwenden:
Panoramanummer  = $zeile
Region    = $feld[1]
Namewww    = $feld[2]
Datum     = $feld[3]
Thumblink    = $feld[4]
Beschreibung = $feld[5]
hoehe     = $feld[6]
breite    = $feld[7]
*/
$filter = $_GET[filter];

?>


<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Linksammlung</title>
</head>

<body>
<div align="center">

  
   <table cellpadding="5"> 

     <?php for($zeile=1;$zeile<$summe;$zeile++){$feld=explode('|',$datenbank[$zeile]); ?>
<!-- Anfang Schleife ------------------------------------------------------------------------ --> 
<!-- Hier der Filter  !!--------------------------------------------------------------------- --> 


<?php
 if ( $feld[1]  == $filter)
  {
  ?>

    <tr>
  <td>
    <img src="thumbs/<?php echo "$feld[4].jpg" ?>" alt="" height="<?php echo "$feld[6].jpg" ?>" width="<?php echo "$feld[7].jpg" ?>" border="0">
     
  </td>
  <td>
   <?php echo "$feld[1]" ?><br> 
   <a href="http://www.<?php echo "$feld[2]" ?>">
    <?php echo "$feld[4]" ?>
   </a>
   
 
  </td>
 </tr>

<?php
}
?> 
<!-- Ende Schleife -------------------------------------------------------------------------------------- -->
     <?php echo "\n"; } ?>
   </table> 
<div> 
  </body>
</html>


----------------------------
aufruf.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Linksammlung</title>
</head>
<body>

<a href="index.php?filter=Alpen">Alpen</a><br />
<a href="index.php?filter=Berlin">Berlin</a><br />

  </body>
</html>

[Edit Jörg: Code-Abschnitte in Code-Blöcke gesetzt]

01.11.2007 07:23 | geändert von Jörg: 01.11.2007 11:46

4 Jörg Kruse

Hallo uwe,

(insbesondere längere) Code-Abschnitte bitte in einen Code-Block setzen (zwischen [code] und [/code]), dann liest sich das leicher :).

Bin grad etwas im Stress, ich schau mir den Code später nochmal

01.11.2007 11:48

5 uwe

Hallo Jörg,
prima, ich warte gerne!

Das Aufrufen soll möglich auch für alte Browser klappen

Ich denke wenn man über eine Tablle geht, ist das universal aufrufbar.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="de-de">
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
  <meta content="Uwe" name="author">
</head>
<body>
<table style="width: 165px; height: 24px;" border="1"
 cellpadding="8" cellspacing="1">
  <tbody>
    <tr align="center">
      <th><a href="index.php?filter=Alpen">Alpen</a></th>
      <th><a href="index.php?filter=Berlin">Berlin</a></th>
    </tr>
  </tbody>
</table>
hier dann die Anzeige
</body>
</html>

01.11.2007 12:56 | geändert von Jörg: 25.12.2008 17:58

6 Jörg Kruse

Zitat von uwe
Ich habe jetzt eine
>>aufruf.php
die dann die Seite index.php mit dem Filter startet.

Wie macht man das jetzt, wenn oben im oberen Bereich
der Seite
das "Auswählen" stehen soll. Wie z.B. jetzt
<a href="index.php?filter=Alpen">Alpen</a><br />
<a href="index.php?filter=Berlin">Berlin</a><br />
und dadrunter dann das gefilterte erscheinen soll?

Indem du diese Links nicht in eine Extra-Seite (aufruf.php), sondern in derselben Seite (index.php) unterbringst? also oberhalb der Tabelle, in der die Ergebnisse ausgegeben werden.

Wenn die Ergebnisse unterhalb erst nach einem Klick auf einen Link erscheinen sollen, kann das Script prüfen, ob die Variable filter gesetzt ist

<a href="index.php?filter=Alpen">Alpen</a><br />
<a href="index.php?filter=Berlin">Berlin</a><br />

<?php
if (isset($_GET['filter'])) {
?>

<!-- Ausgabe der Ergebnisse -->

<?php
}
?>

Das Aufrufen soll möglich auch für alte Browser klappen

Ich denke wenn man über eine Tablle geht, ist das universal aufrufbar.

Inwiefern benötigen ältere Browser hierzu eine Tabelle?

01.11.2007 16:51

7 uwe

Hallo Jörg,

Die Meta sollen sich auch noch dynamisch ändern.
Aber die Variable ist an der Stelle noch nicht bekannt.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="de-de">
<head>
 <meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
 <meta content="Uwe" name="author">
<META NAME="REVISIT-AFTER" CONTENT="10 days">
<META NAME="audience" CONTENT="All">
<meta name="googlebot" content="index, follow">
<META NAME="expires" CONTENT="0">
<META NAME="robots" CONTENT="INDEX,FOLLOW">
<meta http-equiv="Content-Language" content="de-DE"> 

<title>Linksammlung <?php echo("$filter"); ?></title>
<?php
if $filter = "Berlin" {<META NAME="description" CONTENT="hier alles über Berlin">}
if $filter = "Alpen" {<META NAME="description" CONTENT="hier alles über die Alpen">}
?>
</head>

<table style="width: 680x; height: 24px;" border="1"
cellpadding="8" cellspacing="2">
   <tbody style="background-color: rgb(204, 255, 255);">
   <tr align="center">
     <th><a href="index.php?filter=Alpen">»Alpen«</a></th>
     <th><a href="index.php?filter=Berlin">»Berlin«</a></th>
      </tr>
 </tbody>
</table>


<br>



foreach($_GET as $getkey => $getvalue)
$$getkey = $getvalue;
foreach($_POST as $postkey => $postvalue)
$$postkey = $postvalue;

$datenbank= file('daten.txt');
$summe=count($datenbank);

/*
Folgende Bezeichnungen verwenden:
Panoramanummer  = $zeile
Region    = $feld[1]
Namewww    = $feld[2]
Datum     = $feld[3]
Thumblink    = $feld[4]
Beschreibung = $feld[5]
hoehe     = $feld[6]
breite    = $feld[7]
*/
$filter = $_GET[filter];

?>




<html>
<body>
<div align="center">

  
   <table cellpadding="5"> 

     <?php for($zeile=1;$zeile<$summe;$zeile++){$feld=explode('|',$datenbank[$zeile]); ?>
<!-- Anfang Schleife mit Filter------------------------------------------------------------------ --> 


<?php
 if ( $feld[1]  == $filter)
  {
  ?>

    <tr>
  <td>
    <img src="thumbs/<?php echo "$feld[4].jpg" ?>" alt="" height="<?php echo "$feld[6]" ?>" width="<?php echo "$feld[7]" ?>" border="0">
     
  </td>
  <td>
   <?php echo "$feld[1]" ?><br> 
   <a href="http://www.<?php echo "$feld[2]" ?>">
    <?php echo "$feld[4]" ?>
   </a>
   
 
  </td>
 </tr>

<?php
}
?> 
<!-- Ende Schleife -------------------------------------------------------------------------------------- -->
     <?php echo "\n"; } ?>
   </table> 
<div> 
  </body>
</html>

02.11.2007 10:09 | geändert von Jörg: 25.12.2008 17:59

8 Jörg Kruse

Du musst die Zuordnung dieser Variable entsprechend nach oben setzen

<?php
$filter = $_GET[filter];
if ($filter == "Berlin") {
echo '<META NAME="description" CONTENT="hier alles über Berlin">';
}
if ($filter == "Alpen") {
echo '<META NAME="description" CONTENT="hier alles über die Alpen">';
}
?>

02.11.2007 10:19 | geändert: 02.11.2007 10:21

9 Uwe (Gast)

Danke!!

Gruss
Uwe

02.11.2007 10:26

10 Ralph (Gast)

Hallo Jörg, hallo Uwe,

ich habe euern Skript auch ausprobiert und festgestellt, dass er im Doctype XHTML 1.0 unter Mozilla nicht funktioniert. Im IE alles kein Problem und mit HTML 4.01 funktioniert es überall. Nur dann gibt es Stress mit meinem CSS-Layout im IE. Ich habe jetzt schon ewig lang gegoogelt und herumprobiert, aber keine Lösung gefunden. Könnt ihr mir helfen und sagen warum es unter XHTML 1.0 nicht funktioniert?

Danke, Ralph

09.05.2009 16:39