Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2011, 20:01   #1
ubun
Форумчанин
 
Аватар для ubun
 
Регистрация: 06.12.2010
Сообщений: 198
По умолчанию почему не сохранются данные при N-ом добавлении строк

Делаю такой сайт для облегчения бумажной волокиты
http://opr.hut2.ru (логин-admin пароль-111)
но он пока в разработке
при добавлении строк он не сохраняется и не возможно вычислить данные
ubun вне форума Ответить с цитированием
Старый 13.12.2011, 21:18   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

а что тут - телепаты?
где код?
ADSoft вне форума Ответить с цитированием
Старый 13.12.2011, 21:27   #3
ubun
Форумчанин
 
Аватар для ubun
 
Регистрация: 06.12.2010
Сообщений: 198
По умолчанию Извиняюсь вот код index.html

Код HTML:
<
<title>Отчет предметника</title>
<script>
var c=0; //счётчик количества строк
function addline()
{
	c++; // увеличиваем счётчик строк
	s=document.getElementById('table').innerHTML; // получаем HTML-код таблицы
	s=s.replace(/[\r\n]/g,''); // вырезаем все символы перевода строк
	re=/(.*)(<tr id=.*>)(<\/table>)/gi; 
                // это регулярное выражение позволяет выделить последнюю строку таблицы
	s1=s.replace(re,'$2'); // получаем HTML-код последней строки таблицы
	s2=s1.replace(/\[\d+\]/gi,'['+c+']'); // заменяем все цифры к квадратных скобках
                // на номер новой строки
	s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')');
                // заменяем аргумент функции rmline на номер новой строки
	s=s.replace(re,'$1$2'+s2+'$3');
                // создаём HTML-код с добавленным кодом новой строки
	document.getElementById('table').innerHTML=s;
                // возвращаем результат на место исходной таблицы
	return false; // чтобы не происходил переход по ссылке
}
function rmline(q)
{
                // if (c==0) return false; else c--;
                // если раскомментировать предыдущую строчку, то последний (единственный) 
                // элемент удалить будет нельзя.
	s=document.getElementById('table').innerHTML;
	s=s.replace(/[\r\n]/g,'');
	re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi');
                // это регулярное выражение позволяет выделить строку таблицы с заданным номером
	s=s.replace(re,'');
                // заменяем её на пустое место
	document.getElementById('table').innerHTML=s;
	return false;
}

</script>
<style type="text/css">
<!--
.стиль1 {font-size: 10px}
-->
</style>
</head>

<body>
<form action="save_form.php" method="post" name="test_form">
<span id="table">
<div align="center">
<table border=1 cellspacing=0 cellpadding=3 width="663" bordercolorlight="#000000">
<caption><span lang="ru">Отчет предметника</span><p><span lang="ru">Учитель:&nbsp;&nbsp;&nbsp; </span><select name="FIO1" size="1" id="FIO1">
<option>Фатхрахманова Л. Ш.</option>
<option>Хадиева Р. Р.</option>
<option>Сунгатуллин Р. Т.</option>
</select><span lang="ru">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; учебный год </span><select name="uchgod1" size="1" id="uchgod1">
<option selected>2011-2012</option>
<option>2012-2013</option>
<option>2013-2014</option>
</select><span lang="ru">&nbsp;&nbsp; </span>&nbsp; <span lang="ru">&nbsp;&nbsp;&nbsp;&nbsp;
</span>&nbsp; </p>
</caption>
<tr><td width="160" align="center" bgcolor="#CCFFFF">
	<p align="center"><b><span lang="ru">Предмет</span></b></td>
	<td width="48" align="center" bgcolor="#CCFFFF"><b><span lang="ru">класс</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">четверь/ год</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">количество учащихся</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">&quot;5&quot;</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">&quot;4&quot;</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">&quot;3&quot;</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">&quot;2&quot;</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><p><b><span lang="ru">успеваемость</span></b></p>
	  <p><strong>0.0</strong></p></td>
	<td align="center" bgcolor="#CCFFFF"><p><b><span lang="ru">качество</span></b></p>
	  <p><strong>0.0</strong></p></td>
	<td align="center" bgcolor="#CCFFFF"><p><b><span lang="ru">обученность</span></b></p>
	  <p><strong>0.0</strong></p></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">количество уроков по 
	плану</span></b></td><td align="center" bgcolor="#CCFFFF"><b>
	<span lang="ru">количество пройденных уроков</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">теория</span></b></td>
	<td width="61" align="center" bgcolor="#CCFFFF"><b><span lang="ru">практика</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru">контрольные работы</span></b></td>
	<td align="center" bgcolor="#CCFFFF"><b><span lang="ru" id="table">
	лабораторные работы</span></b></td><td align="center" bgcolor="#CCFFFF">
<b>
<a href="#" onClick="return addline();">добавить</a></b></td></tr>
<tr id="newline" nomer="[0]">
<td width="160" align="center">
<span id="table0">
<select name="pred1" size="1" id="pred1">
  <option>Математика</option>
 ...
</span></span></span></span></span></td>
<td align="center"><input name="lab1" type="text" id="lab1" size="13"></td>
<td valign="top" align="center"><a href="#" onclick="return rmline(0);">удалить</td></tr></table>
</div>
</span>
<input type="submit" class="buttons" value="Сохранить данные" />
</form>
ubun вне форума Ответить с цитированием
Старый 13.12.2011, 21:28   #4
ubun
Форумчанин
 
Аватар для ubun
 
