Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
1

работа с БД

11.02.2011, 08:39. Просмотров 730. Ответов 14
Метки нет (Все метки)

приветствую всех кто читает моё сообщение. У меня есть вопрос,заключается он в следующем , как изменить данные в столбике,в БД. Например. Когда я захожу на сайт свой,в мою таблицу записываются новые данные. И мне надо что бы когда я зашёл следующий раз,данные в том же столбике в том же месте,поменялись. Вот мой код. Когда ты пишешь Левая,в столбик записывается int со значением 1. Мне надо что бы когда ещё раз пишешь Левая,значение таблицы не добавлялась,а изменялась на 2.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<body bgcolor=#737994>
<center><h1>Голосование</h1></center><br>
<center><b>Это голосование за лучшую фотографию. Кого выберешь ты? Красотку,или же свинью? Решать тебе!<br>
p.s что бы проголосовать за левую фотографию,напиши Левая,что бы за правую,естественно Правая.</b> </center>
<center><img src="1/10.jpg">&nbsp;&nbsp;&nbsp;<b>vs</b>&nbsp;&nbsp;<img src="1/11.jpg">    </centeR>
<center><form method="post">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="golos1" type="text" >
<br><input type="submit" value="OK" name="button">    </center>
<?php
 $g1=0;
 $g2=0;
 $name=$_POST['golos1'];
 if ($_POST['button']==TRUE) {
 if ($name=="Левая"){
    $g1++;
 echo "<b>Вы проголосовали за левую фотографию,спасибо,вас голос учтён.<b><br />",
    "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
        // Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "asd"; // Имя базы данных
 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
 
// Выбираем нашу базу данных
mysql_select_db($dbname, $link);
 
// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "insert into customer6 values(0,$g1,
'(095) 555-55-55')";
mysql_query($query, $link);
 
// Закрываем соединение
 
 $res=mysql_query('SELECT * FROM customer6');
 if (!$res) die ('Ошибка базы данных'.mysql_error());
 while ($row=mysql_fetch_assoc($res))
 {
    echo '<br />',$row['per'] ;
    }
  mysql_close($link);
 }
 }
 if ($name=="Правая"){
    if ($_POST['button']==TRUE) {
    $g2++;
    echo "<b>Вы проголосовали за правую фотографию,спасибо,вас голос учтён.<b><br />",
    "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
        // Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "asd"; // Имя базы данных
 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
 
// Выбираем нашу базу данных
mysql_select_db($dbname, $link);
 
// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "insert into customer6 values(0,$g2,
'(095) 555-55-55')";
 
mysql_query($query, $link);
 
$res=mysql_query('SELECT * FROM customer6');
 if (!$res) die ('Ошибка базы данных'.mysql_error());
 while ($row=mysql_fetch_assoc($res))
 {
    echo '<br />',$row['per'] ;
    }
  mysql_close($link);
 
    }
    }
 
 
 ?>
<center><a href="Главная.html"><img src="1/3.gif"></a></center>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2011, 08:39
Ответы с готовыми решениями:

Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления
Помогите пожалуйста найти летиратуру, в которой бы описывались работа с...

Работа с Меню. Сохранение, печать, создать новый. Работа с рисованием
В общем сабж. Делается программа, которая должная Сохранять, печатать и...

Работа формы в фоне, вне фокуса (работа с раскладкой клавиатуры)
Как заставить это работать в фоне? Даный код работает пока форма в фокусе,...

Количество подведенного и отведенного тепла, работа сжатия, работа расширения
Определить количество подведенного и отведенного тепла, работу сжатия, работу...

Работа с файловой системой (системное название некоторых папок и работа со скрытыми документами)
Всем привет, подскажите каким образом можно из VBA сохранить документ txt в...

14
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 10:06 2
Во-первых... не надо писать два раза то, что можно написать один раз.
я про это...
PHP
1
2
3
4
5
6
7
8
9
10
11
                // Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "root"; // Имя пользователя
