первых 3 работают, а вот с 4 есть проблемы. А именно это, то что например мне надо выбрать 10 или 20 пользователей, то их надобно записать в массив.
Вот код.
<?php
class connect{
var $link;
var $data;
function __construct($host, $user, $pass, $db){
$this->link = mysql_connect($host, $user, $pass);
mysql_select_db($db, $this->link);
$result = mysql_query("SET NAMES UTF8");
@mysql_fetch_assoc($result);
}
function insert($sql){
$result = mysql_query($sql) or die('error insert');
@mysql_fetch_assoc($result);
}
function update($sql){
mysql_query($sql) or die('error update');
}
function delete($sql){
$result = mysql_query($sql) or die('error delete');
@mysql_fetch_assoc($result);
}
function select($sql){
$result = mysql_query($sql) or die('error select');
while($row = @mysql_fetch_assoc($result)){
$this->data['id'][] = $row['id']; //все id записываються в массив
}
}
}
$con = new connect('localhost', 'root', '', 'db'); //подключение к БД
$sql = "INSERT INTO `test` (`id`, `name`, `pass`) VALUES(NULL, 'quickxyan', 'password')";
$con->insert($sql);
$sql = "UPDATE `test` SET `name` = 'fatal' WHERE `id` = '2' LIMIT 1";
$con->update($sql);
$sql = "DELETE FROM `test` WHERE `name` = 'quickxyan'";
$con->delete($sql);
$sql = "SELECT * FROM `test` ORDER BY `id`";
$con->select($sql);
$data = $con->data['id'];
foreach($data as $val)
echo $val.'<br/>';
В общем хочу, чтобы в массив data записался массив row. пробовал так
$row = mysql_fetch_assoc($result);
$data = $row;
так получается, что в массиве будет только одна первая запись так как нету цыкла, а с цыклом будет последняя запись. Подскажите как можно из метода передать полностью массив данных.
Спустя 18 минут, 10 секунд (12.02.2012 - 20:52) Игорь_Vasinsky написал(а):
в цикле забивай массив и возвращай его.
Спустя 2 минуты, 10 секунд (12.02.2012 - 20:54) Игорь_Vasinsky написал(а):
Цитата |
var $link; var $data; |
так делали ещё в php4

Спустя 4 минуты, 42 секунды (12.02.2012 - 20:59) inpost написал(а):
Функции умеют возвращать данные благодаря return

Спустя 8 минут, 22 секунды (12.02.2012 - 21:07) quickxyan написал(а):
Цитата (Игорь_Vasinsky @ 12.02.2012 - 17:52) |
так делали ещё в php4 |
а сейчас уже не надо описывать переменные?
inpost
пробовал return, но что-то возвращалась пустота(не массив, а просто переменную).
Спустя 4 минуты, 3 секунды (12.02.2012 - 21:11) Игорь_Vasinsky написал(а):
в 5ке используют pablic, private и т.д. - ты по старой книжке чтоль учишься?? ни есть гуд.
Спустя 42 секунды (12.02.2012 - 21:12) inpost написал(а):
quickxyan
Внутри функции создай переменную обычную, и её потом return.
А вообще, не вижу смысла такой конструкции
Ты только сам себе хуже делаешь.
Внутри функции создай переменную обычную, и её потом return.
А вообще, не вижу смысла такой конструкции

