21

Re: Як виводити дані з бази на документ з розширенням php?

Привіт всім! Ось що в мене получилося

include ("cone.php"); 
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'"); 
$query = "select * from location"; // там много разных операторов, советую почитать в интернете о запросах MySQL 
 $sql = mysql_query($query); 
 $row = mysql_fetch_array($sql); 
 echo "<center>".$row['name'];
 echo "<br>Описание локации: ".$row['opes'];

І це все спрацювало! Тепер буду розмишляти як перходи робити)

22

Re: Як виводити дані з бази на документ з розширенням php?

Stadnik Roman написав:

Привіт всім! Ось що в мене получилося

include ("cone.php"); 
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'"); 
$query = "select * from location"; // там много разных операторов, советую почитать в интернете о запросах MySQL 
 $sql = mysql_query($query); 
 $row = mysql_fetch_array($sql); 
 echo "<center>".$row['name'];
 echo "<br>Описание локации: ".$row['opes'];

І це все спрацювало! Тепер буду розмишляти як перходи робити)

Уточнення:
1. Надайте перевагу include_once замість include().
2. Даний парсинг поверне з серверу сторінку з одним лише рядком із бази. Якщо ви хочете їх далі динамічно підвантажувати, читайте про AJAX.
3. І ліпше вже тоді

$query = "select * from location order by id;"

23

Re: Як виводити дані з бази на документ з розширенням php?

Дякую всім! Я й надалі буду сюди вписувати продовження моєї роботи! Мложе щось підскажуте зробити по іншому!)

24

Re: Як виводити дані з бази на документ з розширенням php?

Допоможіть мені ще в цьому, є таблиця

