Variable bei Suche über Anfangsbuchstaben bleibt leer

elch2

Grünschnabel
hi,

wenn ich meine liste1.php -Artikelliste öffne zeigt die Standardsuche alle Artikel dieses Kunden.
Über eine Alphabetzeile im Kopf
A | B | C | D | E F G H I J K L ....

möchte ich eine neue Suche auslösen wo alle Artikel gefunden werden die mit diesen, geklickten Buchstaben im Artikelnamen beginnen.
Klicke ich auf den Buchstaben "B" werden Artikel gefunden die mit "B" beginnen.
Die Suche über Anfangsbuchstaben soll auf der gleichen Seite erfolgen, es soll keine neue Seite geöffnet werden.

Mein Problem, irgendwie wird die Variable die in der URL angehängt wird, nicht angenommen, zumindest bleibt die Variable leer.

PHP:
// Kopfbereich
echo "<td width=320><COLSPAN=2><center>$x0<u><b>Bestell-Liste</b></u><br>";
   echo "$x2 <FORM ACTION=\"\" METHOD=POST><A HREF=?buchsta=A&buchsta2=A>A</A> |";
   echo "$x2 <FORM ACTION=\"\" METHOD=POST><A HREF=?buchsta=B&buchsta2=B>B</A> |";
   echo "$x2 <FORM ACTION=\"\" METHOD=POST><A HREF=?buchsta=C&buchsta2=C>C</A> |";
   echo "$x2 <FORM ACTION=\"\" METHOD=POST><A HREF=?buchsta=D&buchsta2=D>D</A> |";
   echo "$x2 <A HREF=?buchsta=E&buchsta2=E>E</A>";
   echo "$x2 <A HREF=?buchsta=F&buchsta2=F>F</A>";
   echo "$x2 <A HREF=?buchsta=G&buchsta2=G>G</A>";
   echo "$x2 <A HREF=?buchsta=H&buchsta2=H>H</A>";
   echo "$x2 <A HREF=?buchsta=I&buchsta2=I>I</A>";
   echo "$x2 <A HREF=?buchsta=J&buchsta2=J>J</A>";
   echo "$x2 <A HREF=?buchsta=K&buchsta2=K>K</A>";
   echo "$x2 <A HREF=?buchsta=L&buchsta2=L>L</A>";
# ....

// Übergabe der URL-Variable:
if (isset($_POST["buchsta"])) {
    $buchsta = $_GET["buchsta"];
}


// Test
echo "Buchstabe..: $buchsta <br>";

Fülle ich die Variable fest mit dem Buchstaben "B" werden auch alle
Artikel die mit "B" beginnen gefunden.
Die URL mit dem angehängtem Link sieht z.B. so aus:
HTML:
http://www.domain.de/liste1.php?buchsta=B&buchsta2=B

was mache ich falsch?
 
Eigentlich schon beantwortet, der vollständigkeit halber nur noch zu ergänzen:
Falls die Übergabe mittels post oder get stattfinden kann eignet sich hierfür $_REQUEST, welches die Variablen $_POST als auch $_GET enthält.

http://php.net/manual/de/reserved.variables.request.php

Edit:
Die Variable muss natürlich vorher auch entsprechend definiert werden:
PHP:
$buchsta=array_item($_POST, 'buchsta');


function array_item($ar, $key)
{
    if(is_array($ar) && array_key_exists($key, $ar))
    {
        if(get_magic_quotes_gpc())
        {
            return trim(stripslashes($ar[$key]));
        }
        else
        {
            return $ar[$key];
        }
    }
}
 
Zuletzt bearbeitet:
Weiterhin eine Frage dazu, auch wenn schon alles klar ist. Wozu benutzt du ein Formular für die Übergabe der Variablen? Es geht auch einfacher, ich habe es mal so gelöst:

PHP:
echo "<a href='seite.php?buchstabe=b'>B</a>

if (isset($_GET["buchstabe"])){

query = "SELECT * from tabelle where name = '$_GET[buchstabe]%' "

}
 
@Sunny1245

In deinem Code sind aber etliche Fehler ...

echo wird nicht mit "; abgeschlossen
Die SQL-Syntax muss name LIKE ... heissen
und Injection-sicher escaped werden!
PHP:
echo $x2"<a href='seite.php?buchsta=a'>A</a>";
echo $x2."<a href='seite.php?buchsta=b'>B</a>";
echo $x2."<a href='seite.php?buchsta=c'>C</a>";
//usw.

$buchsta=array_item($_POST, 'buchsta');

 
if (isset($buchsta) && !empty($buchsta))
{

    $str=$mysqli->real_escape_string($buchsta);
    $query="SELECT * from tabelle where name LIKE '$str%'";
    $result=$mysqli->query($query);


    while($row=$result->fetch_object())
    {
        // ...restlicher code ...
    }

} 




function array_item($ar, $key)
{
    if(is_array($ar) && array_key_exists($key, $ar))
    {
        if(get_magic_quotes_gpc())
        {
            return trim(stripslashes($ar[$key]));
        }
        else
        {
            return $ar[$key];
        }
    }
}


@elch2

Woher kommt eigentlich die Variable $x2 ?
Und wofür benötigst du noch buchstabe2 ?
 
@Sunny1245

In deinem Code sind aber etliche Fehler ...

Entschuldige das ich ein Beispiel ebenmal so hingeklatscht habe. Natürlich habe ich in den 30 Sekunden in denen ich das geschrieben habe nicht auf irgendwelche Semikolons oder SQL-Injections geachtet. Das mit dem LIKE ist okay, den Fehler mache ich öfters mal bevor ich dann nach halbstündiger suche doch das LIKE einfällt. Denndoch darfst du sowas eher als PSEUDOCODE, als funktionierens Script betrachten. Es soll ja nicht jeder hier einfach rauskopieren und sich dann meiner arbeit erfreuen um zwei Tage später den selber Fehler nochmal zu posten weil er nicht verstanden hat...
 
@ Sunny1245
war ja nicht böse gemeint und ich weis ja auch das du es kannst :-)
Und drittens hast du natürlich auch recht.
Man sollte nicht alles auf dem Präsentierteller servieren...
 
Zurück