Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Произвольное удаление данных из последней записи ХЕЛП
 
 автор: gestalt   (23.07.2007 в 23:19)   письмо автору
 
 

Здравствуте программеры!
Подскажите пожалуйсто начинающему пхпэшнику правила работы MySqL.
Дело вот в чём я создал таблицу, данные в которую вносятся через форму, в данном случаи всё работает. Потом написал скрипт который выводит всю таблицу в удобном виде. И вот сижу довольный своми результатами, и замечаю что последняя запись в таблице( вывод всех клиентов) полупустАЯ, остались толькО поля id и name_client. Проведя ряд экспериментов я обнаружил что оказываетя если пообновлять страницу данные почему то из последней записи стираются, особенно это быстро происходит в опере на втором обновлени. При дабавлении я использую как и положено INSERT а при выводе всех клиентов SELECT, тоесть никаких удалений и обновлений быть недолжно! PHP:
<?#Добавление клиента
Error_Reporting(E_ALL & ~E_NOTICE);
if(isset($_POST['name_client']))
{ /* соединямеся с базой данных */
$dbName="test";
$userstable="banner_client";/* Таблица MySQL, в которой хранятся данные */
MYSQL_CONNECT("localhost", "root", "") or die("Не могу подключится к базе ");
mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
$name_client=$_POST['name_client'];
$adress_client=$_POST['adress_client'];
$tel_client=$_POST['tel_client'];
$email_client=$_POST['email_client'];
$info_client=$_POST['info_client'];
$data_reg=date("Y-m-d");
//echo $name_client.$adress_client.$tel_client.$email_client.$info_client;
//добавляем данные в таблицу о клиенте
$query ="INSERT INTO $userstable VALUES(null,'$name_client','$adress_client','$email_client', '$tel_client', '$info_client','$data_reg','','','','','','','','','','','','')";
MYSQL_QUERY($query) or die("Не могу добавить клиента");
//echo"<script> alert('Новый клиент $name_client добавлен!')</script>";
MYSQL_CLOSE(); /* Закрыть соединение */
Header("Location: ../admin.php?tabl=all_clients");
}else{
Echo "Ошибка передачи пременных";
}
?>



PHP:
<?
#выводим всех клиентов в виде таблицы 10 столбцов
#
$dbName="ribak";
$userstable="banner_client";/* Таблица MySQL, в которой хранятся данные */
MYSQL_CONNECT("localhost", "root", "") or die("Не могу подключится к базе ");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных $dbName");

/*+ ВЫВОДИМ ТАБЛИЦУ С КЛИЕНТАМИ ++++++++ */
$query = "SELECT * FROM $userstable";
$result_p = MYSQL_QUERY($query) or die("Не могу вывести $query");
$rows = mysql_num_rows($result_p);
$all_client_str_array=array();//массив хранящий данные о клиете
for($i=0; $i<$rows; $i++)
{
$row = mysql_fetch_array($result_p);
$id=$row['id'];
$name_client=$row['fio'];if($_GET['name_client']== $name_client){$bgcolor= "#FF0000";}else{$bgcolor= "#fffff";} //подсветка пользователя
$adress_client=$row['address'];
$tel_client=$row['tel'];
$email_client=$row['email'];
$info_client=$row['info'];
$data_reg=$row['date_reg'];
$razmer_i_kod=$row['razmer_i_kod'];
$linck_banner=$row['linck_banner'];
$patch_banner=$row['patch_banner'];
$alt=$row['alt'];
$grupa=$row['grupa'];
$size_banner=$row['size_banner'];
$data_up=$row['data_up'];
$date_down=$row['date_down'];
$pokaz=$row['pokaz'];
$click=$row['click'];
array_push($all_client_str_array," <tr>
<td bgcolor= $bgcolor align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 ><b>".$n_client++.".</td>
<td align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 >".$name_client."</td>
<td bgcolor= $bgcolor align=\"center\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><a href ='admin.php?tabl=red_clients&id_client=".$id."'><img src='img/1r.gif' border=0 alt ='Редактировать клиента'></a></td>
<td bgcolor= $bgcolor align=\"center\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><a href ='admin.php?tabl=all_banner&id_client=".$id."'><img src='img/3r.gif'border=0 alt ='Подключить банер клиента'></a></td>
<td bgcolor= $bgcolor align=\"center\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><a href ='admin.php?tabl=dell_clients&id_dell=".$id."'><img src='img/dell.gif' border=0 alt ='Удалить клиента'></a></td>
<td bgcolor= $bgcolor align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 >".$adress_client."</td>
<td align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 >".$tel_client."</td>
<td bgcolor= $bgcolor align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 >".$email_client."</td>
<td bgcolor= $bgcolor align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 >".$info_client."</td>
<td bgcolor= $bgcolor align=\"left\" valign=\"middle\" style='border-bottom: 1px solid #416273;'><font face=Verdana size=1 >".$data_reg."</td>
</tr>");
}
MYSQL_CLOSE(); /* Закрыть соединение */
?>



PHP:
<?#Пример как это подключается

ECHO "<table>".implode(' ',$all_client_str_array)."</table>";
?>


Тут еще возникает вопрос а почему остаются только поля id и fio, fio имеет теже свойства что и адресс и телефон?
Кто хочет пообщатся в асе вот моя:312497623

-- Структура таблицы `banner_client`
--

CREATE TABLE `banner_client` (
`id` int(11) NOT NULL auto_increment,
`fio` text NOT NULL,
`address` text NOT NULL,
`tel` text NOT NULL,
`email` text NOT NULL,
`info` text NOT NULL,
`date_reg` datetime NOT NULL default '0000-00-00 00:00:00',
`razmer_i_kod` int(11) NOT NULL default '0',
`linck_banner` text NOT NULL,
`patch_banner` text NOT NULL,
`alt` text NOT NULL,
`grupa` text NOT NULL,
`size_banner` text NOT NULL,
`data_up` datetime NOT NULL default '0000-00-00 00:00:00',
`date_down` datetime NOT NULL default '0000-00-00 00:00:00',
`pokaz` varchar(6) NOT NULL default '0',
`click` varchar(6) NOT NULL default '0',
`pokaz_redy` varchar(6) NOT NULL default '0',
`pokaz_end` varchar(6) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=180 ;

   
 
 автор: marcus   (23.07.2007 в 23:51)   письмо автору
 
   для: gestalt   (23.07.2007 в 23:19)
 

я только что вспомнил как прекрасно пользоваться стандартным виндузовым блокнотом :))))

