<!DOCTYPE html><link rel="stylesheet" href="data/style.css"> <h1>Using Extension Methods | dibi</h1> <?php if (@(!(include __DIR__ . '/../vendor/autoload.php'))) { die('Install dependencies using `composer install --dev`'); } Tracy\Debugger::enable(); dibi::connect(array('driver' => 'sqlite3', 'database' => 'data/sample.s3db')); // using the "prototype" to add custom method to class DibiResult DibiResult::extensionMethod('fetchShuffle', function (DibiResult $obj) { $all = $obj->fetchAll(); shuffle($all); return $all; }); // fetch complete result set shuffled $res = dibi::query('SELECT * FROM [customers]'); $all = $res->fetchShuffle(); Tracy\Dumper::dump($all);
/** * @return bool */ public static function validateDate(Nette\Forms\IControl $control) { return is_numeric($control->day) && is_numeric($control->month) && is_numeric($control->year) && checkdate($control->month, $control->day, $control->year); } } Tracy\Debugger::enable(); $form = new Form(); $form['date'] = new DateInput('Date:'); $form['date']->setDefaultValue(new DateTime()); $form->addSubmit('submit', 'Send'); if ($form->isSuccess()) { echo '<h2>Form was submitted and successfully validated</h2>'; Tracy\Dumper::dump($form->getValues()); exit; } ?> <!DOCTYPE html> <meta charset="utf-8"> <title>Nette Forms custom control example</title> <link rel="stylesheet" media="screen" href="assets/style.css" /> <h1>Nette Forms custom control example</h1> <?php echo $form; ?> <footer><a href="https://doc.nette.org/en/forms">see documentation</a></footer>
<!DOCTYPE html><link rel="stylesheet" href="data/style.css"> <h1>Result Set Data Types | dibi</h1> <?php use Dibi\Type; if (@(!(include __DIR__ . '/../vendor/autoload.php'))) { die('Install dependencies using `composer install --dev`'); } Tracy\Debugger::enable(); date_default_timezone_set('Europe/Prague'); dibi::connect(['driver' => 'sqlite3', 'database' => 'data/sample.s3db']); // using manual hints $res = dibi::query('SELECT * FROM [customers]'); $res->setType('customer_id', Type::INTEGER)->setType('added', Type::DATETIME)->setFormat(Type::DATETIME, 'Y-m-d H:i:s'); Tracy\Dumper::dump($res->fetch()); // outputs: // Dibi\Row(3) { // customer_id => 1 // name => "Dave Lister" (11) // added => "2007-03-11 17:20:03" (19) // using auto-detection (works well with MySQL or other strictly typed databases) $res = dibi::query('SELECT * FROM [customers]'); Tracy\Dumper::dump($res->fetch()); // outputs: // Dibi\Row(3) { // customer_id => 1 // name => "Dave Lister" (11) // added => "2007-03-11 17:20:03" (19)
$res = dibi::query('SELECT * FROM products'); $pairs = $res->fetchPairs('product_id', 'title'); Tracy\Dumper::dump($pairs); // fetch row by row echo "<h2>using foreach</h2>\n"; $res = dibi::query('SELECT * FROM products'); foreach ($res as $n => $row) { Tracy\Dumper::dump($row); } // more complex association array $res = dibi::query(' SELECT * FROM products INNER JOIN orders USING (product_id) INNER JOIN customers USING (customer_id) '); echo "<h2>fetchAssoc('name|title')</h2>\n"; $assoc = $res->fetchAssoc('name|title'); // key Tracy\Dumper::dump($assoc); echo "<h2>fetchAssoc('name[]title')</h2>\n"; $res = dibi::query('SELECT * FROM products INNER JOIN orders USING (product_id) INNER JOIN customers USING (customer_id)'); $assoc = $res->fetchAssoc('name[]title'); // key Tracy\Dumper::dump($assoc); echo "<h2>fetchAssoc('name->title')</h2>\n"; $res = dibi::query('SELECT * FROM products INNER JOIN orders USING (product_id) INNER JOIN customers USING (customer_id)'); $assoc = $res->fetchAssoc('name->title'); // key Tracy\Dumper::dump($assoc);
function dump($var) { Tracy\Dumper::dump($var, [Tracy\Dumper::TRUNCATE => 1024, Tracy\Dumper::COLLAPSE => 30, Tracy\Dumper::COLLAPSE_COUNT => 15, Tracy\Dumper::DEPTH => 6]); return $var; }