String verändert sich bei GET

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String verändert sich bei GET

    Hallo,

    ich habe in folgendem String eine SQL-Anfrage:

    SELECT DISTINCT NAME FROM `dateien` WHERE AUTOR = '24'

    Das funktioniert erst mal wunderbar.
    Da aber die Suchergebnisse über mehrere Seiten verteilt werden, muss diese Abrfrage zusammen mit anderen Werten übergeben werden:

    Code:
    $ziel = $PHP_SELF;
    $ziel .= "?Einordnung=";
    $ziel .= $Einord;
    $ziel .= "&Anfang=";
    $ziel .= $anfang;
    $ziel .= "&Ende=";
    $ziel .= $ende;
    $ziel .= "&gefunden=";
    $ziel .= $gefunden;
    $ziel .= "&Suche=";
    $ziel .= $Suche;           <<--da
    echo "<form action=\"$ziel\" method=\"POST\">";
    Innerhalb des Forumulars werden dann noch andere Variablen festgelegt...
    Wenn ich nun das Formular abschicke, sind alle Variablen ordnungsgemäß da (die, die ich in $ziel deklariert habe und die im Forumlar stehen).

    aber die Abrage sieht nun so aus

    SELECT DISTINCT NAME FROM `dateien` WHERE AUTOR = \'24\'


    Das Forum zeigt das nicht an, aber vor den ' steht jeweils ein Backslash!

    Die Schrägstriche bekomm ich mit:

    $Suche = str_replace("\\","", $Suche);

    wieder raus, aber wenn meine Abfrage nun so aussieht:

    SELECT DISTINCT NAME FROM `dateien` WHERE NAME LIKE '%11%'

    bekomm ich, nachdem der replace-Befehl ausgeführt wurde ein

    SELECT DISTINCT NAME FROM `dateien` WHERE NAME LIKE '%'


    Woran liegt das und wie kann ich es besser machen?
    Zuletzt geändert von neogrande; 28.08.2003, 13:37.

  • #2
    verwende mal stripslashes() statt deinem replace, um das doppel-escape zu entfernen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Leider ändert das die Ausgabe nicht.

      LIKE '%11%' wird immernoch in LIKE '%' umgewandelt.

      Ich habe aber gerade mal getestet - ohne die Funktion würde das so aussehen:

      \'%\'

      die %11 wird also schon bei der Übergabe gekillt. Kann man das verhindern?
      Was soll denn das %-Zeichen bewirken?

      Kommentar


      • #4
        die %-Zeichen haben in URLs ne besondere Bedeutung (%20 ist z.B. ein Leerzeichen)

        PHP-Code:
        $ziel $PHP_SELF;
        $ziel .= "?Einordnung=";
        $ziel .= $Einord;
        $ziel .= "&Anfang=";
        $ziel .= $anfang;
        $ziel .= "&Ende=";
        $ziel .= $ende;
        $ziel .= "&gefunden=";
        $ziel .= $gefunden;
        $ziel .= "&Suche=";
        $ziel .= $Suche;           <<--da
        $ziel 
        urlencode($ziel);
        echo 
        "<form action=\"$ziel\" method=\"POST\">"
        probier mal so.

        http://php.net/urlencode
        hopka.net!

        Kommentar


        • #5
          sorry, das ich erst jetzt antworte, mein netz war nicht funktionstüchtig...

          mit urlencode kommt dann, dass das objekt nicht gefunden wird.
          ich habe das Problem umgangen, indem ich alle "%" durch "((()))" ersetzen lasse und später anders rum.
          Ich hoffe, nach so einem blöden String wird niemand suchen ;-)

          Kommentar

          Lädt...
          X