Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
1

Вывод из базы в цикле

02.12.2009, 23:03. Показов 2534. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я вот начал писать свой движок, и сталкнулся с 1 проблемой. ПРоблема при выводе подарков в профиле пользователя...


Значит пользователь выбирает подарок, если у него достачно монет, то он его дарит... Подарок записывается в базу, подсчитываются монеты и тыры пыры...

Значит трабл вот в чем, идет база с подарками 1 пользователя, его id 2 ...

[IMG]http://i047.***********/0912/49/0e64cbf2ee2a.jpg[/IMG]


Фишка в том, что бы все эти подарки выводились в цикле в профиле... ПРоблема такая, что выводится только 1 подарок, но столько раз, сколько ты его подаришь...


[IMG]http://i052.***********/0912/a6/2e0aed93b03b.jpg[/IMG]


Сам код ....



Проверяем существования подарков пользователя

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
session_start();
$user_id = $_SESSION['user_id'];
 
if ($myrow['presents'] == 0) {$presents = "У пользователя нет подарков";}
if ($myrow['presents'] == 0) {$podarkiprofile = "У пользователя нет подарков";}
 
$resultpodarok = mysql_query ("SELECT * FROM podarki WHERE user_id='$id' "); 
$myrowpodarok = mysql_fetch_array($resultpodarok);
 
 
if ($myrow['presents'] != 0)  //мини профиль
 
{
$presents  = "Есть подарок";
}
 
 
 
if ($myrow['presents'] != 0)  // расширенный профиль
 
{
$links = $myrowpodarok['podarok']; // ссылка на подарок из базы
 
$commentspodarok = $myrowpodarok['comment']; // комментарий к подарку в базе 
 
$podarkiprofile = "<img src='$links' alt='Подарок' title='$commentspodarok' />"; //переменная подарка
}
 
 
?>






Вывод в профиле

PHP
1
2
3
4
5
do
{
echo $podarkiprofile;
}
while ( $myrowpodarok = mysql_fetch_array($resultpodarok));
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2009, 23:03
Ответы с готовыми решениями:

Не выводятся данные из базы в цикле
Почему не выводятся все данные из базы, удовлетворяющие условию id_art='$_GET'? Может что-то не...

Вывод названия изображения в цикле
Приветствую всех. Суть проблемы в том, что значение $images одинаковое. Допустим если выводится 5...

Smarty : Вывод результата работы пользовательской функции в цикле
Следуя синтаксису Smarty должно выглядеть как-то так, но не работает. Беглый гуглинг ничего особо...

Выборка из базы в цикле?
Есть массив $newvest = array(75, 27,35,4,67); Число элементов в массиве может быть произвольным....

18
2378 / 941 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
03.12.2009, 14:18 2
Может так:
PHP
1
2
3
while ( $myrowpodarok = mysql_fetch_assoc($resultpodarok)){
echo $podarkiprofile;
}
2
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
03.12.2009, 14:50  [ТС] 3
так же само, только 4 подарка вместо 5

Добавлено через 17 минут
пришол домой и догадался


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if ($myrow['presents'] != 0 )
{
 
$podarok = mysql_query ("SELECT * FROM podarki WHERE user_id = '$id' ");
$mypodarok = mysql_fetch_array($podarok);
 
do
{
echo "<img src='$mypodarok[podarok]'>";
}
while ($mypodarok = mysql_fetch_array($podarok));
 
}
else
{
 
echo "У пользователя нет подарков";
 
}
1
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
03.12.2009, 15:08 4
сидел глазел че у тебя там за фигня происходит и нифига увидеть не мог... потом наконец увидел
Цитата Сообщение от nepster Посмотреть сообщение
ПРоблема такая, что выводится только 1 подарок, но столько раз, сколько ты его подаришь...
это потому, что ты переменной $podarkiprofile присваиваешь значения принадлежащие первой записи, а потом ее НЕ ИЗМЕНЯЯ выводишь столько раз, сколько всего записей

PHP
1
2
3
4
5
6
7
8
do
{
$links = $myrowpodarok['podarok']; // ссылка на подарок из базы
$commentspodarok = $myrowpodarok['comment']; // комментарий к подарку в базе 
$podarkiprofile = "<img src='$links' alt='Подарок' title='$commentspodarok' />"; //переменная подарка
echo $podarkiprofile;
}
while ( $myrowpodarok = mysql_fetch_array($resultpodarok));
Добавлено через 45 секунд
Цитата Сообщение от nepster Посмотреть сообщение
пришол домой и догадался
вот блин, чуть-чуть не успел
2
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
03.12.2009, 19:21  [ТС] 5
все нор на спасибо кликнул, не жалко =)
1
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
01.05.2010, 15:28 6
Слушай, если тебе не жалко.. можешь кинуть как ты реализовал эту систему.
не могу додумать сделать такую вот систему.

У пользователей есть баллы и они выбирают подарок.
К примеру у пользователя 1000 монет... он покупает и у него остаёться к примеру 900.. отнимаеться цена за подарок.

Заранее спасибо ))
0
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
01.05.2010, 17:06  [ТС] 7
это я просто практиковался, к сожалению кодов не осталось, так как тренировался лично для себя...

Собственно сделать очень легко, в базе делаем таблицу юзерс, когда пользователь авторизован в сессию записываем его id (очень удобно следить за пользователем)... далее есть например подарок.
Когда мы нажимаем купить из базы достается значение монет пользователя где id равно сесинному
id, то есть работаем с залогининым пользователем и не скаким другим. И просто вычитаем из значения из базы значение стоимости подарка, если стоимость подарка выше чем значение монет из базы то например пишем у вас недостаточно средств, если нет то значение из базы минус значение стоимости подарка а результат пишем обратно в базу, на кратком коде примерно так:

$dengi - количество денег пользователя
100 - стоимость падарка

PHP
1
2
3
4
5
6
7
if($dengi<100)
{echo "У вас недостаточно средств";}
else
{
$dengi = $dengi - 100;
//Далее перезаписываем $dengi обратно в базу и например перенаправляем пользователя на страницу с сообщение, все куплено (что бы при нажатии ф5 у пользователя не сняло еще 100), далее в базе можем отметить еще что пользователь приобрел то то то, можно создать отдельную базу и фиксировать в нее id подарка и id пользователя который его купил... 
}
1
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
03.05.2010, 13:50 8
Начал я делать это.. и вот целый день голову ломаю и не могу додуматься.
PHP начал изучать не так давно....

Есть у меня таблица пользователей.
id
login
password
avatar
email
activation
ip
dengi

И сделал таблицу с подарками как ты выкладывал. Так вот.. делаю вывод подарков из базы ( создал ещё одну базу magazin... такая же как и podarki но там добавлена ещё и cena)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<? 
 
$result20 = mysql_query("SELECT * FROM magazin");      
$myrow20 = mysql_fetch_array($result20);
 
do 
{
printf ("<p><input name='id' type='radio' value='%s'><label>Название %s <img src='images/podarki/%s'> | Цена: %s баллов</label></p>",$myrow20["id_podarka"],$myrow20["title"],$myrow20["podarok"],$myrow20['cena']);
}
 
while ($myrow20 = mysql_fetch_array($result20));
?>
 
<p> <input name="submit" type="submit" value="Купить!"></p>
 
</form>
Есть обработчик.. в обработчике не разберусь что мне сделать что бы всё работало >_<

Nepster, можешь помочь?Мб в аську написать..
Уже незнаю что и делать ))
0
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
03.05.2010, 14:40  [ТС] 9
Ну, я бы советовал немножко не так,

1 страница html
HTML5
1
<div><img src="1.jpg" alt="#" /></div> <div><a href="obrabotka.php?a=kupit&id=13">Купить</a></div>
Собственно здесь картинка подарка, описание, и кнопка купить, где переменная a говорит о покупке и перменная id номер подарка... После того как нажимаем купить, попадаем в

obrabotka.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$id = $_GET['id'];
 
 
$result20 = mysql_query("SELECT * FROM magazin WHERE podarok='id' "); // из магазина дастаем  подарок с id 13    
$myrow20 = mysql_fetch_array($result20); // пихаем его в массив
 
 
$result = mysql_query("SELECT * FROM users WHERE id='$ids' "); // достаем данные авторизованного юзера      
$myrow = mysql_fetch_array($result); // пихаем их в массив 
 
 
if($myrow['dengi'] < $myrow20['cena']) // если у пользователя меньше денег, чем цена подарка 
{
Header("location:index.php?error=1"); // кидаем пользователя на другую страницу и показываем ошибку
}
else
{
$dengi = $myrow['dengi'];
$dengi = $dengi - $myrow20['cena']; 
 
mysql_query("UPDATE тыры пыры обновляем яцейку юзера с деньгами WHERE id='ids' ");
//Далее в какой то другой базе ставим метку, что пользователь купил подарок, 
mysql_query("добавляем например id подарка и id юзера");
 
Header("location:index.php?error=2"); // кидаем юзера на другую страницу и показываем сообщение, подарок успешно приобретен... 
}
 
?>
Если быть в крадце то как то так,
1
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
03.05.2010, 14:50 10
Спасибо большое, сейчас буду пробовать )))

Но вот (<div><img src="1.jpg" alt="#" /></div> <div><a href="obrabotka.php?a=kupit&id=13">Купить</a></div> )

Всёже придёться в цикле выводить , не один же подарок )) Сейчас будем пробовать ^^
0
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
03.05.2010, 15:26  [ТС] 11
ну то не сложно, у меня было просто 8 видов оружие, и цикл мне нее нужен был ) Магазин был сугубо на html )
1
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
03.05.2010, 19:35 12
Попытался всё так и сделать.. выводит ошибку.

Warning: Cannot modify header information - headers already sent by (output started at /home/radio/data/public_html/magazin_o.php:25) in /home/radio/data/public_html/magazin_o.php on line 93

Ругаеться на Header....

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 <?php
 
 
 
$result20 = mysql_query("SELECT * FROM magazin WHERE podarok='$id_podarka' ",$db); // из магазина дастаем  подарок с id 13    
$myrow20 = mysql_fetch_array($result20); // пихаем его в массив
 
 
$result = mysql_query("SELECT * FROM users WHERE id='$ids' ",$db); // достаем данные авторизованного юзера      
$myrow = mysql_fetch_array($result); // пихаем их в массив 
 
 
if($myrow['dengi'] < $myrow20['cena']) // если у пользователя меньше денег, чем цена подарка 
{
Header("location:magazin/pokupka1.php"); // кидаем пользователя на другую страницу и показываем ошибку
}
else
{
$dengi = $myrow['dengi'];
$dengi = $dengi - $myrow20['cena']; 
 
mysql_query("UPDATE user SET dengi='$dengi' WHERE id='ids' ",$db);
//Далее в какой то другой базе ставим метку, что пользователь купил подарок, 
mysql_query("INSERT INTO (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','podarok)",$db);
 
Header("location:magazin/pokupka2.php"); // кидаем юзера на другую страницу и показываем сообщение, подарок успешно приобретен... 
}
 
?>
0
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
03.05.2010, 19:48 13
Цитата Сообщение от stimka Посмотреть сообщение
Warning: Cannot modify header information - headers already sent by (output started at /home/radio/data/public_html/magazin_o.php:25) in /home/radio/data/public_html/magazin_o.php on line 93
Тут сказано, что заголовок уже отправлен на 25 строке в файле magazin_o.php и не может быть отправлен на 93 строке в файле magazin_o.php. Возможно у Вас на 25 строке был вывод в браузер или ошибка.
Цитата Сообщение от stimka Посмотреть сообщение
mysql_query("INSERT INTO (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','podarok)",$db);
У Вас в запросе ошибка. Вы не закрыли одинарную кавычку после слова podarok и не указано имя таблицы.
PHP
1
mysql_query("INSERT INTO `tabName` (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','podarok')",$db);
1
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
03.05.2010, 20:06 14
Цитата Сообщение от romchiksoad Посмотреть сообщение
Тут сказано, что заголовок уже отправлен на 25 строке в файле magazin_o.php и не может быть отправлен на 93 строке в файле magazin_o.php. Возможно у Вас на 25 строке был вывод в браузер или ошибка.

У Вас в запросе ошибка. Вы не закрыли одинарную кавычку после слова podarok и не указано имя таблицы.
PHP
1
mysql_query("INSERT INTO `tabName` (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','podarok')",$db);
Спасибо большое ))

А ещё вопросик.. можно ли в базу вставить выдранное из массива?
К примеру $myrow20['cena']


PHP
1
mysql_query("INSERT INTO `tabName` (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','$myrow20['cena']')",$db);
Если да , как точнее должно прописываться?
0
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
03.05.2010, 20:11 15
Цитата Сообщение от stimka Посмотреть сообщение
Если да , как точнее должно прописываться?
Да. Пишите так: {$myrow20['cena']}
PHP
1
mysql_query("INSERT INTO `tabName` (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','{$myrow20['cena']}')",$db);
1
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
03.05.2010, 21:07 16
Вот почти всё сделал.. даже работает.

Но есть проблема. Пользователь покупает , но деньги не вычитаются и не записываеться новое значение в базу. К примеру подарок стоит 100.. у пользователя 200 , так 200 после покупки и осталось.
Не пойму в чём проблема.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if($myrow['dengi'] < $myrow20['cena']) // если у пользователя меньше денег, чем цена подарка 
{
echo "Подарок не куплен, так как у вас не хватает баллов"; // кидаем пользователя на другую страницу и показываем ошибку
}
else
{
$dengi = $myrow['dengi'];
$dengi2 = $dengi - $myrow20['cena']; 
 
mysql_query("UPDATE users SET dengi='$dengi2' WHERE id='ids' ",$db);
//Далее в какой то другой базе ставим метку, что пользователь купил подарок, 
mysql_query("INSERT INTO podarki (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','$podarok')",$db);
 
echo "Подарок куплен"; // кидаем юзера на другую страницу и показываем сообщение, подарок успешно приобретен... 
}
 
?>
0
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
03.05.2010, 21:21 17
Цитата Сообщение от stimka Посмотреть сообщение
mysql_query("UPDATE users SET dengi='$dengi2' WHERE id='ids' ",$db);
Может $ids, а не ids? Просто тут
Цитата Сообщение от stimka Посмотреть сообщение
mysql_query("INSERT INTO podarki (user_id,id_podarka,podarok) VALUES ('$ids','$id_podarka','$podarok')",$db);
стоит $ids...
2
25 / 14 / 2
Регистрация: 01.05.2010
Сообщений: 33
03.05.2010, 21:23 18
Спасибо тебе большое и Nepster*у ) Всё заработало)
1
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
03.05.2010, 23:39  [ТС] 19
ну это формальность писал на скорую руку )))

Нет проблем, как говорится чем сможем поможем )
0
03.05.2010, 23:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2010, 23:39
Помогаю со студенческими работами здесь

Вывод в цикле
Всем привет.Есть одна проблема в вёрстке и это происходит тогда когда вывожу в цикле записи.Вот...

Вывод сообщений в цикле While
Здравствуйте! Есть приложение, где пользователь задает две даты и получает результат - вывод...

Вывод html в цикле
Скажите пожалуйста, в цикле for вывожу html, после добавления второй строчки echo , вывод стал...

Вывод 1 результат в цикле
$query = R::find('test', &quot;user = ?&quot;, array($log)); foreach ( $query as $info ) { // в $info...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru