[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод и обновление данных
Гость_Игорь
Добрый день.

Нужно сделать клиентскую базу, чтоб выводилась информации о компании и одновременно можно было бы ее обновить, если внесены обновленные данные.

У меня есть две таблицы:
base - хранится список компаний, адреса, телефоны
 `ID` bigint(20) default NULL,
`created` date NOT NULL default '0000-00-00',
`company` text NOT NULL,
`adres` text NOT NULL,
`phone` text NOT NULL,
`vid` text NOT NULL,
`filial` text NOT NULL,
`plan` varchar(500) NOT NULL,
`meneger` text NOT NULL


contact - сотрудники компании
`ID` bigint(20) default NULL,
`fio` text NOT NULL,
`dol` text NOT NULL,
`phone` text NOT NULL,
`comment` text NOT NULL


Вывожу карточку компании:

<?php include 'config.php';
error_reporting(E_ALL & ~E_NOTICE);

// Далее поплыли в запрос
$id = htmlspecialchars(trim($_GET['id']));
// Проверка, пустая или нет, существует иль жэ нет
$company = mysql_query("SELECT * FROM `base`, `contact` WHERE base.id = '$id' LIMIT 1");
while($row = mysql_fetch_assoc($company))
{
?>
<form
action="base.php?id=<?php echo $id; ?>" method="post" name="edit_form">
<input
type="hidden" name="update" value='<?php echo $id; ?>' />

<img
src="images/menu.jpg">
<p
class="node"><a href="/index.php">Главная</a> / <?php echo $row[company]; ?></p>
<Div
id="left">
<table
class="base" cellspacing="0" cellpadding="0" border="0">
<tr>
<td
class="l" alt="Название, ООО">Название</td>
<td
class="r"><input name='company' value='<?php echo $row[company]; ?>'></td>
</tr>
<tr
class="black">
<td
class="l" alt="Название улицы, № дома, офиса">Адрес</td>
<td
class="r"><input name='adres' value='<?php echo $row[adres]; ?>'></td>
</tr>
<tr>
<td
class="l" alt="222-22-22, 222-22-23">Телефон</td>
<td
class="r"><input name='pphone' value='<?php echo $row[phone]; ?>'></td>
</tr>
<tr
class="black">
<td
class="l" alt="Чем занимается">Вид деятельности</td>
<td
class="r"><input name='vid' value='<?php echo $row[vid]; ?>'></td>
</tr>
<tr>
<td
class="l" alt="Названия филиалов">Филиалы</td>
<td
class="r"><input name='filial' value='<?php echo $row[filial]; ?>'></td>
</tr>
<tr
class="black">
<td
class="plan" alt="Что будем делать с данной организацией"><span><b>План действий</b><span></td>
<td
class="r"><input class='plan' name='plan' value='<?php echo $row[plan]; ?>'></td>
</tr>
</table>
<?php

}
$query = "UPDATE `base` SET `company`='$company' WHERE id='id';
?>

<input type="
submit" value="Отправить" name="submit_edit">
</form>

<a class="
block" href="#"><p class="slide">Описание</p></a>
<div class="panel2" id="block">
<
TABLE class="opisanie" cellspacing="0" cellpadding="0" border="0" width="100%">
<
TR class="black">
<
TD class="l"><span style="padding-left:7px;"><b>Дата</b></span></TD>
<
TD class="right"><b>Описание</b></TD>
</
TR>

<?php


// Проверка, пустая или нет, существует иль жэ нет
$opisanie = mysql_query("SELECT * FROM `base`, `hod` WHERE base.id = '$id' AND base.id = hod.id ORDER by DATE ASC");
while($row = mysql_fetch_assoc($opisanie))
{
?>
<TR>
<TD
class="date"><input name='date' value='<?php echo $row[date]; ?>'></TD>
<TD
class="r"><textarea name='opisanie' /> <?php echo $row[opisanie]; ?> </textarea></TD>
</TR>
<?php

}
?>


Выводит данные отлично, а вот записывать изменения не хочет.

Подскажите пожалуйста, как сделать обновление измененных данных.




Спустя 38 минут, 14 секунд (10.07.2011 - 13:38) Invis1ble написал(а):
Цитата
Подскажите пожалуйста, как сделать обновление измененных данных.

наверно после
Цитата
$query = "UPDATE `base` SET `company`='$company' WHERE id='id';

нужно выполнить запрос? ;)
mysql_query($query);

