Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #3945

Re: Umschalten zwischen zwei php+Scripten

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups de.comp.lang.php
Subject Re: Umschalten zwischen zwei php+Scripten
Date 2016-08-30 14:21 +0200
Organization PointedEars Software (PES)
Message-ID <4198334.GXAFRqVoOG@PointedEars.de> (permalink)
References <e2ks5dFeiu0U1@mid.individual.net> <nq3n7j$2i9$3@dont-email.me>

Show all headers | View raw


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:

  <?php
    namespace My;

    class ResultModel extends \My\Model
    {
      /**
       * @return array[ResultModel]
       */
      public static function fetchAll ($ascending=true)
      {
        return (new self)->table->select(
          [
            …,
            'order' => ($ascending
                         ? Database::ORDER_ASC
                         : Database::ORDER_DESC),
            'class' => __CLASS__
          ]);
      }
    }

    …

  <?php
    namespace My;

    class IndexController extends \My\Controller
    {
      public function indexAction ()
      {    
        $results = ResultModel::fetchAll(
          $this->getParam('sortorder', $_POST) === '0');
        $this->assign('results', $results);
        $this->render();
      }
    }

  …

  <?php foreach ($this->results as $result): ?>
    <tr>
      <td><?= $this->encode($result->foo); ?></td>
      <td><?= $this->encode($result->bar); ?></td>
      <td><?= $this->encode($result->baz); ?></td>
    </tr>
  <?php endforeach; ?>


Bitte Code nicht mit Zitatzeichen posten, ausser es folgt eine 
Korrektur/Anmerkung dazu.

-- 
PointedEars
Zend Certified PHP Engineer 
<http://www.zend.com/en/yellow-pages/ZEND024953> | Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

Back to de.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Umschalten zwischen zwei php+Scripten Sigbert Helle <pc@sigbert.de> - 2016-08-30 09:50 +0200
  Re: Umschalten zwischen zwei php+Scripten Christian Stadler <stadli@gmx.de> - 2016-08-30 11:25 +0200
  Re: Umschalten zwischen zwei php+Scripten Christian Stadler <stadli@gmx.de> - 2016-08-30 12:26 +0200
  Re: Umschalten zwischen zwei php+Scripten Christian Stadler <stadli@gmx.de> - 2016-08-30 12:30 +0200
    Re: Umschalten zwischen zwei php+Scripten Sigbert Helle <pc@sigbert.de> - 2016-08-30 13:21 +0200
    Re: Umschalten zwischen zwei php+Scripten Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-30 14:21 +0200
      Re: Umschalten zwischen zwei php+Scripten Christian Stadler <stadli@gmx.de> - 2016-08-30 17:06 +0200
        Re: Umschalten zwischen zwei php+Scripten Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-30 17:09 +0200
          Re: Umschalten zwischen zwei php+Scripten Christian Stadler <stadli@gmx.de> - 2016-08-30 17:22 +0200
        Re: Umschalten zwischen zwei php+Scripten Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-30 17:10 +0200
          Re: Umschalten zwischen zwei php+Scripten Sigbert Helle <pc@sigbert.de> - 2016-08-31 19:00 +0200
            Re: Umschalten zwischen zwei php+Scripten Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-31 19:43 +0200

csiph-web