$dbpassword = ""; // Пароль
$dbname = "asd"; // Имя базы данных
 
// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);
 
// Выбираем нашу базу данных
mysql_select_db($dbname, $link);
везде удали и напиши это один раз в самом начале скрипта.
1
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 10:09  [ТС] 3
ну да.. это я уже понял,сделалнемного подругому,создал файл db_conect.php,где подключение идёт,и просто include_once,что бы вызвать.
А во-вторых? Мне ни как не понять как изменять.
0
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 10:35 4
К примеру html-форму лучше организовать будет так.
HTML5
1
2
3
4
<center><form method="post">
<input name="golos1" type="radio" value=1>Левая<br>
<input name="golos1" type="radio" value=2>Прававя<br>
<input type="submit" value="OK" name="button"></form></center>
и вместо проверок
[PHP]if ($name=="Левая"){ и if ($name=="Правая"){
использовать
PHP
1
if ($name==1){ и if ($name==2){
Далее... я точно не знаю структуру таблицы в базе данных. Но к примеру если у тебя первый столбец не auto_increment, то для добавления новой записи использовать такой запрос
PHP
1
$query = "INSERT INTO customer6 VALUES( $name, $g2, '(095) 555-55-55' )";
сейчас все опишу....

Добавлено через 20 минут
Только обязательно проверь названия полей в таблице базы данных. И я пока удалил $g1 и $g2... их добавим позже.
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
32
33
34
35
36
37
38
39
40
41
42
43
/*проверка нажатия кнопки и корректность переданных значений*/
if ($_POST['button']==TRUE && is_numeric( $name ) && ( $name==1 || $name==2 ) )
{
    if ($name==1)
    {
        echo "<b>Вы проголосовали за левую фотографию,спасибо,вас голос учтён.<b><br />",
            "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
    }
    if ($name==2)
    {
        echo "<b>Вы проголосовали за правую фотографию,спасибо,вас голос учтён.<b><br />",
            "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
    }
    /*Выборка из базы данных с условием что за эту фотку уже голосовали*/
    /*Я не знаю структуру таблици и предполагаю что первое поле таблицы называется id, которое использую в следующем запросе*/
    $query = "SELECT id FROM customer6 WHERE id=".$name;
    $result = mysql_query( $query, $link );
    /*Если таких записей не найдено.(за фото еще не голосовали)*/
    if ( mysql_num_rows ( $result ) ==0 )
    {
        // Добавляем запись в нашу таблицу customer
        // т.е. делаем sql запрос
        $query = "insert into customer6 values($name, $g1, '(095) 555-55-55')";
        mysql_query($query, $link);
    }
    /*если за фото голосовали, то надо обновить данные. Прибавить единицу.*/
    else
    {
        /*А вот тут и происходит обновление*/
        $query = "UPDATE customer6 SET название_поля_в_котором_хранится_количество_ответов=название_поля_в_котором_хранится_количество_ответов+1 WHERE id=".$name;
        mysql_query($query, $link);
    }
    
         
        $res=mysql_query('SELECT * FROM customer6');
        if (!$res) die ('Ошибка базы данных'.mysql_error());
        while ($row=mysql_fetch_assoc($res))
        {
            echo '<br />',$row['per'] ;
        }
}
// Закрываем соединение
mysql_close($link);
Можешь написать какие поля у тебя в таблице, чтобы я не гадал?)))
1
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 10:44  [ТС] 5
первое поле id,это естественно,второе per. Там должна сохраняться,инкринироваться,заменяться переменная $a(она отвечает за голос Левая).Ещё поле есть. Поле tel,но я его не использую. и вторая строка. там тоже самое для переменно $b(за правую). Да и спасибо,с радио кнопками куда круче,но в скором времени я сделаю кликом,осталось узнать как это делать)
0
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 10:47 6
а поле id у тебя auto increment, увеличивается придобавлении записи?
1
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 10:58  [ТС] 7
я немного изменил таблицу. 1 столбик - id.2-per(для левой.).3-per2(для правой).каплю недопонял. сейчас я тебе скажу всё что у меня,и тогда построй мне плиз тоже самое только с тем что у меня. заранее спасибо.(про id,да увееличивается)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<body bgcolor=#737994>
<center><h1>Голосование</h1></center><br>
<center><b>Это голосование за лучшую фотографию. Кого выберешь ты? Красотку,или же свинью? Решать тебе!<br>
p.s что бы проголосовать за левую фотографию,напиши Левая,что бы за правую,естественно Правая.</b> </center>
<center><img src="1/10.jpg">&nbsp;&nbsp;&nbsp;<b>vs</b>&nbsp;&nbsp;<img src="1/11.jpg">    </centeR>
<center><form method="post">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="golos1" type="radio" value=1>Левая<br>
<input name="golos1" type="radio" value=2>Прававя<br>
<br><input type="submit" value="OK" name="button"></form></center>
<?php
 $g1=0;
 $g2=0;
 $name=$_POST['golos1'];
 if ($_POST['button']==TRUE) {
 if ($name==1){
    $g1++;
 echo "<b>Вы проголосовали за левую фотографию,спасибо,вас голос учтён.<b><br />",
    "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
        // Данные для mysql сервера
include('db.php');
 
// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "insert into customer6 values(0,$g1,
'$g2')";
mysql_query($query, $link);
  mysql_close($link);
  }
  }
 if ($name=="2"){
    if ($_POST['button']==TRUE) {
    $g2++;
    echo "<b>Вы проголосовали за правую фотографию,спасибо,вас голос учтён.<b><br />",
    "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
        // Данные для mysql сервера
include('db.php');
 
// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "insert into customer6 values(0,$g1,
'g2')";
mysql_query($query, $link);
mysql_close($link);
}
}
 ?>
<center><a href="Главная.html"><img src="1/3.gif"></a></center>
вот так. вроде всё работает,ттолько странно,если голосую за левую,в таблицу записывается под per - 1 а под per2 -0. так и должно,но когда я голосую за правую,у меня per-0 и per2 тоже 0!. Ну вот я сделал...сделай плиз,что бы когда голосуекшь,записывалось,и сохранялось,а когда ещё раз голосуешь,берётся значение из таблицы,инкринируется,и перезаписывается,ну как я до этого писал. заранее спасибо.
0
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 11:12 8
Стой... не надо ни каких per1 и per2.
надо сделать так... id image_id per phone
где image_id - это $name. В последствии адреса картинок будут храниться в другой таблицу и у каждой будет свой id.
Таким образом добъешься вот такой структуры в таблице customer6
1 | 1 | 13 | телефон
2 | 2 | 22 | телефон
3 | 5 | 4 | телефон
Добавлено через 2 минуты
а по поводу добавления в базу двух нулей, это тут
PHP
1
2
3
$query = "insert into customer6 values(0,$g1, 'g2')";
надо исправить на
$query = "insert into customer6 values(0,$g1, $g2)";
1
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 11:18  [ТС] 9
может ты чего то не понял или я , но я хочу так. когда ты выбираешь левая,и жмёшь ок,то мы конектимся в таблицу,в первой колонке у нас 1,так как первый запрос id,дальше 1,так как мы дали 1 голос картинке,и дальше 0,так как у 2 картнки голосов нет. потом,когда мы повторно заходим на наш сайт,и жмём опять левая,мы конектимся к таблице,и там должно быть так : 1,так как мы не добавляем строку,а заменяем,дальше 2,так как мы проголосовали за фотографию 2ойй раз,и дальше 0. так как за 2ую никто не голосовал. потом опять же заходим на сайт,и голосуем за правую,опять же этим мы конектимся к таблице,и всё должно опять сменится так,первое 1,так как опять же мы заменили только значения,дальше 2 , так как до этого все баллы к фотограффиям сохранились,а дальше 1,так как мы только что голоснули за правую. ну и так далее. вот мне надо такой "круговорот" устроить.

Добавлено через 1 минуту
Цитата Сообщение от hellpass Посмотреть сообщение
$query = "insert into customer6 values(0,$g1, 'g2')";
надо исправить на
$query = "insert into customer6 values(0,$g1, $g2)";
блин точно спасибо!
0
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 11:40 10
Я-то все понял, просто наверное не могу понятно изложить свои мысли))) Попробую еще раз
к примеру есть таблица с полями
id - постоянно увеличивающееся поле
image_id - это номер картинка (в данном случае оно равно $name, и пока принимает значения 1 или 2)
per - это количество голосов за картинку (в зависимости от image_id).

К примеру база чистая и в ней нет записей.
Человек голосует за Левую (в данном случае $name = 1)
Сначала надо проверить, есть ли запись в таблице с image_id = $name (1)
если такой записи нету то добавляем ее
PHP
1
2
3
$query = "INSERT INTO customer6 values(NULL, $name, 1)";
//результатом добавления является запись в бд id-номер  | 1  |  1 
//первая еденица показывает что это левая картинка вторая еденица это значит что человек проголосовал первым и голос только один
Ну а если такая запись есть, то надо ее увеличить на 1
PHP
1
2
3
4
$query = "UPDATE customer6 SET per=per+1 WHERE image_id=".$name;
//результатом добавления является запись в бд id-номер  | 1  |  2
//еденица показывает что это левая картинка двойка показывает что у левой картинки два голоса
// потом при каждом голосе per будет увеличиваться
Тоже самое будет происходить и с правой картинкой, только в таблицы добавится запись
id-номер | 2 | 1
2 - правая, 1 - голос.
И если за левую проголосуют 5 человек, а за правую 25, то в таблице будут такие записи
id-номер | 1 | 5
id-номер | 2 | 25
А будет третья картинка "Средняя" у нее на html-форме в radio value будет равно 3. И за нее проголосуют 12 человек, то добавится еще одна запись и будет вот так
id-номер | 1 | 5
id-номер | 2 | 25
id-номер | 3 | 12
1
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 11:45  [ТС] 11
слушай,а ведь точно,просто я ещё не полностью синтаксис mysql знаю,поэтому мне трудно у меня к тебе есть просьба,напиши пожалуйста весь код,я тебе уже поднял 2 голоса,потому что ты меня оч выручил. Вот ты мне напишешь весь код,я буду смотреть там чё как,пойму и дальше сам бууд это применять,ну напишешь? Заранее спасибо))))
0
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 12:07 12
У меня вот так получилось. Но только я проверить не могу... на работе не установлено программного обеспечения)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<body bgcolor=#737994>
<center><h1>Голосование</h1></center><br>
<center><b>Это голосование за лучшую фотографию. Кого выберешь ты? Красотку,или же свинью? Решать тебе!<br>
p.s что бы проголосовать за левую фотографию,напиши Левая,что бы за правую,естественно Правая.</b> </center>
<center><img src="1/10.jpg">&nbsp;&nbsp;&nbsp;<b>vs</b>&nbsp;&nbsp;<img src="1/11.jpg">    </centeR>
<center><form method="post">
<input name="golos1" type="radio" value=1>Левая<br>
<input name="golos1" type="radio" value=2>Прававя<br>
<input type="submit" value="OK" name="button"></form></center>
 