попробуйте цикл for() заменить на while - проще и возможно поможет.


<?php
...
$all_client_str_array=array();
while(
$row mysql_fetch_array($result_p))
{
 
$id=$row['id']; 
 ... 
и т.д.
}
...
?>

   
 
 автор: gestalt   (24.07.2007 в 08:27)   письмо автору
 
   для: marcus   (23.07.2007 в 23:51)
 

непомогло
так вот урезал код для читаемсти. Код 100% рабочий за исключением потери данных. Поэтому убрал все навороты табличные вывожу все данные через ECHO но всё равно последняя записть частично стирается. PHP:
 <?
  
if(isset($_POST['name_client']))// данные все предаются проверил так что все поля записаны будут
  
{
 include
"../config.php";  /* соединямеся с базой данных */
  
$name_client=$_POST['name_client'];
  
$adress_client=$_POST['adress_client'];
  
$tel_client=$_POST['tel_client'];
  
$email_client=$_POST['email_client'];
  
$info_client=$_POST['info_client'];
  
$data_reg=date("Y-m-d H:i:s");
 
$query ="INSERT INTO $userstable VALUES(null,'$name_client','$adress_client','$tel_client', '$email_client', '$info_client','$data_reg','','','','','','','','','','','','')";
 
MYSQL_QUERY($query) or die("Не могу добавить клиента");
  
//echo"<script> alert('Новый клиент $name_client добавлен!')</script>";
  
MYSQL_CLOSE();    /* Закрыть соединение */ 
  
Header("Location:  ../admin.php?tabl=all_clients");
  }else{
  Echo 
"Ошибка передачи пременных";
  }
 
?>
 <?
 
/*+ ВЫВОДИМ ТАБЛИЦУ С КЛИЕНТАМИ +++++++++ */
 
$query "SELECT * FROM $userstable";
 
$result_p MYSQL_QUERY($query) or die("Не могу вывести query");
 
$row_cls mysql_num_rows($result_p);
  
$all_client_str_array=array();//массив хранящий строки таблицы
  
while($row_cl mysql_fetch_array($result_p)) 
 { 
 
$all_id=$row_cl['id']; 
  
$all_name_client=$row_cl['fio'];
   
$all_adress_client=$row_cl['address'];
   
$all_tel_client=$row_cl['tel'];
   
$all_email_client=$row_cl['email']; 
   
$all_info_client=$row_cl['info'];
   
$all_data_reg=$row_cl['date_reg'];
   
 echo 
"$all_id  $all_name_client $all_adress_client $all_tel_client $all_email_client $all_info_client  $all_data_reg<br>";
   }
   
//теперь стоит нажать F5 в любом броузере и последня строка теряет записи 
 
?>

   
 
 автор: marcus   (25.07.2007 в 01:34)   письмо автору
 
   для: gestalt   (24.07.2007 в 08:27)
 

код вроде правильный...

при обновлении строка последняя именно "затирается"? или добавляется ещё одна, но полупустая?

   
 
 автор: gestalt   (25.07.2007 в 05:32)   письмо автору
 
   для: marcus   (25.07.2007 в 01:34)
 

Вот пример:
Значит имеем два скрипта отдельных

1. добавляет: id имя адрес емаил телефон дата
123 Дима Иванов Фрунзе 56-77 dima@email.ru 45-45-45 2007-11-05

2. Просто выводит всю таблицу

a) Первый вывод таблицы, работает правильно

122 Вася Пупкин Кирова 56-77 vasya@email.ru 75-65-45 2007-11-11
123 Дима Иванов Фрунзе 56-77 dima@email.ru 45-45-45 2007-11-05

б)НО если жать F5 то последня строка( записть ) принимает такой вид:

122 Вася Пупкин Кирова 56-77 vasya@email.ru 475-65-45 2007-11-11
123 Дима Иванов 0000-00-00

А что еще странней это то что когда я добавляю в 3м скрипте остальные данные и потом вывожу через подобный но соответственной другой скрипт скажем 4 более насыщенную таблицу значения в дополнительных полях не стираются:

122 Вася Пупкин Кирова 56-77 vasya@email.ru 475-65-45 2007-11-11 456 66
123 Дима Иванов 0000-00-00 0 0

Тоеть стираются данные толко из полей адрес мыло телефон и дата обнуляется

   
 
 автор: Trianon   (25.07.2007 в 09:23)   письмо автору
 
   для: gestalt   (24.07.2007 в 08:27)
 

На 99% проблема Ваших скриптов в том, что Вы модифицируете таблицы БД и выводите отчет одним и тем же http-запросом.

SQL-запросы на изменение данных и SQL-запросы на вывод состояния следует разделять внешним клиентским редиректом со сменой типа запроса header("Location: show.php");

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования