Yadgar: Vorher definierte Variablen mit GET übergeben

Hi(gh)!

Ich möchte eine Anzeigeseite für Datensätze aus einer MySQL-Tabelle so programmieren, dass man zwischen Blöcken von jeweils 20 Datensätzen "blättern" kann, und zwar mittels normaler Links, die den jeweiligen neuen Startwert per GET zur Anzeigeseite übermitteln.

Leider habe ich festgestellt, dass Konstruktionen wie

  
$first = $_GET['first'];  
$first = $first + 20;  
echo '<a href="hersteller.php?first=first+20">Link</a>';  

NICHT möglich sind - es wird nicht etwa der um 20 erhöhte Integerwert von $_GET['first'], sondern der String "first+20" übergeben. Wie kann ich in denn in einem URL Stringliterale als Variablen kenntlich machen?

Bis bald im Khyberspace!

Yadgar

  1. Mahlzeit,

    Wie kann ich in denn in einem URL Stringliterale als Variablen kenntlich machen?

    Indem du ihn als Variable kennzeichnest, also _$_first

    echo '<a href="hersteller.php?first=' . ($first+20) . '">Link</a>';

    Allerdings hat dann, nach deinem Konstrukt, der GET-Parameter 40 mehr als vorher. Kann es sein, dass ich dein Problem nicht wirklich verstehe?

    --
    42
    1. Allerdings hat dann, nach deinem Konstrukt, der GET-Parameter 40 mehr als vorher. Kann es sein, dass ich dein Problem nicht wirklich verstehe?

      Die zweite Zeile ist mir da auch nur versehentlich reingerutscht... siehe auch mein zweites Posting!

  2. $first = $_GET['first'];
    $first = $first + 20;
    echo '<a href="hersteller.php?first=first+20">Link</a>';

      
    ...die zweite Zeile sollte natürlich auskommentiert sein!
    
  3. Hi there,

    NICHT möglich sind - es wird nicht etwa der um 20 erhöhte Integerwert von $_GET['first'], sondern der String "first+20" übergeben. Wie kann ich in denn in einem URL Stringliterale als Variablen kenntlich machen?

    was spricht gegen $_GET['first'] = $_GET['first']+20?

  4. Hi,

    Wie kann ich in denn in einem URL Stringliterale als Variablen kenntlich machen?

    Es wird wirklich Zeit, dass du mal ein paar elementare Grundlagen von PHP lernst …

    RTFM: http://php.net/manual/en/language.types.string.php#language.types.string.parsing

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
  5. HTTP kennt Parameter. Variablen hingegen hast Du in PHP. Wenn aus einer PHP-Variable ein GET-Parameter werden soll, definiere einen Link, welcher den Parameter enthält mit dem dazugehörigen Wert als String. Und schon haben wir ein Problem:

    Parameter sind Schlüssel-Werte-Paare, wie wird aus einer Variablen ein Schlüssel + Wert?

    Hier sind Deiner Creativität keine Grenzen gesetzt, denn die Namen für Parameter legst Du selbst fest.

    Z.B. in einem Link:
    $href = sprintf("http://example.com/story/?seite=%s", $pgnr);

    Oder in einem input-Feld, form action="http://example.com":
    $field = sprintf("<input name='seite' value='%s'>", $pgnr);

    Ergo: Der Parameter heißt 'seite' und der Wert hierzu ist die Seitennummer. Überlege Dir die Namen für die Parameter gut, damit Du Dich im Code zurechtfindest. Klickt jemand auf den Link oder schickt das Formular mit GET ab, macht PHP aus dem Parameter ein Schlüssel-Wert-Paar, so findest Du die Seitennummer in $_GET['seite']. Hat das Formular die method='POST', findest Du die Seitennummer in $_POST['seite'];

    Auf diese Art und Weise kannst du auch sehr umfangreiche Anwendungen erstellen, wenn Du das ein paarmal gemacht hast, geht das in Fleisch und Blut über: Die Implementierung einer Parameter-Kontrollstruktur welche die Anwendung steuert. Das ist sozusagen Schulmedizin, die heutzutage leider keiner mehr vermittelt. Betrachte die Funktion control{} in dieser einfachen Klasse das ist zwar Perl aber in PHP funktioniert das ganz genauso, egal ob mit oder ohne OOP.

    MfG