Path: csiph.com!feeder.erje.net!1.eu.feeder.erje.net!news.roellig-ltd.de!open-news-network.org!weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: de.comp.lang.php Subject: Re: Umschalten zwischen zwei php+Scripten Date: Tue, 30 Aug 2016 14:21:19 +0200 Organization: PointedEars Software (PES) Lines: 94 Message-ID: <4198334.GXAFRqVoOG@PointedEars.de> References: Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: solani.org 1472559682 2852 eJwNyMERACEIA8CWREiActC59F+Ct8+F03gzCAYEtZYfWYzJLbPGfWsdlv4ievedEPBNdFWdBxHKEK8= (30 Aug 2016 12:21:22 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Tue, 30 Aug 2016 12:21:22 +0000 (UTC) User-Agent: KNode/4.14.2 X-User-ID: eJwNyMkBwCAIBMCWkGNXyhGF/ktI5jlhWLh0BDwmxqluXddXYthNyt8ZpiVlW04RObpret3XfJ3TZ+KAqdjyAUxkFbI= Cancel-Lock: sha1:0ewhx38V268In6w4bbdkGx3PDE0= X-NNTP-Posting-Host: eJwFwYEBwDAEBMCVQjwyjj72H6F3uC7OMIcbFltDDp4Ig13Vq7SJ+TxaXydOqkWCZ25gnT9BABHO Xref: csiph.com de.comp.lang.php:3945 Christian Stadler wrote: > Am 30.08.2016 um 09:50 schrieb Sigbert Helle: >> Ich hab ein relativ umfangreiches php-Script mit eingebautem sql-code, >> der eine ORDER-Anweisung enthält. 1. Autsch. 2. Es gibt keine ORDER-Anweisung in (My)SQL (das nächste Mal bitte das DBMS angeben). Die Anweisung ist vermutlich “SELECT”; “ORDER BY” ist eine _Klausel_ darin. >> Der User soll zwischen "ORDER" und "ORDER DESC" umschalten können. >> Das einzige, was mir bisher dazu eingefallen ist: Eine Kopie des Scripts >> anlegen und den User zwischen diesen beiden Scripten umschalten lassen. Autsch. >> Der User soll aber zuerst das Ergebnsi per "ORDER" zu sehen bekommen, so >> dass er dann sagen kann "Nee, is nix - will ich anders!" >> Also nicht schon vor dem Aufruf des Scripts die Entscheidung, sondern >> erst danach. > > | $sortorder = $_POST['sortorder'] == 0 ? 'ORDER' : 'ORDER DESC'; 1. Das ergibt keine gültige Abfrage, in keiner mir bekannten SQL- Implementierung. Es fehlt die Angabe, *wonach* sortiert werden soll. Formal gültig wäre: $sortorder = "ORDER BY blubb" . ($_POST['sortorder'] == 0 ? '' : ' DESC'); Ich würde dies allerdings in den Datenbank-Klassen (die man haben sollte) lösen. In Benutzercode gehören keine Klartext-Datenbankanweisungen, schon gar keine DBMS-spezifischen. Sauber könnte es stattdessen zum Beispiel so aussehen: table->select( [ …, 'order' => ($ascending ? Database::ORDER_ASC : Database::ORDER_DESC), 'class' => __CLASS__ ]); } } … getParam('sortorder', $_POST) === '0'); $this->assign('results', $results); $this->render(); } } … results as $result): ?> encode($result->foo); ?> encode($result->bar); ?> encode($result->baz); ?> Bitte Code nicht mit Zitatzeichen posten, ausser es folgt eine Korrektur/Anmerkung dazu. -- PointedEars Zend Certified PHP Engineer | Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail.