• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Radio Buttons innerhalb eines php-Skripts

Ahhhhhhhh, doch noch nicht ganz!

Sobald die Cookies gelöscht werden oder das Skript in einem Browser das erste Mal ausgeführt wird, bleibt $_SESSION antürlich leer. Dann wird folgende Fehlermeldung angezeigt:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/webb/e2/68/5238468/htdocs/seiten/maefuhu.de/eprot_tmp.php on line 98

So hab ich's versucht:

PHP:
if (isset($_POST['sort']))
  {
    $_SESSION['sort'] = $_POST['sort'];
  }
else
  {
    $_SESSION['sort'] = "SELECT * FROM aufgaben ORDER BY id DESC";
  }

Funktioniert grundsätzlich, nur nach Änderungen in den Datensätzen sortiert er dann nicht nach dem zuletzt gewählten Wert, sondern nach dem oben initialisierten else-Wert :-(

Oder kann ich hier vielleicht meine empty-Abfrage, halt auf $_POST machen? Und wenn es leer ist, dann halt mit "SELECT * FROM aufgaben ORDER BY id DESC" füllen?
 
Zuletzt bearbeitet:
JA!
So geht's:
PHP:
if (empty($_SESSION['sort']))
  {
    $_POST['sort'] = "SELECT * FROM aufgaben ORDER BY id DESC";
    $_SESSION['sort'] = $_POST['sort'];
  }
if (isset($_POST['sort']))
  {
    $_SESSION['sort'] = $_POST['sort'];
  }
 
Und nu überlegen wir mal:
Was schreibst du hier in die Session:
PHP:
$_SESSION['sort'] = $_POST['sort'];
Und was schreibst du hier in die Session:
PHP:
$_SESSION['sort'] = "SELECT * FROM aufgaben ORDER BY id DESC";
Anscheinend hast du dir mein Beispiel nicht genau angesehen. Zumal du das komlizierter machst als nötig und immer noch "Select *" schreibst


<edit>
das glaube ich nicht
</edit>
 
Also ich hab das jetzt nochmal durchgespielt. Es funktioniert sowohl, wenn keine Cookies vorhanden sind als auch, wenn doch. Nach meinem Verständnis ist $_SESSION leer, wenn keine Cookies da sind. Deshalb auch die Fehlermeldung. Also befülle ich es mit einem Ausgangswert. Später zieht er sich - solange die Cookies nicht gelöscht werden - immer die zuletzt verwendete Sortierung. Auch behält er die gewählte Sortierung bei, wenn man die Daten ändert (speichert, löscht oder neu anlegt). Alles ganz so, wie es sein soll.
 
Das kann nicht sein, denn was steht hier
PHP:
$_SESSION['sort'] = $_POST['sort'];
in $_POST['sort']? Das kann doch nur n, b, s oder w sein und nicht die Select-Anweisung

Und wieso speicherst du hier
PHP:
    $_POST['sort'] = "SELECT * FROM aufgaben ORDER BY id DESC";
    $_SESSION['sort'] = $_POST['sort'];
erst in $_POST um dann in $_SESSION zu schreiben?
 
Hmmm... wenn ich $_POST['sort'] mit "n" statt mit der Select-Anweisung fülle, geht das auch. Ich muss mir das heut Abend nochmal genau anschauen...
 
Achte nochmal auf mein Beispiel. Da wird nur der Wert n, b, s oder w in der Session gespeichert, wenn auch wirklich was in $_POST steht. Danach wird nur noch der switch mit $_SESSION['sort'] durchlaufen, wenn $_SESSION['sort'] auch gesetzt ist, ansonsten wird in $order der Default-Wert gesetzt. Und wie du siehst, ich halte nie die komplette Select-Anweisung, sondern nur den Sortierungsteil.
 
Stimmt, aber das mit dem Default-Wert gesetzte $order hatte ich nicht in mein Skript übernommen. Und dass in $_POST nur n, b, s oder w steht, hab ich sofort gemerkt, da ich mir die Werte an verschiedenen Stellen mit echo hab ausgeben lassen ;-) Ich schau mir das alles aber auf jeden Fall heut Abend nochmal ganz genau an. Einen gewaltigen Schritt weiter bin ich dank Dir aber schonmal gekommen.
 
Zurück
Oben