Malcolm Beck´s: Wie arbeitet man mit langen Querys ; viele Schlüssel-Wert Paare

hi,

wenn ich beispielsweise mehrere Schlüssel-Wert Paare in der URI habe und einen Wert mitten im Query ändern muss, wie stell ich dass am besten an?

Ich hab zwar eine Lösung, die ist aber glaube ich Suboptimal.

Mein bisheriger Lösungsansatz mit dazugehörigem Script:

http://start-navi.de/beispiele/getcheck/get_check.php?Jahr=1

Bevor ich nun dieses Script ausarbeite würde mich interessieren, wie ihr das so Handhabt, gibt es irgendwo ein Tutorial, wo dieses erklärt wird?

mfg

  1. Grüße,

    wenn ich beispielsweise mehrere Schlüssel-Wert Paare in der URI habe und einen Wert mitten im Query ändern muss,

    Wie genau meinst du das? Dass du, wenn einer URl aufgeruifen wurde, plötzlich ein Paar GET-werte willkürlich ändern willst?

    MFG
    bleicher

    --
    __________________________-
    Die versprechen ernsthaft werbefreien hosting?
    1. hi,

      Wie genau meinst du das? Dass du, wenn einer URl aufgeruifen wurde, plötzlich ein Paar GET-werte willkürlich ändern willst?

      Nein, nicht willkürlich.

      Ich zeige zum Beispiel anhand der Query bestimmte Inhalte an, nehmen wir eine Gallerie:

      URI: ?gallerie=disco&bild=3&anzahlbilder=15

      Die Anzeige auf der Seite ist jetzt

      Disco
      Bild 3
      von 15 Bildern

      Jetzt möchte ich „Bild 3“ auf „Bild 6“ ändern, über einen Link.

      Mein neuer Link im HTML soll nun heissen

      ?gallerie=disco&bild=6&anzahlbilder=15

      Wie muss ich nun diesen Link zusammenbauen?

      Das zu erklären erweist sich als recht schwierig, daher das Beispiel:

      ?Tag=3;Jahr=2;Monat=3

      mfg

      1. Grüße,
        so wie du dir Frage stellst -
        echo "<a href="?gallerie=disco&amp;bild=($_GET['bild']+1)&amp;anzahlbilder=15"></a> ?
        es kommt wieder drauf an, ob du die restlichen Variablen kennst.

        Solche Fragen löst man wie am besten mit den Gegeben/Gesucht-Listen.

        MFG
        bleicher

        --
        __________________________-
        Die versprechen ernsthaft werbefreien hosting?
      2. Hello Malcolm,

        Ich zeige zum Beispiel anhand der Query bestimmte Inhalte an, nehmen wir eine Galerie:

        URI: ?gallerie=disco&bild=3&anzahlbilder=15

        Die Anzeige auf der Seite ist jetzt

        Disco
        Bild 3
        von 15 Bildern

        Jetzt möchte ich „Bild 3“ auf „Bild 6“ ändern, über einen Link.

        Mein neuer Link im HTML soll nun heissen

        ?gallerie=disco&bild=6&anzahlbilder=15

        Wie muss ich nun diesen Link zusammenbauen?

        Das zu erklären erweist sich als recht schwierig, daher das Beispiel:

        ?Tag=3;Jahr=2;Monat=3

        Ein paar Nebengedanken dazu:

        Du müsstest Dazu erst einmal zwischen abhängigen und unabhängigen Parametern unterscheiden.
        Unabhängige können getrennt voneinander verändert werden.

        Und dann wird es Dir auch klar, dass Du irgendwie unterscheiden können solltest, wo diese Parameter verändert wurden, am Client - ohne Berechtigung - oder am Server.

        Wenn Du die Bildnummer änderst, können Galerie und Anzahl der Bilder vermutlich stehen bleiben. Anzahl der Bilder ist vermutlich nur von "galerie=disco" abhängig.
                                                    ^
        Denn bei der Seite "Anmeldung" wäre "anzahlBilder" ja nicht sehr sinnvoll.
        Bildnummer ist aber von "galerie" abhängig, denn nicht in jeder wird es Bild 99 geben.

        Der Baum muss also neu aufgebaut werden, wenn der Client Unsinn eingibt oder angängt zu zu grabben.

        MMn kannst Du das nur mit einer Session abfangen, oder indem Du eine verschlüsselte Prüfziffer für die Gültigkeit des Links mit überträgst.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. hi Tom,

          ich steig mal hier ein.

          Du müsstest Dazu erst einmal zwischen abhängigen und unabhängigen Parametern unterscheiden.
          Unabhängige können getrennt voneinander verändert werden.

          Und dann wird es Dir auch klar, dass Du irgendwie unterscheiden können solltest, wo diese Parameter verändert wurden, am Client - ohne Berechtigung - oder am Server.

          Im Prinzip sollen alle Parameter vorgegeben sein, also einfache Links, die die Ausgabe der Seite beeinflussen.
          Wie wird das denn bei den Überdimensionierten CMS geregelt?

          Wenn Du die Bildnummer änderst, können Galerie und Anzahl der Bilder vermutlich stehen bleiben. Anzahl der Bilder ist vermutlich nur von "galerie=disco" abhängig.

          Genau sowas meine ich, es soll die Möglichkeit bestehen, z. B. wieviel Bilder auf der Seite angezeigt werden vom User selbst bestimmen zu lassen.

          Der Baum muss also neu aufgebaut werden, wenn der Client Unsinn eingibt oder angängt zu zu grabben.

          Das fange ich mit einer kleinen regexp ab, dass ist kein Problem.

          Ich hab mal ein kleines Beispiel gebaut, ich denke, ich weiss jetzt wie ich vorgehen muss.

          http://nispet-club.de/nispet-galerien/select.php

          Jetzt habe ich aber ein anderes Problem, nach einem Refresh der Seite wird das erste Bild nicht angezeigt, was kann das sein?

          MMn kannst Du das nur mit einer Session abfangen, oder indem Du eine verschlüsselte Prüfziffer für die Gültigkeit des Links mit überträgst.

          Ich glaub du hast mich falsch verstanden, oder ich unterschätz mein vorhaben.

          mfg

  2. echo $begrüßung;

    wenn ich beispielsweise mehrere Schlüssel-Wert Paare in der URI habe und einen Wert mitten im Query ändern muss, wie stell ich dass am besten an?

    Ich tät die URL mit parse_url() auseinandernehmen, und den Querystring mit parse_str(). Dann das Array bearbeiten und anschließend den Queryteil mit http_build_query() zusammensetzen und abschließend eine URL draus erzeugen. Jedenfalls, wenn nur "reines PHP" erlaubt ist. Ansonsten nähme ich die URL/URI-Funktionalität aus einem Framework meiner Wahl.

    echo "$verabschiedung $name";