tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Skládání podmínky pro dotaz

před 6 lety

Hedgexu
Člen | 12

Funguje správně pokud $_SESSION[‚user_year_id‘] != 0, jinak vypíše všechny řádky a ignoruje Subject.id = %i', $subject

<?php
->from('Subject')
->join('Year')->on('Year.id = Subject.year_id')
->join('Field')->on('Field.id = Subject.field_id')
->where('Subject.id = %i', $subject)
->where('Subject.year_id = %i', $_SESSION['user_year_id'])->or($_SESSION['user_year_id'],' = %i', 0)
->where('Subject.field_id = %i', $_SESSION['user_field_id'])->or($_SESSION['user_field_id'],' = %i', 0)
->fetchAll();
?>

Funguje správně pokud $_SESSION[‚user_year_id‘] == 0, jinak vypíše všechny řádky a ignoruje Subject.id = %i', $subject

<?php
->from('Subject')
->join('Year')->on('Year.id = Subject.year_id')
->join('Field')->on('Field.id = Subject.field_id')
->where('Subject.year_id = %i', $_SESSION['user_year_id'])->or($_SESSION['user_year_id'],' = %i', 0)
->where('Subject.field_id = %i', $_SESSION['user_field_id'])->or($_SESSION['user_field_id'],' = %i', 0)
->where('Subject.id = %i', $subject)
->fetchAll();

?>

Měli by platit tyto podmínky:

<?php
1. where('Subject.id = %i', $subject)
2. where('Subject.year_id = %i', $_SESSION['user_year_id'])nebo($_SESSION['user_year_id'],' = ', 0)
3. where('Subject.field_id = %i', $_SESSION['user_field_id'])nebo($_SESSION['user_field_id'],' = ', 0)
?>

Jak upravitkód, aby fungovalo správně?

Editoval Hedgexu (18. 3. 2013 12:00)

před 6 lety

Hedgexu
Člen | 12

Opraveno no:

<?php

if ($_SESSION['user_year_id'] != 0)
      {
        $query = dibi::select('Subject.name')
                    ->select('Field.code')
                    ->select("Field.name")->as('Fname')
                    ->select('Year.year')
                    ->from('Subject')
                    ->join('Year')->on('Year.id = Subject.year_id')
                    ->join('Field')->on('Field.id = Subject.field_id')
                    ->where('Subject.id = %i', $subject)
                    ->where('Subject.year_id = %i', $_SESSION['user_year_id'])
                    ->where('Subject.field_id = %i', $_SESSION['user_field_id'])
                    ->fetchAll();
      }
      else
      {
        $query = dibi::select('Subject.name')
                    ->select('Field.code')
                    ->select("Field.name")->as('Fname')
                    ->select('Year.year')
                    ->from('Subject')
                    ->join('Year')->on('Year.id = Subject.year_id')
                    ->join('Field')->on('Field.id = Subject.field_id')
                    ->where('Subject.id = %i', $subject)
                    ->fetchAll();
      }

?>

Pokud skládám příkaz pomocí where nefunguje fetchAll() takže to mám takhle blbě duplicitně.

Editoval Hedgexu (18. 3. 2013 12:57)