Спустя 12 минут, 44 секунды (10.07.2011 - 13:51) Гость_Игорь написал(а):
не совсем понял, если написать:

<?php
}
$query = "UPDATE `base` SET `company`='$company' WHERE id='id';
mysql_query(
$query);

?>

не работает

если
<?php
}
mysql_query("UPDATE `base` SET `company`='$company' WHERE id='id');

?>


тоже не работает.

А вообще функция обновления UPDATE находится в правильном месте кода, или она должна стоять перед выводом данных?

Сначала UPDATE
а потом Select или у меня правильный порядок?

Спустя 1 минута, 31 секунда (10.07.2011 - 13:52) Winston написал(а):
$query = "UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id; 
mysql_query($query);

Спустя 4 минуты, 12 секунд (10.07.2011 - 13:56) Гость_Игорь написал(а):
не работает

Спустя 3 минуты, 53 секунды (10.07.2011 - 14:00) Гость_Игорь написал(а):
меняет название компании на Resource id #4

Спустя 18 минут, 39 секунд (10.07.2011 - 14:19) Гость_Игорь написал(а):
Получилось:

поменял код
$query = "UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id; 
mysql_query($query);


на

if (!isset($_POST['save'])) {
# Принимаем данные из формы
$company = isset($_POST['company'])?$_POST['company']:NULL;
mysql_query("UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id);
}


и поставил его перед запросом на вывод информации из базы.

полный код:

<?php include 'config.php';
error_reporting(E_ALL & ~E_NOTICE);

// Далее поплыли в запрос
$id = htmlspecialchars(trim($_GET['id']));

/* Если была нажата кнопка редактирования, вносим изменения */
if (!isset($_POST['save'])) {
# Принимаем данные из формы
$company = isset($_POST['company'])?$_POST['company']:NULL;
mysql_query("UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id);

// Проверка, пустая или нет, существует иль жэ нет
$company = mysql_query("SELECT * FROM `base`, `contact` WHERE base.id = '$id' LIMIT 1");
while($row = mysql_fetch_assoc($company))
{
?>

<form
action="base.php?id=<?php echo $id; ?>" method="post" name="edit_form">
<input
type="hidden" name="update" value='<?php echo $id; ?>' />

<img
src="images/menu.jpg">
<p
class="node"><a href="/index.php">Главная</a> / <?php echo $row[company]; ?></p>
<Div
id="left">
<table
class="base" cellspacing="0" cellpadding="0" border="0">
<tr>
<td
class="l" alt="Название, ООО">Название</td>
<td
class="r"><input name='company' value='<?php echo $row[company]; ?>'></td>
</tr>
<tr
class="black">
<td
class="l" alt="Название улицы, № дома, офиса">Адрес</td>
<td
class="r"><input name='adres' value='<?php echo $row[adres]; ?>'></td>
</tr>
<tr>
<td
class="l" alt="222-22-22, 222-22-23">Телефон</td>
<td
class="r"><input name='pphone' value='<?php echo $row[phone]; ?>'></td>
</tr>
<tr
class="black">
<td
class="l" alt="Чем занимается">Вид деятельности</td>
<td
class="r"><input name='vid' value='<?php echo $row[vid]; ?>'></td>
</tr>
<tr>
<td
class="l" alt="Названия филиалов">Филиалы</td>
<td
class="r"><input name='filial' value='<?php echo $row[filial]; ?>'></td>
</tr>
<tr
class="black">
<td
class="plan" alt="Что будем делать с данной организацией"><span><b>План действий</b><span></td>
<td
class="r"><input class='plan' name='plan' value='<?php echo $row[plan]; ?>'></td>
</tr>
</table>
<?php

}
}

?>

Спустя 11 минут, 6 секунд (10.07.2011 - 14:30) peretc001 написал(а):
решил зарегистрироваться. Похоже я тут надолго...

появилась новая проблема, если выйти из карточки и зайти в нее заново, поле company (которое я пытаюсь обновлять) удаляется.

заменил
if (!isset($_POST['save'])) {
# Принимаем данные из формы
$company = isset($_POST['company'])?$_POST['company']:NULL;
mysql_query("UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id);
}

на
$company = $_POST['company']; 
mysql_query("UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id);

не пойму, почему данные удаляются.

Складывается ощущение, что обновление данных происходит при обновлении страницы, а не только когда я нажимаю кнопку "Обновить"

Спустя 11 минут, 9 секунд (10.07.2011 - 14:41) peretc001 написал(а):
вроде получилось:

<?php include 'config.php';
error_reporting(E_ALL & ~E_NOTICE);

// Далее поплыли в запрос
$id = htmlspecialchars(trim($_GET['id']));

/* Если была нажата кнопка редактирования, вносим изменения */
if(isset($_POST['update']))
{
# Принимаем данные из формы
$company = $_POST['company'];
mysql_query("UPDATE `base` SET `company`='".$company."' WHERE id=".(int)$id);
}
// Проверка, пустая или нет, существует иль жэ нет
$comp = mysql_query("SELECT * FROM `base`, `contact` WHERE base.id = '$id' LIMIT 1");
while($row = mysql_fetch_assoc($comp))
{
?>

Спустя 28 минут, 25 секунд (10.07.2011 - 15:10) peretc001 написал(а):
подскажите, а как записать в базу если выводится из двух таблиц:

$opisanie = mysql_query("SELECT * FROM `base`, `hod` WHERE base.id = '$id' AND base.id = hod.id ORDER by DATE ASC");


Запись вида
mysql_query("UPDATE `hod` SET `data`='".$data."', `opisanie`='".$opisanie."' WHERE base.id = hod.id AND id = ".(int)$id);

не работает

Спустя 5 часов, 26 минут, 11 секунд (10.07.2011 - 20:36) peretc001 написал(а):
У меня есть поля date и opisanie

<input name='date' value='<?php echo $row[date]; ?>'>
<textarea
name='opisanie' /><?php echo $row[opisanie]; ?></textarea>

Как сделать чтоб каждой строке автоматом присваивалось значение +1, при наличии записи, т.е. вида:
date
opisanie

date1
opisanie1

date2
opisanie2

Я так понимаю это через $i++ делается, а как конкретно не пойму. Помогите.

Спустя 7 минут, 57 секунд (10.07.2011 - 20:44) Winston написал(а):
Примерно так:
$i = 0;
while($row = mysql_fetch_assoc($query))
{
$i++;
echo "<input name='date" . $i . "' value='" . $row['date'] . "'>
<textarea name='opisanie"
. $i . "' />'" . $row['opisanie'] . "'</textarea>";
}

Спустя 10 минут, 58 секунд (10.07.2011 - 20:55) peretc001 написал(а):
Блин, круто. Спасибо!

Спустя 6 минут, 54 секунды (10.07.2011 - 21:02) peretc001 написал(а):
PHPprogramer, скажите, пожалуйста, а как мне теперь это включить сюда:
if(isset($_POST['update']))
{
# Принимаем данные из формы
$date = $_POST['date'];
$opisanie = $_POST['opisanie'];

mysql_query("UPDATE `hod` SET `hod`.`date`='".$date."', `hod`.`opisanie`='".$opisanie."' WHERE id ='$id'");
}


Чтоб записалось изменение не только date, opisanie, но и
date2, opisanie2
date3, opisanie3
и т.д.

Спустя 18 часов, 2 минуты, 18 секунд (11.07.2011 - 15:04) peretc001 написал(а):
можно сделать немного по другому:
есть
id
date
opisanie
Добавляем ячейку iid

этот iid = id из другой таблицы

Собственно вопрос, как обновить записи

<?php
if(isset($_POST['update']))
{
mysql_query("UPDATE opisanie SET
id = '
$_POST[id]',
date = '
$_POST[date]',
opisanie = '
$_POST[opisanie]'
WHERE iid = '
$id' ");
}


// Проверка, пустая или нет, существует иль жэ нет
$opisanie = mysql_query("SELECT * FROM opisanie WHERE iid = '$id' ORDER by DATE ASC");
while($row = mysql_fetch_assoc($opisanie))
{

?>
<TR>
<input
type="hidden" name='iid' value='<?php echo $row[id]; ?>'>
<TD
class="date"><input name='date' value='<?php echo $row[date]; ?>'></TD>
<TD
class="r"><textarea name='opisanie' /> <?php echo $row[opisanie]; ?> </textarea></TD>
</TR>


<?php
} ?>


Такая конструкция не работает. Чую истина где-то рядом :)

Проблема в том, что тут не добавление новой записи через Inser into, а обновление нескольких существующих.

В итоге выводится примерно следующее:
Дата | Описание
2011-07-07 | Проведена встреча
2011-07-08 | Выставлен счет
и т.д.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.