GET Parameter durch Formular schleusen (bzw anhängen)

Biergamasda

Erfahrenes Mitglied
Hi Leute!

Also, ich hab ein Problem bei folgender Seite
http://biergamasta.bi.ohost.de/branchenratgeber/

Wenn man auf der Startseite auf die Karte klickt, erscheinen Ergebnisse mit einem Vorangehenden Suchfeld - so weit so gut :)

Das Formular wird nur angezeigt, wenn gewisse GET Parameter gesetzt sind. Diese müssen dann durch das Formular durchgeschleust werden, und zusätzlich sollten die Felder des formulars ebenfalls als GET Parameter angehängt werden.

Jetzt wollte ich Fragen was ich machen muss, um das zu verwirklichen, und ob das mit reinem PHP und HTML überhaupt möglich ist.

Vielen Dank schon im Voraus

PS: Die relevanten Codeausschnitte

index.php:
PHP:
<div id="content">
                    <h1>Mit nur wenigen Klicks zum gew&uuml;nschten Ergebnis</h1>
                    <?php
                    $am = $_GET["am"];
                    $um = (isset($_GET["um"]) == true) ? $_GET["um"] : 0;

                    if (!isset($_GET["bl"])) {
                        include 'contents/'.$am.$um.'.php';
                    } else {
                        include "contents/search.php";
                    }
                    ?>
                </div>
und die suche selbst:
PHP:
<?php
require_once("functions.php");

/*$am = $_GET["am"];
$um = $_GET["um"];*/
$land = $_GET["bl"];
$firmenname = $_GET["firmenname"];
$plz = $_GET["plz"];
$ort = $_GET["ort"];
$produkt = $_GET["produkt"];
$branche = $_GET["branche"];

echo createSearch($am, $um, $land, $firmenname, $plz, $ort, $produkt, $branche);

echo createInseratMuster();

echo findInserate($land, $firmenname, $plz, $ort, $produkt, $branche);
?>
zu guter letzt noch die verwendeten Funktionen:
PHP:
<?php
require_once("sqlfunctions.php");

function createInseratMuster() { //Muster für ein Inserat
    $str = "<p>
            <table id='muster' border='1'>

            <tr class='inseratHead'>
                <th> Muster GmbH </th>
                <th> Musterleistungen </th>
                <th> Tirol </th>
                <th> Kitzbühel </th>
                <th> Hier anklicken f&uuml;r: </th>
            </tr>

            <tr>
                <td class='inseratFett'> Firmenname </td>
                <td class='inseratNormal'> Muster GmbH </td>
                <td class='inseratFett' rowspan='2'> Produktkategorie </td>
                <td class='inseratNormal'rowspan='2'> Musterkategorie </td>
                <td class='inseratLinks'> <a href=''> Detailinfo </a> </td>
            </tr>

            <tr>
                <td class='inseratFett'> Ansprechperson </td>
                <td class='inseratNormal'> Andreas Mustermann </td>
                <td class='inseratLinks'> <a href=''> Routenplaner </a> </td>
            </tr>

            <tr>
                <td class='inseratFett'> PLZ / Ort </td>
                <td class='inseratNormal'> Kitzbühel </td>
                <td class='inseratFett' rowspan='2'> Produktnamen </td>
                <td class='inseratNormal' rowspan='2'> Musterprodukte </td>
                <td class='inseratLinks'> <a href=''> Online Dienstleistungs-Angebot </a> </td>
            </tr>

            <tr>
                <td class='inseratFett'> Strasse / Gasse </td>
                <td class='inseratNormal'> Musterplatz 12 </td>
                <td class='inseratLinks'> <a href=''> TOP Angebote </a> </td>
            </tr>

            <tr>
                <td class='inseratFett'> Tel-Nr </td>
                <td class='inseratNormal'> 01234/56789 </td>
                <td class='inseratFett'> Mobil </td>
                <td class='inseratNormal'> 0676/321456 </td>
                <td class='inseratLinks' rowspan='2'> <a href=''> Homepage </a> </td>
            </tr>

            <tr>
                <td class='inseratFett'> Fax-Nr </td>
                <td class='inseratNormal'> 01234/91011 </td>
                <td class='inseratFett'> Email </td>
                <td class='inseratNormal'> geld@aon.at </td>
            </tr>

        </table>
    </p>";

    return $str;
}

function findInserate($land, $firmenname, $plz, $ort, $produkt, $branche) { //Liest alle Inserate aus $entries heraus und gibt diese in Form der Anzeige zurück
    $entries = getInserate($land, $firmenname, $plz, $ort, $produkt, $branche);

    if ($entries != null) {
        foreach($entries as $entry) {
            $str = "<p>
                    <table class='inseratTable' border='1'>

                        <tr class='inseratHead'>
                            <th>".$entry["firmenname"]."</th>
                            <th>".$entry['branche']."</th>
                            <th>".$entry['bundesland']."</th>
                            <th>".$entry['ort']."</th>
                            <th> Hier anklicken f&uuml;r: </th>
                        </tr>

                        <tr>
                            <td class='inseratFett'> Firmenname </td>
                            <td class='inseratNormal'>".$entry['firmenname']."</td>
                            <td class='inseratFett' rowspan='2'> Produktkategorie </td>
                            <td class='inseratNormal' rowspan='2'>".$entry['produktKategorie']."</td>
                            <td class='inseratLinks'> <a href=''> Detailinfo </a> </td>
                        </tr>

                        <tr>
                            <td class='inseratFett'> Ansprechperson </td>
                            <td class='inseratNormal'>".$entry['ansprechperson']."</td>
                            <td class='inseratLinks'> <a href=''> Routenplaner </a> </td>
                        </tr>


                            <tr>
                            <td class='inseratFett'> PLZ / Ort </td>
                            <td class='inseratNormal'>".$entry['plz'] . ' ' . $entry['ort']."</td>
                            <td class='inseratFett' rowspan='2'> Produktnamen </td>
                            <td class='inseratNormal' rowspan='2'>".$entry['produktNamen']."</td>
                            <td class='inseratLinks'> <a href=''> Online Dienstleistungs-Angebot </a> </td>
                        </tr>

                        <tr>
                            <td class='inseratFett'> Strasse / Gasse </td>
                            <td class='inseratNormal'>".$entry['strasse']."</td>
                            <td class='inseratLinks'> <a href=''> TOP Angebote </a> </td>
                        </tr>

                        <tr>
                            <td class='inseratFett'> Tel-Nr </td>
                            <td class='inseratNormal'>".$entry['telNr']."</td>
                            <td class='inseratFett'> Mobil </td>
                            <td class='inseratNormal'>".$entry['mobil']."</td>";

            if ($entry['homepage'] != null) {
                $hp = 'http://' . $entry['homepage'];
            } else {
                $hp = '';
            }
            $str .= "<td class='inseratLinks' rowspan='2'> <a href='<?php echo $hp; ?>'> Homepage </a> </td>
                        </tr>

                        <tr>
                            <td class='inseratFett'> Fax-Nr </td>
                            <td class='inseratNormal'>".$entry['faxNr']."</td>
                            <td class='inseratFett'> Email </td>
                            <td class='inseratNormal'>".$entry['email']."</td>
                        </tr>

                    </table>
                </p>";
        }
    } else {
        $str = "Keine Treffer!";
    }
    return $str;
}

function getInserate($land, $firmenname, $plz, $ort, $produkt, $branche) {
    $con = new sqlConnect;
    $con->connect();

    $entries = $con->getInserate($land, $firmenname, $PLZ, $ort, $produktname, $branche);
    return $entries;
}

function createSearch($am, $um, $land, $firmenname, $plz, $ort, $produkt, $branche) {
    $con = new sqlConnect;
    $con->connect();        //establish a connection to the Database

    $str = "<form acion='".basename($_SERVER['PHP_SELF']) . '?am=' . $am . '&um=' . $um . '&land='. $land."' method='GET'>
    <table border='1'>
        <tr>
            <td> Bundesland </td>
            <td colspan='2'>
            <select name='bl'>
                <option value='0'> Ganz &Ouml;sterreich </option>";
    $bls = $con->getBundeslaender();
    foreach ($bls as $bl) {
        $str .= "<option value='$bl[0]'".(($bl[0] == $land) ? " selected='selected'" : "").">$bl[1]</option>";
    }

    $str .= "</select>
        </tr>
        <tr>
            <td> Firmenname </td>
            <td colspan='2'> <input type='text' name='firmenname' value='$firmenname'/> </td>
        </tr>
        <tr>
            <td> PLZ/Ort </td>
            <td> <input type='text' name='plz' value='$plz'/> </td>
            <td> <input type='text' name='ort' value='$ort'/> </td>
        </tr>
        <tr>
            <td> Produkt </td>
            <td colspan='2'> <input type='text' name='produkt' value='$produkt'/> </td>
        </tr>
        <tr>
            <td> Branche </td>
            <td colspan='2'> <input type='text' name='branche' value='$branche'/> </td>
        </tr>
        <tr>
            <td colspan='3'>
                <input type='submit' value='Suchen' />
            </td>
        </tr>
        </table>
        </form>";
    return $str;
}
?>
 
Probiere es einfach mit Sessions. Get Parameter sind nur für den jeweiligen Seitenaufruf haltbar, das gleiche gilt für Postvariablen. Möchtest du trotzdem damit weiter arbeiten benötigst du eine Session. Einen Sonderfall stellt die header Funktion da, mit ihr kannst du auf eine Seite weiterleiten, mit den jeweiligen Get Parametern.
 
Das mit den Sessions ist mir schon klar, und dass GET Parameter nur für die nachfolgende Seite sind ist mir auch klar, daraus entsteht das Problem ja erst *g*

Wollte nur wissen, obs möglich ist, ein formular so zu konfigurieren, dass es die Formulardaten an die URL anhängt, und dies in einer Art und Weise, die auch funktioniert wenn bereits GET Parameter in der URL sind.

Habe die Absicht, alles über direktlinks erreichen zu können, und möchte, wenn es nicht unbedingt notwendig ist, nicht 2 Varianten (also mit GET Params und Sessions) implementieren.

lg
 
Ja natürlich....

HTML:
<form  method="get" action="blabla.php?bla=1&blabla=2" name="Form" id="Form">

EDIT: Formulardaten können nur übergeben werden wenn das Formular abgeschickt wurde. Einzige Möglichkeit ist Javascript!
 
Zuletzt bearbeitet von einem Moderator:
Wenn du GET-Parameter durch ein Formular durchschleusen willst, machst das am besten mit hidden inputs:
PHP:
<input type="hidden" name="<?php echo "variablenname" ?>" value="<?php echo $_GET['deinevariable'] ?>">

Muss gestehen, dass ich die zeile gerade nicht getestet habe, aber das Prinzipt sollte klar werden.

Gruß,
Marius
 
Hier habe ich ja im Prinzip genau das gleiche

HTML:
"<form acion='".basename($_SERVER['PHP_SELF']) . '?am=' . $am . '&um=' . $um . '&land='. $land."' method='GET'>"

Das Problem ist nur, dass das nicht funktioniert, wieso weis ich selber nicht so genau.

Der wirft mir immer die Parameter die ich in der URL angegeben habe weg. Anzusehen unter
http://biergamasta.bi.ohost.de/branchenratgeber/contents/search.php

lg

//edit

ah, sry, habs erst zu spät gesehen. Auf die idee bin ich noch gar nicht gekommen, is aber gut :D - müsste echt funktionieren....

Werds mal probieren dann meld ich mich wieder

bis dann :)


//Edit2

Habs probiert und es funktioniert, danke
Wieso bin ich nicht selber drauf gekommen... *grml*
 
Zuletzt bearbeitet:
Für hidden Felder mußt du das Formular per Post abschicken, warum machst du es nicht einfach so.

HTML:
<form  method="get" action="blabla.php?bla=<?=$_REQUEST['bla']?>&blabla=<?=$_REQUEST['blabla']?" name="Form" id="Form">
 
Zuletzt bearbeitet von einem Moderator:
Zurück