<?php
include 'db_conect.php';
$g1 = 0;
$g2 = 0;
/*проверка нажатия кнопки и корректность переданных значений*/
if ($_POST['button']==TRUE && is_numeric( $name ) )
{
        if ($name==1)
            echo "<b>Вы проголосовали за левую фотографию,спасибо,вас голос учтён.<b><br />";
        if ($name==2)
            echo "<b>Вы проголосовали за правую фотографию,спасибо,вас голос учтён.<b><br />";
        /*Выбор записей с image_id равным 1 или 2 для отображения количества голосов*/
        $query = "SELECT image_id, per FROM customer6 WHERE image_id IN (1,2)";
        $result = mysql_query( $query );
        if ( mysql_num_rows ( $result ) )
            while ( $row = mysql_fetch_assoc( $result ) )
            {
                if ( $row['image_id'] == 1 ) $g1 = $row['per'];
                elseif ( $row['image_id'] == 2 ) $g2 = $row['per'];
            }
        echo "<b>Проголосовали за левую фотографию : </b>&nbsp;",$g1,"<br />","<b>Проголосовали за правую фотографию : </b>&nbsp;&nbsp;",$g2;
        /*Выборка из базы данных с условием что за эту фотку уже голосовали*/
        /*Я не знаю структуру таблици и предполагаю что первое поле таблицы называется id, которое использую в следующем запросе*/
        $query = "SELECT id FROM customer6 WHERE image_id=".$name;
        $result = mysql_query( $query, $link );
        /*Если таких записей не найдено.(за фото еще не голосовали)*/
        if ( mysql_num_rows ( $result ) ==0 )
        {
                // Добавляем запись в нашу таблицу customer
                // т.е. делаем sql запрос
                $query = "insert into customer6 values(NULL, $name, 1)";
                mysql_query($query, $link);
        }
        /*если за фото голосовали, то надо обновить данные. Прибавить единицу.*/
        else
        {
                /*А вот тут и происходит обновление*/
                $query = "UPDATE customer6 SET per=per+1 WHERE image_id=".$name;
                mysql_query($query, $link);
        }
        
                 
        $res=mysql_query('SELECT * FROM customer6') or die ('Ошибка базы данных'.mysql_error());
        while ($row=mysql_fetch_assoc($res))
        {
            echo '<br />',$row['per'] ;
        }
}
// Закрываем соединение
mysql_close($link);
?>
1
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 12:40  [ТС] 13
биг эс пэ сэ и за это,только вопрос,а про "Правая" тут ничегшо непроисходит да? Самому написать?

Добавлено через 20 минут
блин...короче у меня ничего не работает. во - первых у меня не пишет проголовала за правую и левую,во вторых он не записывает ничег в таблицу. скажи пожалуйста как всё должно быть в таблице,у меня так
img_id | per | per2
________________
(null) |(null)|(null)

Добавлено через 6 минут
блин...давай всё заново тебе скажу. и у тебя почему то не объявлена переменная $name!. Вот что тебе надо будет? Вот у меня конект файл,db.php.Так. Таблица customer7(новую сделал),в ней сча так
img_id | per | per2
________________
(null) |(null)|(null)
Дальше...а дальше всё тоже самое
0
hellpass
189 / 189 / 31
Регистрация: 04.10.2010
Сообщений: 505
11.02.2011, 12:40 14
Должно быть id | image_id | per
0
tomaticus
49 / 49 / 5
Регистрация: 02.01.2011
Сообщений: 505
11.02.2011, 14:36  [ТС] 15
всё отлично работает! сПС тебе БИГ! обращусь если что!)
0
11.02.2011, 14:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2011, 14:36

Нужна книга, где рассматриваются работа с прерываниями, указатели, работа с памятью, ассемблерные вставки
Привет всем! Подскажите, пожалуйста, хорошую книгу по C (именно C, не C++)....

Работа с файлом (корректный код, некорректная работа программы)
Для записи и чтения файла использую разные функции. По одиночке они работают...

Symfony2, работа с типом Collection, работа с базовой формой
Здравствуйте. Осваиваю создание CRUD приложения на Symfony 2, на примере....


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru