Seite 1 von 1

Anzeige auf HTML-Seite abhängig von Auswahl in Drop-Down

Verfasst: 22.11.2010 18:58
von Eurodiver
Hallo,

ich würde gerne je nach Auswahl in meiner Drop-Down Liste 2 verschiedene Tabellenausgaben in meiner HTML-Datei anzeigen:

Code: Alles auswählen

 
<?php
....
$_pfarre = $_POST["pfarre"];
$_jahr = $_POST["jahr"];
$_nachname = $_POST["nachname"];
$_vorname = $_POST["vorname"];

$matrikenart = $_POST["matrikenart"];
$selected[$matrikenart] = "selected";

mysql_set_charset("utf8");

if($matrikenart == "1") {
$query = "SELECT * FROM sm_ind_bapt_view WHERE pfarre_deutsch='%$_pfarre%' OR jahr='$_jahr' OR vorname LIKE '%$_vorname%' OR nachname LIKE '%$_nachname%' ORDER BY jahr LIMIT 20";
$result = mysql_query($query);
}

elseif($matrikenart == "2") {
$query = "SELECT * FROM sm_ind_marr_view WHERE pfarre_deutsch='%$_pfarre%' OR jahr='$_jahr' OR nn_ehemann LIKE '%$_nachname%' OR vn_ehemann LIKE '%$_vorname%' ORDER BY jahr";
$result = mysql_query($query);
}

else {
$query = "SELECT * FROM sm_ind_per_view WHERE pfarre_deutsch='%$_pfarre%' OR jahr='$_jahr' OR nachname LIKE '%$_nachname%' OR vorname LIKE '%$_vorname%' ORDER BY jahr";
$result = mysql_query($query);
}

while ($row = mysql_fetch_array($result)) 
{
    $template->assign_block_vars('block_name', array( 
            'PARISH'             => $row['pfarre_deutsch'],  
            'YEAR'               => $row['jahr'],
            'URL'                => $row['url'],
            'SURNAME'            => $row['nachname'],
            'FORENAME'           => $row['vorname'],
            'USERNAME'           => $row['username'],
            'SN_MALE'            => $row['nn_ehemann'],
            'FN_MALE'            => $row['vn_ehemann'],
            'SN_FEMALE'          => $row['nn_ehefrau'],
            'FN_FEMALE'          => $row['vn_ehefrau'],
        ));

....
?>
}

Datei: Ausgabe.html

Code: Alles auswählen

<!-- INCLUDE overall_header.html --> 
	<div class="content">
<h2 class="solo">{L_MY_TITLE}</h2></div>
<br /><br />
<form method="post" action="new_page.php"> 

<div class="forumbg forumbg-table">
 <div class="inner"><span class="corners-top"><span></span></span>
<table class="table1" cellspacing="1">

    <tr>  
        <th>{L_PARISH}</th>  
        <th>{L_YEAR}</th>  
        <th>{L_ARCHIV}</th> 
        <th>{L_SURNAME}</th> 
        <th>{L_FORENAME}</th> 
        <th>{L_USERNAME}</th> 
    </tr>  

    <!-- BEGIN block_name -->  

    <tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">  
        <td>{block_name.PARISH}</td>  
        <td>{block_name.YEAR}</td>  
        <td>{block_name.URL}</td>  
        <td>{block_name.SURNAME}</td>  
        <td>{block_name.FORENAME}</td>  
        <td>{block_name.USERNAME}</td>    
    </tr>  

    <!-- END block_name -->  

</table>  
<span class="corners-bottom"><span></span></span>
</div></div>
<br/>
<br/>

<div class="forumbg forumbg-table">
 <div class="inner"><span class="corners-top"><span></span></span>
<table class="table1" cellspacing="1">

    <tr>  
        <th>{L_PARISH}</th>  
        <th>{L_YEAR}</th>  
        <th>{L_ARCHIV}</th> 
        <th>{L_SN_MALE}</th> 
        <th>{L_FN_MALE}</th>
         <th>{L_SN_FEMALE}</th> 
        <th>{L_FN_FEMALE}</th>  
        <th>{L_USERNAME}</th> 
    </tr>  

    <!-- BEGIN block_name -->  

    <tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">  
        <td>{block_name.PARISH}</td>  
        <td>{block_name.YEAR}</td>  
        <td>{block_name.URL}</td>  
        <td>{block_name.SN_MALE}</td>  
        <td>{block_name.FN_MALE}</td>
        <td>{block_name.SN_FEMALE}</td>  
        <td>{block_name.FN_FEMALE}</td>
        <td>{block_name.USERNAME}</td>    
    </tr>  

    <!-- END block_name -->  

</table>  
<span class="corners-bottom"><span></span></span>
</div></div>
<br/>
<br/>
<input type="submit" name="submitbutton" id="submitbutton" value="neue Suche" height="50" width="100" style="width:100px; height:50px />
 <br /><br />
<!-- INCLUDE overall_footer.html --> 
Was muss ich in der HTML-Datei einfügen, damit ich je nach Auswahl nur die dazupassende Tabelle angezeigt bekomme?

Viele Grüße
Ernst

Re: Anzeige auf HTML-Seite abhängig von Auswahl in Drop-Down

Verfasst: 22.11.2010 23:09
von cYbercOsmOnauT
Hallo Ernst,

so ganz kann ich Dir nicht folgen. Deine Codeblöcke erklären sich für mich nicht selbst. Zumal Du im falschem Forum schreibst. Bevor ich es verschiebe noch ein Hinweis von mir. POST/GET-Daten die in einer SQL verwendet werden sollten immer bereinigt werden. Hierzu wirf bitte dringend einen Blick auf folgende PHP Befehle: mysql_real_escape_string, addslashes, htmlspecialchars Du öffnest so wie Dein Code ist SQL Injection Attacken Tür und Tor.

Viele Grüße,
Tekin

Re: Anzeige auf HTML-Seite abhängig von Auswahl in Drop-Down

Verfasst: 24.11.2010 19:51
von Eurodiver
HalloTekin,

vielen Dank für deinen Hinweis bezüglich falschem Forum (bitte verschiebe es ins richtige) und der SQL-Injection-Attacken Gefahr durch mysql_real_escape_string, addslashes und htmlspecialchars, ich werde das gleich versuchen zu beheben!

Bezüglich meines leider nicht von selbst erklärenden Problems:

Kurz gesagt, wenn in meinem php-Skript folgende Abfrage durchgeführt wird

Code: Alles auswählen

...
elseif($matrikenart == "2") {
$query = "SELECT * FROM sm_ind_marr_view WHERE pfarre_deutsch='%$_pfarre%' OR jahr='$_jahr' OR nn_ehemann LIKE '%$_nachname%' OR vn_ehemann LIKE '%$_vorname%' ORDER BY jahr";
$result = mysql_query($query);
...
soll auf meiner html-Seite

Code: Alles auswählen

....
<div class="forumbg forumbg-table">
 <div class="inner"><span class="corners-top"><span></span></span>
<table class="table1" cellspacing="1">

    <tr>  
        <th>{L_PARISH}</th>  
        <th>{L_YEAR}</th>  
        <th>{L_ARCHIV}</th> 
        <th>{L_SURNAME}</th> 
        <th>{L_FORENAME}</th> 
        <th>{L_USERNAME}</th> 
    </tr>  

    <!-- BEGIN block_name -->  

    <tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">  
        <td>{block_name.PARISH}</td>  
        <td>{block_name.YEAR}</td>  
        <td>{block_name.URL}</td>  
        <td>{block_name.SURNAME}</td>  
        <td>{block_name.FORENAME}</td>  
        <td>{block_name.USERNAME}</td>    
    </tr>  
    <!-- END block_name -->  
</table>
...
 
angezeigt werden, ansonsten

Code: Alles auswählen

...
<div class="forumbg forumbg-table">
 <div class="inner"><span class="corners-top"><span></span></span>
<table class="table2" cellspacing="1">

    <tr>  
        <th>{L_PARISH}</th>  
        <th>{L_YEAR}</th>  
        <th>{L_ARCHIV}</th> 
        <th>{L_SN_MALE}</th> 
        <th>{L_FN_MALE}</th>
         <th>{L_SN_FEMALE}</th> 
        <th>{L_FN_FEMALE}</th>  
        <th>{L_USERNAME}</th> 
    </tr>  

    <!-- BEGIN block_name -->  

    <tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">  
        <td>{block_name.PARISH}</td>  
        <td>{block_name.YEAR}</td>  
        <td>{block_name.URL}</td>  
        <td>{block_name.SN_MALE}</td>  
        <td>{block_name.FN_MALE}</td>
        <td>{block_name.SN_FEMALE}</td>  
        <td>{block_name.FN_FEMALE}</td>
        <td>{block_name.USERNAME}</td>    
    </tr>  
    <!-- END block_name -->  
</table>  
Eben so wie das bei phpbb3 in der meberlist.php und meberlist_body.html realisiert ist.
Ich hoffe du kannst mir hier weiterhelfen!

Danke,
Ernst