CREATE TABLE `location_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(50) NOT NULL,
  `location` int(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251;

id заповнюється автоматично (auto_increment), а стовпчик id_user містить в себе ID пользователя!
Як можна в стовпчик id_user помістити id пользователя?

25

Re: Як виводити дані з бази на документ з розширенням php?

По перше не забувайте писати будь ласка. Вам не тяжко а нам (користувачам форуму) приємно. По друге вам вже хтось радив що для початку непогано було б почитати якийсь підручник по роботі з mysql. Я думаю так само. Ну а тепер щодо вашого питання. Є 4 часто виконувані операції з базою даних це:
INSERT (додавання нового запису в базу даних)
UPDATE (редагування запису)
DELETE (видалення запису)
SELECT (вибірка з таблиці одного чи декількох записів)
Конкретно зараз вам потрібно використати команду Insert. Це може виглядати приблизно так.

INSERT INTO location_users(id_user,location) VALUES (14, 'WV')


цю sql команду ви можете виконати за допомогою функції mysql_query().

Подякували: Stadnik Roman1

26

Re: Як виводити дані з бази на документ з розширенням php?

truesupport написав:

По перше не забувайте писати будь ласка. Вам не тяжко а нам (користувачам форуму) приємно. По друге вам вже хтось радив що для початку непогано було б почитати якийсь підручник по роботі з mysql. Я думаю так само. Ну а тепер щодо вашого питання. Є 4 часто виконувані операції з базою даних це:
INSERT (додавання нового запису в базу даних)
UPDATE (редагування запису)
DELETE (видалення запису)
SELECT (вибірка з таблиці одного чи декількох записів)
Конкретно зараз вам потрібно використати команду Insert. Це може виглядати приблизно так.

INSERT INTO location_users(id_user,location) VALUES (14, 'WV')


цю sql команду ви можете виконати за допомогою функції mysql_query().

Дякуб звичайно, а яка саме частина коду відповідає за розміщення  в стовпчик id_user, id пользователя?
(це я просто так пишу для свого інтересу) Я лише зрозумів що ви вибрали таблицю location_users і вибрали поля id_user,location . А що означає  VALUES (14, 'WV')? Підкажіть будь-ласка якщо Вам не тяжко.

27

Re: Як виводити дані з бази на документ з розширенням php?

це означає що в таблиці location_users добавиться новий рядок id як ви уже сказали вставиться автоматично
а в стовпець id_user буде записано 14 і в стовпець location буде записано WV.

Тобто цю команду можна пояснити так. Встав в таблицю location_users в стовпці id_user, location значення 14, WV

28

Re: Як виводити дані з бази на документ з розширенням php?

…мені потрібно з нуля пояснувати, чому відрізняються квадрітні дужки від круглих, двойні лапки від одноточних і так далі... на даний час такого підручника я не знайшо!

А що ж таке читали ви?

29 Востаннє редагувалося Stadnik Roman (07.05.2013 01:38:39)

Re: Як виводити дані з бази на документ з розширенням php?

truesupport написав:

це означає що в таблиці location_users добавиться новий рядок id як ви уже сказали вставиться автоматично
а в стовпець id_user буде записано 14 і в стовпець location буде записано WV.

Тобто цю команду можна пояснити так. Встав в таблицю location_users в стовпці id_user, location значення 14, WV

( якщо честно то я заплутався! Прошу вибачення якщо не правий! Но мені потрібно щоб стовпець id_user містив в себе id ігрока а стовпець location містив ID локації!
Особливо я не зрозумів ось цього що ви написали "Тобто цю команду можна пояснити так. Встав в таблицю location_users в стовпці id_user, location значення 14, WV"
В моїй базі є 3 таблиці
location - там знаходяться локації
location_users - це я збираюся використовувати як перехід ігроків по локацям
users - тут знаходяться всі зареєстровані гравці

30

Re: Як виводити дані з бази на документ з розширенням php?

мені потрібно щоб з таблиці users брався id ігрока і вводився в таблицю location_users в столпец id_user

31

Re: Як виводити дані з бази на документ з розширенням php?

Окей, що таке перехід між локаціями я не зрозумів. Якщо вам не тяжко попробуйте пояснити.

Якщо у вас зв'язок one-to-one між локаціями та гравцями (тобто один гравець не може бути одночасно в декількох локаціях) то чому б не зробити колонку в таблиці users де буде зберігатися номер локації.

На рахунок мого останнього коментаря я не знаю як детальніше пояснити єдине що я не зовсім вірно вибрав тип даних для другого параметра я чомусь подумав що він має текстовий тип. Я попробую трошки змінити приклад.

INSERT INTO location_users(id_user,location) VALUES (14, 18)

14 - id user, 18 - location

мені потрібно щоб з таблиці users брався id ігрока і вводився в таблицю location_users в столпец id_user

Мені вас дуже тяжко зрозуміти, чесно :)

Я попробую здогадатись чого ви хочете. Ви пишете гру де є багато гравців і багато локацій. Кожен гравець має перебувати в певній локації. В грі передбачено що гравець може міняти свою локацію. Момент коли гравець міняє локацію визначає гра ( написана на PHP ). Я думаю що в момент коли відбувається зміна локації ви в PHP повинні мати id гравця і id локації в яку він прямує. Тоді вам потрібно зробити наступні речі. Зробити запит до таблиці location_users і перевірити чи не існує уже запису в таблиці де є гравець з таким самим id як поточний. Якщо такий запис існує то просто змінити в ньому старий  location на новий, якщо не існує то добавити новий запис до таблиці з поточний користувачем і його новою локацією.

Якщо я все правильно зрозумів напишіть будь ласка, а то самому можна нагадати і наробити багато чого а потім ще довше міняти як було (це я з свого досвіду говорю :) )

32

Re: Як виводити дані з бази на документ з розширенням php?

(((
Мені не зручно що я Вас так мордую!
Я завтра Вам все детально дозповім, бо зараз я відключаюся (4:25 година)
Но скажу ще пару слів! Детально передивившись те що я написав я і сам не зрозумів що саме я від Вас хотів!
Завтра все перероблю і опишу в чому моя проблема!

33 Востаннє редагувалося Stadnik Roman (07.05.2013 10:21:18)

Re: Як виводити дані з бази на документ з розширенням php?

Ігрок може переміщатися по локаїям натискаючи на силки!
Тепер я зліплю все до купи що в мене є!
база(в таблицю location я додав парц локації)

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(50) NOT NULL,
  `password` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=cp1251;
CREATE TABLE `loсation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `opes` varchar(100) NOT NULL, 
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251;

CREATE TABLE `location_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(50) NOT NULL,
  `location` int(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=cp1251;

При переході з профиля ігрок потрапляє на файл mapa.php
те що є на данний момент у файлі

<html>
<head>
<link href="css/mapa.css" rel="stylesheet" type="text/css" /> 
</head>
<body>

<?php
include_once ("cone.php"); 
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'"); 
$query = "select * from location order by id"; // там много разных операторов, советую почитать в интернете о запросах MySQL 
 $sql = mysql_query($query); 
 $row = mysql_fetch_array($sql); 
 echo "<center>".$row['name'];
 echo "<br>Описание локации: ".$row['opes'];
 

?>
</body>
</html>
</html>

при вікриті в браузері цей файл відображає те що є під id1 в таблиці location!
Тепер потрібно зробити переходи з id1 на id2 або на id3! Для цього потрібно в таблиці location_users
заповнити стовпці (зараз воне не заповнені ось в цьому мені потрібно щоб ви допомогли)
Стовпець id заповнюється автоматично (auto_increment), стовпець id_user містить в собі ID користувача, а стовпець location містить в собі ID локації, де зараз знаходиться користувач. При переході гравця в іншу локацію - оновлювати значення поля location у даного гравця.
Оновлення значення відбувається через запит в БД:

$query = "update название_таблицы set location='тут_новый_id_локации' where id_user='тут_id_пользователя'"; 
mysql_query($query);

Пізніше потрібно зробити перехід ігрока по локація
Для цього робимо силки

<a href="/mapa.php?loc=1">локация 1</a> 
<a href="/mapa.php?loc=2">локация 2</a> 
<a href="/mapa.php?loc=3">локация 3</a>

відповідний код в PHP:

if($_GET['loc']=="1"){ тело функции апдейта БД на первую локацию} 
if($_GET['loc']=="2"){ тело функции апдейта БД на вторую локацию} 
if($_GET['loc']=="3"){ тело функции апдейта БД на третью локацию}

Допоможіть мені будь-ласка з цим -
Стовпець id заповнюється автоматично (auto_increment), стовпець id_user містить в собі ID користувача, а стовпець location містить в собі ID локації, де зараз знаходиться користувач. При переході гравця в іншу локацію - оновлювати значення поля location у даного гравця.

34

Re: Як виводити дані з бази на документ з розширенням php?

Хмм в вас все правильно написано (особливо те що російською) вам треба просто з'єднати 2 куска коду. Припустимо id гравця ви дістанете з сесії тоді можна написати так.

if($_GET['loc']=="2"){
$query = "UPDATE location_users SET location = 2 WHERE id_user = $userId";
mysql_query($query)
} 

p.s. код не перевіряв можуть бути помилки.

35 Востаннє редагувалося Stadnik Roman (07.05.2013 20:31:40)

Re: Як виводити дані з бази на документ з розширенням php?

Ось так ?

<html>
<head>
<link href="css/mapa.css" rel="stylesheet" type="text/css" /> 
</head>
<body>

<?php
include_once ("cone.php"); 
mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'"); 
$query = "select * from location order by id"; // там много разных операторов, советую почитать в интернете о запросах MySQL 
 $sql = mysql_query($query); 
 $row = mysql_fetch_array($sql); 
 echo "<center>".$row['name'];
 echo "<br>Описание локации: ".$row['opes'];
 
if($_GET['loc']=="1"){ тело функции апдейта БД на первую локацию} 
if($_GET['loc']=="2"){ тело функции апдейта БД на вторую локацию} 
if($_GET['loc']=="3"){ тело функции апдейта БД на третью локацию}

#Оновлення значення поля location у даного гравця відбувається через запит в БД:
$query = "update название_таблицы set location='тут_новый_id_локации' where id_user='тут_id_пользователя'"; 
mysql_query($query);


if($_GET['loc']=="2"){
$query = "UPDATE location_users SET location = 2 WHERE id_user = $userId";
mysql_query($query)
} 

?>

<a href="/mapa.php?loc=1">локация 1</a> 
<a href="/mapa.php?loc=2">локация 2</a> 
<a href="/mapa.php?loc=3">локация 3</a> 
</center>

</body>
</html>
</html>

Лишилося тільки підключити сесії і провірити роботоспособність коду?

36

Re: Як виводити дані з бази на документ з розширенням php?

Щось не так?

37

Re: Як виводити дані з бази на документ з розширенням php?

Stadnik Roman написав:

Щось не так?

Це дурне питання. Якщо вас це влаштовує, то все так. Якщо вас щось не влаштовує - напишіть, що саме.

38

Re: Як виводити дані з бази на документ з розширенням php?

Здраствуйте. Відразу кажу що я не починаю знову до вас приставати з питаннями про локації в грі, проект я закинув і зараз вчу php. Але у мене виникла ідея про переходах по локаціях (хочу запитати чи це може спрацювати) повертатися до проекту поки не вивчив php не буду, просто цікаво. Ось у чому ідея полягає ...
Є база:

CREATE TABLE `loсation` ( 
`id` int (11) NOT NULL AUTO_INCREMENT, 
`name` varchar (100) NOT NULL, / / имя локации 
  `opes` varchar (100) NOT NULL, / / описание локации 
  `img` varchar (100) NOT NULL, / / фото локации 
  `url1` varchar (100) NOT NULL, / / пишем ссылку на файл php 
  `url2` varchar (100) NOT NULL, / / пишем ссылку на файл php 
  `url3` varchar (100) NOT NULL, / / пишем ссылку на файл php 
  PRIMARY KEY (`id`) 
  ) ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT utf8_general_ci; 

Тепер ми виносимо на файл mapa.php дані з бази все що є під номером id1
буде виводитися ім'я, опис і картинка локацій а також буде виводитися три силки на інші файли php (все що під номером id1). Наприклад те що є в базі даних в рядку url1 буде силка на файл loc2.php, при переході на цей файл там теж будуть виводитися дані з бази але не під id1 а під id2, а під і id2 там є інші дані в базі (назва, опис і картинка локації а також переходи на файли php в яких будуть виводитися дані з різних id) і так далі ...
Я ясно виклав свою спосіб переходу по локаціям? Це може спрацювати? Які плюси і мінуси? Зарание спасибі!

39 Востаннє редагувалося koala (21.05.2013 06:07:07)

Re: Як виводити дані з бази на документ з розширенням php?

Stadnik Roman написав:

Тепер ми виносимо на файл mapa.php дані з бази все що є під номером id1
буде виводитися ім'я, опис і картинка локацій а також буде виводитися три силки на інші файли php (все що під номером id1). Наприклад те що є в базі даних в рядку url1 буде силка на файл loc2.php, при переході на цей файл там теж будуть виводитися дані з бази але не під id1 а під id2, а під і id2 там є інші дані в базі (назва, опис і картинка локації а також переходи на файли php в яких будуть виводитися дані з різних id) і так далі ...
Я ясно виклав свою спосіб переходу по локаціям? Це може спрацювати? Які плюси і мінуси? Зарание спасибі!

Головний недолік: треба буде багато однакових файлів php, які відрізняються тільки id. Це довго, муторно і порушує принцип DRY ("Don't repeat yourself") - не повторюйся! Якщо є певний шаблон, в який вганяються всі параметри локації, то такий шаблон має бути запрограмованим один раз в одному місці.
Як це можна зробити? Або "в лоб" - посиланнями /mapa.php?id=id1 або через приховані post-форми, тістечка-кукіси, зміну адреси в запиті через mod_replace (найпопулярніший зараз варіант, і найкультурніший - посилання виду /mapa3 чи /mapa/id3 вигляють значно привабливіше).

40

Re: Як виводити дані з бази на документ з розширенням php?

koala написав:
Stadnik Roman написав:

Тепер ми виносимо на файл mapa.php дані з бази все що є під номером id1
буде виводитися ім'я, опис і картинка локацій а також буде виводитися три силки на інші файли php (все що під номером id1). Наприклад те що є в базі даних в рядку url1 буде силка на файл loc2.php, при переході на цей файл там теж будуть виводитися дані з бази але не під id1 а під id2, а під і id2 там є інші дані в базі (назва, опис і картинка локації а також переходи на файли php в яких будуть виводитися дані з різних id) і так далі ...
Я ясно виклав свою спосіб переходу по локаціям? Це може спрацювати? Які плюси і мінуси? Зарание спасибі!

Головний недолік: треба буде багато однакових файлів php, які відрізняються тільки id. Це довго, муторно і порушує принцип DRY ("Don't repeat yourself") - не повторюйся! Якщо є певний шаблон, в який вганяються всі параметри локації, то такий шаблон має бути запрограмованим один раз в одному місці.
Як це можна зробити? Або "в лоб" - посиланнями /mapa.php?id=id1 або через приховані post-форми, тістечка-кукіси, зміну адреси в запиті через mod_replace (найпопулярніший зараз варіант, і найкультурніший - посилання виду /mapa3 чи /mapa/id3 вигляють значно привабливіше).

Так, ваш спосіб набагато кращий, тому я і почав вчити php.