Быстрый переход |
|
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования. |
|
Опции темы |
Сегодня | |||||
|
14.02.2005, 15:53 | #1 | |||
Реноме:
216
|
FAQ по PHP
Здесь публикуются основные вопросы по PHP и интересные ссылки на источники. Внимание! публикуются лишь интересные вопросы, решить которые просто прочтением мануала не получится!
ВСЕ сообщения не в тему будут удаляться! Авторы будут предупреждаться. Разбивка на страницы, вариант взят с kernel.php Код:
<?php error_reporting(E_ALL); $page=@$_GET['page']; /* Скрипт для постраничного вывода записей из MySql выводом колва страниц с результатами ссылкой на каждую страницу */ $maxpage=ceil(SQL_N_RES_SEARCH()/$maxlines); if (!isset($page) || $page=='' || $page<1 || $page>$maxpage){ $page=1;} //------------------------- // SQL //------------------------- // // SQL запрос для поиска записей . function SQL_RES_SEARCH() { global $table, $sql_select, $order_by, $order, $maxlines, $page; $limit=$page*$maxlines-$maxlines; $sql_res_search = mysql_query("select * from $table order by $order_by $order limit $limit, $maxlines "); return $sql_res_search;} // Количество записей возвращаемых $sql_res_search . function SQL_N_RES_SEARCH(){ global $table, $sql_select; $sql_res_search_num = mysql_query("select count(*) from $table "); $row = mysql_fetch_row($sql_res_search_num); $sql_n_res_search =$row[0]; return $sql_n_res_search;} // функция вывода списка страниц. function PRINT_NUM_PAGE($t){ global $page, $maxpage, $maxpages, $maxlines, $type, $like, $ask; // сколько всего страниц с записями $l=$page*$maxlines-$maxlines+1; $r=$l+$maxlines-1; if ($r>SQL_N_RES_SEARCH())$r=SQL_N_RES_SEARCH(); echo '<hr width=90% color=ff0000><table align=center width="90%" border="1" cellpadding="0" cellspacing="0" bordercolor="#6699FF"><tr><td width="15%" align="center">'; echo '<strong><font color="#0000FF" size="-1">Записи с </font><br>'.$l.' по '.$r.'</font></strong></td>'; echo '<td width="70%" align="center"><font size="-1"><strong>'; if ($t=='1'){ $l = ceil($page/$maxpages)*$maxpages+1- $maxpages; $r = ceil($page/$maxpages)*$maxpages ; if ($page>$maxpages) { $ll=$l-1; echo"<a href=\"?page=$ll\">...</a>";} }else{ $l=$page - floor($maxpages/2); $r=$page + floor($maxpages/2); if ($l<1){$l='1'; $r=$maxpages;} if ($r>$maxpage){$r=$r+$r/2;} if (($page-1)>$maxpages/2){ $ll=$l-1; echo "<a href=\"?page=$ll\">...</a>";} } for ($l; $l<=$r; $l++){ if ($l>$maxpage)break; if ($l == $page){ print " <b>$page</b> "; }else{ echo " <a href=\"?page=$l\">$l</a> ";} } if ($maxpage>$r) { $ll=$r+1; echo "<a href=\"?page=$ll\">...</a>";} echo '</strong></font><br /><font color=#0000FF >Всего страниц:</font> <font size=-1><a href=?page='.$maxpage.'>'.$maxpage.'</a></font></td>'; echo '<td width="15%" align="center"><font size="-1"><strong><font color="#0000FF">Всего записей</font><br>'; echo '<font size="-1">'; echo SQL_N_RES_SEARCH(); echo '</font> </strong></font></td></tr></table><hr width=90% color=ff0000>'; } $currnumber=$page*$maxlines-$maxlines+1; ?> Код:
<?php // для MySql connect() // $host='localhost'; // хост $user='user'; // имя пользователя $password='pass'; // пароль к базе $dbname='dbname'; // имя базы ####### Установки, Эти значения ставите сами ############ // sql select // $table='podp'; // имя таблицы в вашей бд $sql_select='*'; // столбцы через запятую или * если все $order_by='ind'; // сортировка по (столбец) !! НЕ должен быть пустым!!! $order='ASC'; // сортировка: ASC - убывание, DESC - возрастание $maxlines=9; // Максимальное количество записей на странице возвращаемых SQL запросом $maxpages=4; // максимальное колво страниц на вывод. // сам коннект // есесно логин и пароль можно вынести в отд. файл mysql_connect( $host, $user, $password) or die("нет коннекта"); mysql_select_db($dbname)or die("базы нет"); include_once('kernel.php'); PRINT_NUM_PAGE('1'); $sql =SQL_RES_SEARCH(); // это обязательно while ($row = mysql_fetch_array($sql)) { // сдесь выводим строки echo '<br />'.$currnumber.' - - '.$row['ind']; //вместо ind указывайте свои столбцы //и так далее $currnumber++; } // закончили цикл echo '<br />'; PRINT_NUM_PAGE('2'); // это вывод количества страниц // 1 2 3 4 5 и так далее // PRINT_NUM_PAGE(1); номера страниц выводятся как обычно // если нужно чтоб номера страниц выводились как на яндексе // установите значение PRINT_NUM_PAGE(2); // попробуйте и так и так, и оставьте как вам больше нравится mysql_close(); // закрыли соединение ?> |
|||
23.02.2005, 19:03 | #3 | |||
Реноме:
216
|
пример полезен для тех, у кого на сайте должно высвечиваться время, отличное от времени сервера или времени пользователя:
Код:
<? $timezone=-5;//для МСК используйте +3, Украины +2 $time=time(); $gmttime= gmdate("M d Y H:i:s", $time); $convertedtime=date("M d Y H:i:s",strtotime("$timezone hours",strtotime($gmttime))); echo "$convertedtime <br> "; ?> |
|||
15.03.2005, 08:58 | #8 | |||
Реноме:
216
|
Драйвер для работы с MySQL
Сам класс: Код:
<?php /* --------------------------------------------------------------------------------- // Драйвер для работы с базой данных MySQL. // Версия 1.1.4 --------------------------------------------------------------------------------- */ class db { /* --------------------------------------------------------------------------------- // Переменные --------------------------------------------------------------------------------- */ var $connInfo = array(); // private array @connInfo var $connSource = null; // public resource @connSource var $querySource = null; // private resource @querySource var $lastQuery = ''; // public string @lastQuery var $lastAction = ''; // public string @lastAction var $lastResult = array(); // public array @lastResult var $lastRow = array(); // public array @lastRow var $numRows = 0; // public int @NumRows var $numFields = 0; // public int @NumFields var $affectedRows = 0; // public int @AffectedRows var $queryParams = array(); // private array @executeParams /* --------------------------------------------------------------------------------- // private constructor db ( // [string connString] // ) --------------------------------------------------------------------------------- */ function db($connString = '') { if(!empty($connString)) $this->setConnect($connString); } /* --------------------------------------------------------------------------------- // public source setConnect ( // string connString // ) --------------------------------------------------------------------------------- */ function setConnect($connString) { if(!preg_match("%^([^,]*?)\s?,\s?([^,\s]*?)\s?,\s?([^,]*?)\s?,\s?([^,]*?)\s?,\s?([0-1]*?)$%", $connString, $Params)) { $this->setError(false, 'Передан неверный параметр для соеднинения с базой данных.'); } $this->connInfo = array( 'connHost' => $Params[1], 'connUser' => $Params[2], 'connPswd' => $Params[3], 'connBase' => $Params[4], 'Persistent' => ((empty($Params[5])) ? 0 : $Params[5]), ); $this->connSource = (1 == (int) $this->connInfo['Persistent']) ? @mysql_pconnect($this->connInfo['connHost'], $this->connInfo['connUser'], $this->connInfo['connPswd']) : @mysql_connect($this->connInfo['connHost'], $this->connInfo['connUser'], $this->connInfo['connPswd']); if(!is_resource($this->connSource)) $this->setError(false); if($this->connInfo['connBase'] != '') { if(!@mysql_select_db($this->connInfo['connBase'], $this->connSource)) return $this->setError(); } return $this->connSource; } /* --------------------------------------------------------------------------------- // public selectBase ( string baseName ) // Фнцкия выполняет соединения с базой данных переданной в аргументе --------------------------------------------------------------------------------- */ function selectBase($baseName) { if(!mysql_select_db($baseName, $this->connSource)) $this->setError(); } /* --------------------------------------------------------------------------------- // public mixed sendQuery ( string query, mixed var ...) // Фунцкия выполняет передачу запроса к базе данных принимая в первом аргументе // строку шаблона SQL запроса, и переменные которые необходимо подставить // в шаблон в форматированном виде. // ---- // Переменные подставляются в соответствии с указаниями последовательного номера // переменной, ее типа (если это тип с плавующей точкой, передается число после // точки), ее длинны. // ---- // Формат подстановок: // ${paramNumber type [dopOpt1[.dopOpt2]]} --------------------------------------------------------------------------------- */ function sendQuery() { $this->queryParams = func_get_args(); if(!$this->lastQuery = array_shift($this->queryParams)) return false; if(sizeof($this->queryParams) > 0) { $this->queryParams = array_values($this->queryParams); $this->lastQuery = preg_replace("|\\$\{([0-9]{1,2})\s*([0-9a-zA-Z]*)\s*?([0-9a-zA-Z,\.]*?)\}|ie", "\$this->assemblyQueryParams(\"\\1\", \"\\2\", \"\\3\")", $this->lastQuery); $this->queryParams = array(); } $this->lastAction = strtolower(substr($this->lastQuery, 0, strpos($this->lastQuery, ' '))); if(!$this->querySource = @mysql_query($this->lastQuery, $this->connSource)) return $this->setError(); switch($this->lastAction) { case 'insert': $this->lastInsertID = mysql_insert_id($this->connSource); case 'update': case 'delete': { $this->affectedRows = mysql_affected_rows($this->connSource); return $this->affectedRows; break; } case 'select': { $this->numFields = mysql_num_fields($this->querySource); $this->numRows = mysql_num_rows($this->querySource); return $this->numRows; break; } } return true; } /* --------------------------------------------------------------------------------- // public array nextRow ( [int rowMode] ) // Функция возвращает записи по очереди после запроса на выборку --------------------------------------------------------------------------------- */ function nextRow($rowMode = null) { $this->lastRow = @mysql_fetch_array($this->querySource, ((isset($rowMode)) ? $rowMode : MYSQL_ASSOC)); return $this->lastRow; } function getOne($srcRow = false) { return @mysql_result($this->querySource, (($srcRow != false) ? $srcRow : 0)); } /* --------------------------------------------------------------------------------- // public int getInsertID ( [int rowMode] ) // Функция возвращает все записи после запроса на выборку --------------------------------------------------------------------------------- */ function getResult($rowMode = null) { $this->lastResult = array(); $rowMode = (isset($rowMode)) ? $rowMode : MYSQL_ASSOC; while($Row = @mysql_fetch_array($this->querySource, $rowMode)) { $this->lastRow = $Row; $this->lastResult[] = $this->lastRow; } return $this->lastResult; } /* --------------------------------------------------------------------------------- // public int getInsertID () // Функция возвращает автоинкрементный номер последней вставленной записи --------------------------------------------------------------------------------- */ function getInsertID() { return $this->lastInsertID; } /* --------------------------------------------------------------------------------- // private void assemblyQueryParams ( int num, string target, string length ) // Приватная функция используемая при подстановке переменных в шаблоне SQL запроса --------------------------------------------------------------------------------- */ function assemblyQueryParams($num, $target, $length) { if(!isset($this->queryParams[$num])) return "''"; switch($target) { case 'i': { if(empty($this->queryParams[$num])) return 'NULL'; if(!empty($length)) $this->queryParams[$num] = substr($this->queryParams[$num], 0, $length); return intval($this->queryParams[$num]); } case 'f': case 'd': { if(empty($this->queryParams[$num])) return 'NULL'; $options = explode(',', $length); $precision = (isset($options[1])) ? $options[1] : 30; if(!empty($length)) $this->queryParams[$num] = substr($this->queryParams[$num], 0, $length); return (float) round($this->queryParams[$num], $precision); } case 'implode': { $options = explode(',', $length); return " {$options[0]} = '".implode("' {$options[1]} {$options[0]} = '", $this->queryParams[$num])."' "; } case 'md5': { if(empty($this->queryParams[$num])) return 'NULL'; return md5($this->queryParams[$num]); } case 'htmlsc' : { if(empty($this->queryParams[$num])) return 'NULL'; if(!empty($length)) $this->queryParams[$num] = substr($this->queryParams[$num], 0, $length); return "'".mysql_escape_string(htmlspecialchars($this->queryParams[$num]))."'"; } default: { if(empty($this->queryParams[$num])) return 'NULL'; if(!empty($length)) $this->queryParams[$num] = substr($this->queryParams[$num], 0, $length); return "'".mysql_escape_string($this->queryParams[$num])."'"; } } } /* --------------------------------------------------------------------------------- // public string viewResult ( ) // Функция возвращает результат в форматированном виде. --------------------------------------------------------------------------------- */ function viewResult() { $__template = '<table cellspacing="0" cellpadding="5" style="font-family: Verdana; font-size: 11px; color: #666666;'. 'border-width:1px; border-style:solid; border-color:#CCCCCC; background-color:#EFEFEF; border-collapse: collapse;">'; $__template .= '<tr><th colspan="'.$this->numFields.'" align="left">Result: ' .$this->numRows.' rows selected<br>Query: '.$this->lastQuery.'</th></tr>'; $__template .= '<tr><th>num</th><th>'.implode('</th><th>', array_keys($this->lastResult[0])).'</th></tr>'; for($i = 0; $i < $this->numRows; $i++) { $__template .= '<tr><td style="border-width:1px; border-style:solid; border-color:#CCCCCC; padding:5px;">'. ($i+1).'</td><td style="border-width:1px; border-style:solid; border-color:#CCCCCC; padding:5px;">'. implode('</td><td style="border-width:1px; border-style:solid; border-color:#CCCCCC; padding: 5px;">', $this->lastResult[$i]).'</td></tr>'; } $__template .= '</table>'; return $__template; } /* --------------------------------------------------------------------------------- // private void setError ( [bool is] ) // Приватная функция для вывода ошибок --------------------------------------------------------------------------------- */ function setError($is = true, $msg = null) { echo '<center><div align="justify" style="width:70%; background-color:#FAFAFA;'; echo 'border-color:#CCCCCC; border-width:1px; border-style:solid; padding: 10px;'; echo 'font-family: Verdana; color: 666666; font-size: 11px;">'; echo '<b>MySQL - сообщение об ошибке:</b><br><br>'.str_repeat('&nbsp;', 4); if(isset($msg)) echo $msg; if(is_resource($this->connSource)) echo mysql_error($this->connSource); if($is === false) echo mysql_error(); if(!empty($this->lastQuery)) { echo '<p>&nbsp;<p><div id="sql" style=";background-color:#EFEFEF; border-color:#CCCCCC; border-width:1px; border-style:solid; padding: 5px;" name="sql">'; echo '<b>Последний SQL запрос:</b><p>'; echo str_repeat('&nbsp;', 4).'<span style="color:#FF6600;">'.$this->lastQuery.'</span></div>'; } echo '</div></center>'; exit; } } ?> Код:
<?php $db = new db('localhost, user1, , mainbase, 1'); // Коннект к localhost, юзер user1 без пароля, выбираем базу mainbase, постоянное соединение. $db->sendQuery('select s.main, s.root, s.parent, t.name, t.views, t.logs, t.systems'. ' from sec_table as s left join tech_table as t on(t.id = ${0 i 11}) where s.prent = ${1 i 11}'. ' and s.sct = t.sc', $_GET['t_id'], $_GET['parent'] ); $db->getResult(); print_r($db->lastResult); ?> |
|||
Реклама | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|