Регистрация: 06.12.2010
Сообщений: 198
По умолчанию А вот save_form.php

Код:
/* Соединяемся с базой данных */

$hostname = "localhost"; // название/путь сервера, с MySQL

$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")

$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)

$dbName = "otp"; // название базы данных



/* Таблица MySQL, в которой будут храниться данные */

$table = "otpsh";



/* Создаем соединение */

mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");



/* Выбираем базу данных. Если произойдет ошибка - вывести ее */

mysql_select_db($dbName) or die (mysql_error());



/* Определяем текущую дату */

$cdate = date("Y-m-d");



/* Составляем запрос для вставки информации в таблицу

name...date - название конкретных полей в базе;

в $_POST["test_name"]... $_POST["test_mess"] - в этих переменных содержатся данные, полученные из формы */

$query = "INSERT INTO $table SET FIO='".$_POST['FIO1']."', uchgod='".$_POST["uchgod1"]."',

pred='".$_POST["pred1"]."', klass='".$_POST["klass1"]."',
chetv='".$_POST["chetv1"]."', kolvo='".$_POST["kolvo1"]."',
piat='".$_POST["piat1"]."', chetr='".$_POST["chetr1"]."',
tri='".$_POST["tri1"]."', dva='".$_POST["dva1"]."',
uspev='".$_POST["uspev1"]."', kach='".$_POST["kach1"]."',
obush='".$_POST["obush1"]."', kolur='".$_POST["kolur1"]."',
proiur='".$_POST["proiur1"]."', teor='".$_POST["teor1"]."',
prac='".$_POST["prac1"]."', kontr='".$_POST["kontr1"]."',
lab='".$_POST["lab1"]."'";



/* Выполняем запрос. Если произойдет ошибка - вывести ее. */

mysql_query($query) or die(mysql_error());



/* Закрываем соединение */

mysql_close();



/* В случае успешного сохранения выводим сообщение и ссылку возврата */

echo ("<div style=\"text-align: center; margin-top: 10px;\">

<font color=\"green\">Данные успешно сохранены!</font>

<br /><br />

<a href=\"index.html\">Вернуться назад</a></div>");
ubun вне форума Ответить с цитированием
Старый 14.12.2011, 01:17   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ну так и ошибку же надо было запостить:
Цитата:
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /home/o/opr.hut2.ru/WWW/save_form.php on line 33
Не могу создать соединение
Проблемы с соединением с БД - проверяйте параметры подключения к БД.
Цитата:
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
Это на хостинге не прокатывает - хостинг не Denwer, надо заполнять реальными значениями, предоставленными вам хостером.
Andkorol вне форума Ответить с цитированием
Старый 14.12.2011, 07:59   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

INSERT INTO $table SET FIO='".$_POST['FIO1'] ....

по инсерту другой синтаксис insert into * (список полей) values (список значений)

у вас смесь insert & update
update table SET .....
ADSoft вне форума Ответить с цитированием
Старый 14.12.2011, 09:10   #7
ubun
Форумчанин
 
Аватар для ubun
 
Регистрация: 06.12.2010
Сообщений: 198
По умолчанию

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

Я думаю так, у меня работает только первая строка, а остальные как бы фантомы, они только видны а значения от них не сохраняются
ubun вне форума Ответить с цитированием
Старый 14.12.2011, 10:59   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
INSERT INTO $table SET FIO='".$_POST['FIO1'] ....
по инсерту другой синтаксис insert into * (список полей) values (список значений)
у вас смесь insert & update
update table SET .....
Так тоже можно:
PHP код:
INSERT [LOW_PRIORITY DELAYED HIGH_PRIORITY] [IGNORE]
    [
INTOtbl_name
    SET col_name
={expr | DEFAULT}, ...
    [ 
ON DUPLICATE KEY UPDATE
      col_name
=expr
        
[, col_name=expr] ... ] 
Andkorol вне форума Ответить с цитированием
Старый 14.12.2011, 20:43   #9
ubun
Форумчанин
 
Аватар для ubun
 
Регистрация: 06.12.2010
Сообщений: 198
По умолчанию

Я посмотрел, но здесь надо задать конкретное число строк, а у меня оно не определенное количество.
ubun вне форума Ответить с цитированием
Старый 15.12.2011, 08:01   #10
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от ubun Посмотреть сообщение
Я посмотрел, но здесь надо задать конкретное число строк, а у меня оно не определенное количество.
если я правильно понял суть проблемы, то цикл вам в помощь
Код:
$counter = 10;//число строк которые должны быть всталены получить можно скажем $_GET  параметром
$sql = "INSERT INTO %table  (%field_1,%field_2....%field_x)  values (";


for($i=0;$i<$counter;$i++)
{
   $sql .= "$value[$i][1],$value[$i][2], ....$value[$i][x]";
   //где $value многомерный массив значений которые надо воткнуть в базу
   if($i==$counter){$sql .= ');';}

}
mysq_query($sql);
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сохранить данные при динамической добавлении строк ubun PHP 10 12.12.2011 21:32
Не обновляются данные в базу данных при добавлении новой строки! в чем ошибка?!!!! Elly-lll Помощь студентам 2 17.05.2011 22:57
ComboBox при добавлении строки cw_o Win Api 1 02.04.2010 09:20
Проблема при добавлении в БД Oleg Romanchuk БД в Delphi 2 12.01.2009 12:21
Изменение формул при добавлении строк EducatedFool Microsoft Office Excel 4 02.12.2008 14:39