Спустя 33 секунды (12.02.2012 - 21:13) nugle написал(а):
замени ф-ию на такую
А при вызове метода, запиши в переменную результат
p.s. inpost опередил :(
function select($sql){
$result = mysql_query($sql) or die('error select');
while($row = @mysql_fetch_assoc($result)){
$data[] = $row['id']; //все id записываються в массив
}
return $data;
}
А при вызове метода, запиши в переменную результат
p.s. inpost опередил :(
Спустя 3 минуты, 16 секунд (12.02.2012 - 21:16) inpost написал(а):
nugle
А у тебя warning, $data не определена
И зачем собака для fetch_assoc - это тоже не надо.
А у тебя warning, $data не определена

И зачем собака для fetch_assoc - это тоже не надо.
Спустя 25 минут, 11 секунд (12.02.2012 - 21:41) quickxyan написал(а):
Цитата (quickxyan @ 12.02.2012 - 18:07) |
ты по старой книжке чтоль учишься?? ни есть гуд. |
Да в онлайне прочитал несколько уроков.
nugle
ну я уже понял с return , дело в том как вернуть полностью весь массив, не только поле с айди?
Цитата (Игорь_Vasinsky @ 12.02.2012 - 18:11) |
А вообще, не вижу смысла такой конструкции Ты только сам себе хуже делаешь. |
Не совсем понял? это ты о том, что вообще не зачем работу с БД тулить в класс или именно в моем коде, что-то закручено?
Цитата (nugle @ 12.02.2012 - 18:13) |
И зачем собака для fetch_assoc - это тоже не надо. |
вылетает нотис без собаки.
Спустя 2 минуты, 5 секунд (12.02.2012 - 21:43) nugle написал(а):
inpost
ну так бывает :) я же не тестил :rolleyes:
quickxyan
ну так бывает :) я же не тестил :rolleyes:
quickxyan
Цитата |
ну я уже понял с return , дело в том как вернуть полностью весь массив, не только поле с айди? |
Ну а если додумать, ты присваиваешь одному массиву значения другого. Используя array_keys выбираешь все ключи, прогоняешь через foreach, примерно выглядит это так:
function select($sql){
$result = mysql_query($sql) or die('error select');
$data = array();
$i = 0;
while($row = @mysql_fetch_assoc($result)){
$arr = array_keys($row);
$data[$i] = array();
foreach($arr as $key => $val)
{
$data[$i][$val] = $row[$val];
$i++;
}
}
return $data;
}
Спустя 15 минут, 12 секунд (12.02.2012 - 21:58) caballero написал(а):
Цитата |
вылетает нотис без собаки. |
если что то вылетает надо исправить код а не удавить ошибку и сделать вид что ее нет
Спустя 40 минут, 38 секунд (12.02.2012 - 22:39) Dezigo написал(а):
Концепция подхода ужасна.
1. Всё что здесь сделано, это просто набор методов.
2. Здесь нужно подходить с другой стороны, а именно:
Singelton + Abstract factory
Где реализация будет выглядеть примерно так
В таком подходе вы отделите логику, работы с данными(получение) и их использование.
А ваш этот подход смысла особого не имеет.,так как это набор функций.
+ У вас нет exceptions.
1. Всё что здесь сделано, это просто набор методов.
2. Здесь нужно подходить с другой стороны, а именно:
Singelton + Abstract factory
Где реализация будет выглядеть примерно так
DB::query->('SELECT * FROM users')->toArray();
В таком подходе вы отделите логику, работы с данными(получение) и их использование.
А ваш этот подход смысла особого не имеет.,так как это набор функций.
+ У вас нет exceptions.
Спустя 24 минуты, 40 секунд (12.02.2012 - 23:04) quickxyan написал(а):
nugle
Спасибо, такая функция работает на ура.
caballero
спасибо, наверное погуглю по данной проблеме
Спасибо, такая функция работает на ура.
caballero
спасибо, наверное погуглю по данной проблеме
Спустя 3 минуты, 16 секунд (12.02.2012 - 23:07) quickxyan написал(а):
Dezigo
Спасибо за советы. Я только начал учить ООП, так вот и не разбираюсь вовсе в концепции. Дело обстоит так: прочитал - потестил, а с концепциями пока можно сказать вообще не знаком
Спасибо за советы. Я только начал учить ООП, так вот и не разбираюсь вовсе в концепции. Дело обстоит так: прочитал - потестил, а с концепциями пока можно сказать вообще не знаком

_____________
печатаю со скоростью 320 минут в знак...
плюсуем карму не стесняемся