Перейти к содержимому

Фотография

PHPвопросы по PHP


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 411

#321
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений

Или объясните популярнее задачу? Ибо мне кажется что я все же не понял задачи


типо вот, это будет лежат в библиотеке
function db2Array($data){
$arr = array();
while($row = mysql_fetch_assoc($data)){
$arr[] = $row;
}
return $arr;
}
function selectAll(){
$sql = "SELECT * FROM catalog WHERE id='$id'";
$result = mysql_query($sql) or die(mysql_error());
return db2Array($result);
}

а со странице с формой я бы её вызывал
<?php
require "eshop_db.inc.php";
require "eshop_lib.inc.php";
$id = clearData($_GET["id"], "i");

$result = mysql_query("SELECT * FROM catalog WHERE id='$id'"); - //вместо этой выборки был просто вызов функций просто я не знаю как её правильно вызвать для value в форме
$my = mysql_fetch_array($result);
?>
<html>
<head>
<title>Форма добавления товара в каталог</title>
</head>
<body>
<form action="update_catalog.php" method="post">
<p>Автор: <input value="<?=$my['author']?>" type="text" name="author" size="50">
<p>Название: <input value="<?=$my['title']?>" type="text" name="title" size="100">
<p>Год издания: <input value="<?=$my['pubyear']?>" type="text" name="pubyear" size="4">
<p>Цена: <input value="<?=$my['price']?>" type="text" name="price" size="6"> руб.
<p><input name="id" type="hidden" value="<?=$id?>">
<p><input type="submit" value="Добавить">
</form>
</body>
</html>

  • 0

#322
WallEnd

WallEnd
  • Постоялец
  • 490 сообщений
Ну во-первых, это не ООП. Ибо ООП подразумевает использование объекта.

В вашем варианте все довольно просто:

function db2Array($data){
$arr = array();
while($row = mysql_fetch_assoc($data)){
$arr[] = $row;
}
return $arr;
}
function selectAll(){ // Если она выбирает все то зачем параметр id?
$sql = "SELECT * FROM catalog ";
$result = mysql_query($sql) or die(mysql_error());
return db2Array($result);
}

function selectSimple($id){
$id=(int)$id; //на всякий пожарный
$sql = "SELECT * FROM catalog WHERE id='$id'";
$result = mysql_query($sql) or die(mysql_error());
return db2Array($result);
}


<?php
require "eshop_db.inc.php";
require "eshop_lib.inc.php";
$id = clearData($_GET["id"], "i");
/* $result = mysql_query("SELECT * FROM catalog WHERE id='$id'"); - вместо этой выборки был просто вызов функций просто я не знаю как её правильно вызвать для value в форме*/
if(isset($id)){
$my=selectSimple($id);}
else {
$my=selectAll();
}
/*$my = mysql_fetch_array($result);*/
?>
<html>
<head>
<title>Форма добавления товара в каталог</title>
</head>
<body>
<form action="update_catalog.php" method="post">
<p>Автор: <input value="<?=$my['author']?>" type="text" name="author" size="50">
<p>Название: <input value="<?=$my['title']?>" type="text" name="title" size="100">
<p>Год издания: <input value="<?=$my['pubyear']?>" type="text" name="pubyear" size="4">
<p>Цена: <input value="<?=$my['price']?>" type="text" name="price" size="6"> руб.
<p><input name="id" type="hidden" value="<?=$id?>">
<p><input type="submit" value="Добавить">
</form>
</body>
</html>

теперь простейший вариант с ООП:
пусть будет файл db_class.php
<?php
/**
* абстрактный класс для работы с БД(можно и не абстрактный смотря что да как)
*/
abstract class DB
{
static $query;

/**
* Подсоединяемся к БД
* @param $host
* @param $username
* @param $password
* @param $db_name
* @return void
*/
public function connect($host, $username, $password, $db_name)
{
mysql_connect($host, $username, $password);
mysql_select_db($db_name);
mysql_query("SET NAMES UTF8");//Смотря какая кодировка используется при разработке, в вашем случае, насколько я помню - ASCII
}
/**
* Запрос к бд
* @param $query
* @return $result
*/
public function query($query)
{
$result = mysql_query($query) or self::error($query);
return $result;
}

/**
* Возвращает данные запроса
* @param $query
* @return array
*/
public function fetch($query)
{
$result = self::query($query);
while( $row = mysql_fetch_assoc($result) )
{
$data[] = $row;
}
return $data;
}

/**
* Возвращает кол-во строк 
* @param $query
* @return int
*/
public function num_rows($query)
{
return mysql_num_rows(self::query($query));
}
/**
* Возвращает кол-во строк 
* @param $query
* @return int
*/
public function numrows($query)
{
return self::num_rows($query);
}
}

и например отдельный класс работы с записями(только на правах примера):
пусть будет class_books.php

<?php
/**
* класс для работы с записями(не абстрактный)
*/
class books
{
public $uid;// на всякий случай
public $id;// на всякий случай
public $book = Array();
private $books = Array();
function __construct($id=0){
if($id && is_numeric($id) && $id>0){
if(DB::numrows("SELECT * FROM `catalog` WHERE `id` = ".$id."")>0)
$fetch=DB::fetch("SELECT * FROM `catalog` WHERE `id` = ".$id."");
$this->book=$fetch;
} else {
if(DB::numrows("SELECT * FROM `catalog` WHERE `id` = ".$id."")>0)
$fetch=DB::fetch("SELECT * FROM `catalog`");
$this->books=$fetch;
$this->selectfromall(1);
}

}
function selectfromall($order){//выбирает например по порядковому номеру выборки
if((int)$order>0){
$this->book=$books[$order];
}

}
}
?>

теперь преобразится верхняя часть файла вывода:


<?php
require "class_books.php";
require "db_class.php";
$id = clearData($_GET["id"], "i");
DB::connect("localhost","login","password","db");//можно это делать ещё на стадии конфига
$book= new books($id);
$my=$book->book;
$book->selectfromall(10);
$my10=$book->book;//10 по счету книга выбранная из базы
?>
<html>
<head>
<title>Форма добавления товара в каталог</title>
</head>
<body>
<form action="update_catalog.php" method="post">
<p>Автор: <input value="<?=$my['author']?>" type="text" name="author" size="50">
<p>Название: <input value="<?=$my['title']?>" type="text" name="title" size="100">
<p>Год издания: <input value="<?=$my['pubyear']?>" type="text" name="pubyear" size="4">
<p>Цена: <input value="<?=$my['price']?>" type="text" name="price" size="6"> руб.
<p><input name="id" type="hidden" value="<?=$id?>">
<p><input type="submit" value="Добавить">
</form>
</body>
</html>

Сообщение отредактировал WallEnd: 26.11.2012, 17:30:18

  • 0

#323
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений

Ну во-первых, это не ООП. Ибо ООП подразумевает использование объекта.

Спасибо большое за исчерпывающий ответ! только я не говорил что это ОПП, и чета не получается так как вы посоветовали, не подставляет он значение из выборке в value по id

а так подставляет
$result = mysql_query("SELECT * FROM catalog WHERE id=$id");
$my = mysql_fetch_array($result);//просто хотелось бы чтоб связь с базой была в одном месте

вы простите если что не так
  • 0

#324
WallEnd

WallEnd
  • Постоялец
  • 490 сообщений

Ну во-первых, это не ООП. Ибо ООП подразумевает использование объекта.

Спасибо большое за исчерпывающий ответ! только я не говорил что это ОПП, и чета не получается так как вы посоветовали, не подставляет он значение из выборке в value по id

а так подставляет
$result = mysql_query("SELECT * FROM catalog WHERE id=$id");
$my = mysql_fetch_array($result);//просто хотелось бы чтоб связь с базой была в одном месте

вы простите если что не так


Моя ошибка:

function selectSimple($id){
$id=(int)$id; //на всякий пожарный
$sql = "SELECT * FROM catalog WHERE id = $id"; //кавычки убрать забыл
$result = mysql_query($sql) or die(mysql_error());
return db2Array($result);
}

  • 0

#325
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений

Моя ошибка:

Спасибо за ваше терпение, но все равно не работает ХЗ как я понял методом GET id передается, а в форме значения не подставляются

а этим гребанным вариантом все куда надо подставляется
$result = mysql_query("SELECT * FROM catalog WHERE id=$id");
$my = mysql_fetch_array($result);

  • 0

#326
WallEnd

WallEnd
  • Постоялец
  • 490 сообщений
o_O

function selectSimple($id){
$sql = "SELECT * FROM `catalog` WHERE `id` = {$id} LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
$arr=mysql_fetch_array($result);
return $arr;
}
И так не работает?
  • 0

#327
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений

И так не работает?

Работает! Спасибо за терпения!
мне кажется вот это помогло
$arr=mysql_fetch_array($result);
return $arr;
и здесь я без условия просто сделал так
$my=selectSimple($id);
теперь все работает Спасибо еще раз!
  • 0

#328
WallEnd

WallEnd
  • Постоялец
  • 490 сообщений

И так не работает?

Работает! Спасибо за терпения!
мне кажется вот это помогло
$arr=mysql_fetch_array($result);
return $arr;
и здесь я без условия просто сделал так
$my=selectSimple($id);
теперь все работает Спасибо еще раз!

Не за что!
  • 0

#329
caken

caken
  • Читатель
  • 1 609 сообщений
у меня примитивный вопрос-как методом пост отправить переменные, а так же хмл?

#330
kornel

kornel
  • В доску свой
  • 9 069 сообщений
http://php.net/curl
  • 0

#331
caken

caken
  • Читатель
  • 1 609 сообщений
эх забывается практика.. получилось через filegetcontents.

#332
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений
ДД может не в тему но все же, создаю базу в UTF-8 и на странице charset=utf-8 когда дергаю инфу с базы каракулю норм отображается когда в браузере перевожу кодировку на 1251 в чем это маленькая трабла может быть?

Сообщение отредактировал Biterek: 28.12.2012, 15:43:57

  • 0

#333
setsZI

setsZI
  • Завсегдатай
  • 282 сообщений

ДД может не в тему но все же, создаю базу в UTF-8 и на странице charset=utf-8 когда дергаю инфу с базы каракулю норм отображается когда в браузере перевожу кодировку на 1251 в чем это маленькая трабла может быть?



Делай все в UTF-8, начиная от базы и заканчивая клиентом, зачем переводить в 1251, итак все будет норм отображаться.

Сообщение отредактировал setsZI: 28.12.2012, 16:43:37

  • 0

#334
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений

зачем переводить в 1251, итак все будет норм отображаться

Перевожу просто чтоб проверить а так если не переводить каракалю браузер показывает
База в utf-8 на странице charset=utf-8 сама страница тоже UTF-8 хз все ровно каракули
  • 0

#335
setsZI

setsZI
  • Завсегдатай
  • 282 сообщений

зачем переводить в 1251, итак все будет норм отображаться

Перевожу просто чтоб проверить а так если не переводить каракалю браузер показывает
База в utf-8 на странице charset=utf-8 сама страница тоже UTF-8 хз все ровно каракули


Да помню, было и у меня такое, попробуй это перед запросами к mysql поставить:

mysql_query("set character_set_connection = utf8", $msConnect);
mysql_query("set character_set_client = utf8", $msConnect);
mysql_query("set character_set_results = utf8", $msConnect);

Сообщение отредактировал setsZI: 28.12.2012, 18:07:28

  • 0

#336
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений

mysql_query("set character_set_connection = utf8", $msConnect);

У меня запрос типа такой
function selectAll(){
   $sql = "SELECT title,meta_d,meta_k,text FROM pagetext";
   $result = mysql_query($sql) or die(mysql_error());
}
как присобачить "это" mysql_query("set character_set_client = utf8", $msConnect);

и вообще я заметил все ставлю в utf-8 а она отображается по умолчанию в windows-1251 что за х...
  • 0

#337
setsZI

setsZI
  • Завсегдатай
  • 282 сообщений

mysql_query("set character_set_connection = utf8", $msConnect);

У меня запрос типа такой
function selectAll(){
$sql = "SELECT title,meta_d,meta_k,text FROM pagetext";
$result = mysql_query($sql) or die(mysql_error());
}
как присобачить "это" mysql_query("set character_set_client = utf8", $msConnect);

и вообще я заметил все ставлю в utf-8 а она отображается по умолчанию в windows-1251 что за х...


поставь эти три строчки перед переменной $sql, в общем сразу как функция начинается там и поставь, ну естественно уже после соединения с бд. И кстати я у тебя в коде не вижу соединения вторым параметром, обычно оно там указывается, хотя может оно как то по умолчанию может передаваться.

mysql_query($sql, тут обычно соединение должно стоять)

Сообщение отредактировал setsZI: 28.12.2012, 19:09:59

  • 0

#338
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений
Спасибо! в общем поставил перед запросам вот это
   mysql_query("SET NAMES utf8");
   mysql_query('SET CHARACTER SET utf8');
   mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');

  • 0

#339
Biterek

Biterek
  • В доску свой
  • 1 712 сообщений
Народ извиняюсь если не в тему но у меня "стыдный" вопрос почему в неупорядоченном списке не появляются маркеры :faceoff:

типо вот
<ul type="circle">
<li>ляля</li>
<li>ляля</li>
<li>ляля</li>
<li>ляля</li>
</ul>

на сколько я помню html перед "ляла" должен стаять маркер

  • 0

#340
Мэс

Мэс
  • В доску свой
  • 4 926 сообщений

Народ извиняюсь если не в тему но у меня "стыдный" вопрос почему в неупорядоченном списке не появляются маркеры :faceoff:

типо вот

<ul type="circle">
<li>ляля</li>
<li>ляля</li>
<li>ляля</li>
<li>ляля</li>
</ul>

на сколько я помню html перед "ляла" должен стаять маркер

Должен стоять
http://htmlbook.ru/html/ul
http://htmlbook.ru/html/ul/type
  • 0


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.