Помогите, пожалуйста, найти ошибку в простом коде...

12
iguania
На сайте с 10.12.2010
Offline
72
800

Доброе утро!

Не знаю, что за ерунда, но смотрю и не пойму, в чем тут дело. Интерпретатор выдает такую ошибку при выполнении этого скрипта

Parse error: syntax error, unexpected T_ELSE, expecting ',' or ';' in Z:\home\localhost\www\web_prog\do.php on line 45

На другой странице есть форма, которую обрабатывает этот скрипт

<?php


$host = 'localhost';
$db = 'web_prog';
$user = 'web_prog';
$pass = '12345';

if(mysql_connect($host, $user, $pass))
echo '<p>' . 'Подключение к серверу баз данных: успешно' . '</p>';
else
echo '<p>' . 'Не удалось подключиться к серверу баз данных: ' . mysql_error() . '</p>';

if(mysql_select_db($db))
echo '<p>' . 'Соединение с базой данных: успешно' . '</p>';
else
echo '<p>' . 'Не удалось соединиться с базой данных: ' . mysql_error() . '</p>';

if(isset($_POST['id']))
$id = $_POST['id'];
if(isset($_POST['numberWorks']))
$numberWorks = $_POST['numberWorks'];
if(isset($_POST['nameWorks']))
$nameWorks = $_POST['nameWorks'];
if(isset($_POST['cost']))
$cost = $_POST['cost'];
if(isset($_POST['brigadeCode']))
$brigadeCode = $_POST['brigadeCode'];
if(isset($_POST['duration']))
$duration = $_POST['duration'];
if(isset($_POST['sparePartNum']))
$sparePartNum = $_POST['sparePartNum'];
if(isset($_POST['sparePartName']))
$sparePartName = $_POST['sparePartName'];
if(isset($_POST['quantity']))
$quantity = $_POST['quantity'];
if(isset($_POST['unitsMeasure']))
$unitsMeasure = $_POST['unitsMeasure'];
if(isset($_POST['price']))
$price = $_POST['price'];
if(isset($_POST['sum']))
$sum = $_POST['sum'];

if(mysql_query("INSERT INTO work (id, numberWorks, nameWorks, cost, brigadeCode, duration, sparePartNum, sparePartName, quantity, unitsMeasure, price, sum) VALUES ($id, $numberWorks, $nameWorks, $cost, $brigadeCode, $duration, $sparePartNum, $sparePartName, $quantity, $unitsMeasure, $price, $sum)"))
echo '<p>' . 'Данные успешно добавлены в таблицу' . '</p>';
else
echo '<p>' . 'Невозможно добавить данные в таблицу: ' . mysql_error() . '</p>';


?>

Спасибо за помощь

iguania добавил 19.04.2011 в 12:52

Ошибка действительно была в этой строке

echo '<p>' . 'Данные успешно добавлены в таблицу' . '</p>'; 

исправил: поставил точку с запятой. Ошибка все-равно выдается... И даже, когда скрипт вообще пустой она все-равно выдается... Не пойму в чем прикол

Все всегда заканчивается хорошо. Если все закончилось плохо, значит, это еще не конец…
Ragnarok
На сайте с 25.06.2010
Offline
226
#1

во-первых, экранируй всё что вставляется в базу через mysql_real_escape_string

$duration = mysql_real_escape_string($_POST['duration']);

остальные по аналогии

во-вторых, в запросе mysql_query("INSERT INTO work (id, numberWorks, nameWorks, cost, brigadeCode, duration, sparePartNum, sparePartName, quantity, unitsMeasure, price, sum) VALUES ($id, $numberWorks, $nameWorks, $cost, $brigadeCode, $duration, $sparePartNum, $sparePartName, $quantity, $unitsMeasure, $price, $sum)") добавь кавычки для каждой переменной

mysql_query("INSERT INTO work (id, numberWorks, nameWorks, cost, brigadeCode, duration, sparePartNum, sparePartName, quantity, unitsMeasure, price, sum) VALUES (\"".$id."\", ... остальные по аналогии

Ragnarok добавил 19.04.2011 в 12:56

if(mysql_connect($host, $user, $pass))
echo '<p>' . 'Подключение к серверу баз данных: успешно' . '</p>';
else
echo '<p>' . 'Не удалось подключиться к серверу баз данных: ' . mysql_error() . '</p>';

а это замени на


mysql_pconnect($host, $user, $pass) or die("Не удалось подключиться к серверу баз данных");
//TODO: перестать откладывать на потом
iguania
На сайте с 10.12.2010
Offline
72
#2

Ragnarok, спасибо вам огромное за помощь.

iguania:
исправил: поставил точку с запятой. Ошибка все-равно выдается... И даже, когда скрипт вообще пустой она все-равно выдается... Не пойму в чем прикол

Этом момент мне абсолютно не понятен. И даже сейчас, когда сделал все как вы сказали, выдается одна и та же ошибка. Даже, когда скрипт вообще пуст, она выдается. Такое ощущение, что он где-то закэшировался...

Ragnarok
На сайте с 25.06.2010
Offline
226
#3

скинь код который сейчас

samimages
На сайте с 31.05.2009
Offline
427
#4
echo '<p>' . 'Подключение к серверу баз данных: успешно' . '</p>';

Это чего за комбинация?

echo'<p>Подключение к серверу баз данных: успешно</p>';

cделайте

Во всех случаях естественно

Опыт как иммунитет — приобретается в муках! Хостинг: экономия до 1300 руб + домен в подарок ( https://clck.ru/XLscf ) / Аудит семантики от 15К [долго] - ЛС
iguania
На сайте с 10.12.2010
Offline
72
#5
Ragnarok:
скинь код который сейчас

Файл do.php

<?php


$host = 'localhost';
$db = 'web_prog';
$user = 'web_prog';
$pass = '12345';

mysql_pconnect($host, $user, $pass) or die("Не удалось подключиться к серверу баз данных");

if(mysql_select_db($db, $link))
echo '<p>' . 'Соединение с базой данных: успешно' . '</p>';
else
die('<p>' . 'Не удалось соединиться с базой данных: ' . mysql_error() . '</p>');

if(isset($_POST['id']))
$id = mysql_real_escape_string($_POST['id']);
if(isset($_POST['numberWorks']))
$numberWorks = mysql_real_escape_string($_POST['numberWorks']);
if(isset($_POST['nameWorks']))
$nameWorks = mysql_real_escape_string($_POST['nameWorks']);
if(isset($_POST['cost']))
$cost = mysql_real_escape_string($_POST['cost']);
if(isset($_POST['brigadeCode']))
$brigadeCode = mysql_real_escape_string($_POST['brigadeCode']);
if(isset($_POST['duration']))
$duration = mysql_real_escape_string($_POST['duration']);
if(isset($_POST['sparePartNum']))
$sparePartNum = mysql_real_escape_string($_POST['sparePartNum']);
if(isset($_POST['sparePartName']))
$sparePartName = mysql_real_escape_string($_POST['sparePartName']);
if(isset($_POST['quantity']))
$quantity = mysql_real_escape_string($_POST['quantity']);
if(isset($_POST['unitsMeasure']))
$unitsMeasure = mysql_real_escape_string($_POST['unitsMeasure']);
if(isset($_POST['price']))
$price = mysql_real_escape_string($_POST['price']);
if(isset($_POST['sum']))
$sum = mysql_real_escape_string($_POST['sum']);

if(mysql_query("INSERT INTO work (id, numberWorks, nameWorks, cost, brigadeCode, duration, sparePartNum, sparePartName, quantity, unitsMeasure, price, sum) VALUES (\"".$id."\", \"".$numberWorks."\", \"".$nameWorks."\", \"".$cost."\", \"".$brigadeCode."\", \"".$duration."\", \"".$sparePartNum."\", \"".$sparePartName."\", \"".$quantity."\", \"".$unitsMeasure."\", \"".$price."\", \"".$sum."\")"))
echo '<p>' . 'Данные успешно добавлены в таблицу' . '</p>';
else
die('<p>' . 'Невозможно добавить данные в таблицу: ' . mysql_error() . '</p>');

?>

А это форма

<!-- Блок контента -->

<div id="content">
<h3>Заполнение позиций акта, выполненных на СТО ремонтных работ</h3>
<form action="do.php" method="post" name="sto" class="form">
<p>Акт Выполненных работ №&nbsp;<input type="text" name="id" id="id" /></p>
<table id="tb_work">
<tr>
<th>№ работ</th>
<th>Наименование работ (проблемы, с которыми клиент обратился на станцию)</th>
<th>Стоимость</th>
<th>Код бригады</th>
<th>Длительность</th>
</tr>
<tr>
<td><input type="text" name="numberWorks" /></td>
<td><input type="text" name="nameWorks" /></td>
<td><input type="text" name="cost" /></td>
<td><input type="text" name="brigadeCode" /></td>
<td><input type="text" name="duration" /></td>
</tr>
</table>
<table id="tb_sparePart">
<tr>
<th>№ зап. части</th>
<th>Наименование зап.частей</th>
<th>Количество</th>
<th>Единицы измерения</th>
<th>Цена</th>
<th>Сумма</th>
</tr>
<tr>
<td><input type="text" name="sparePartNum" /></td>
<td><input type="text" name="sparePartName" /></td>
<td><input type="text" name="quantity" /></td>
<td><input type="text" name="unitsMeasure" /></td>
<td><input type="text" name="price" /></td>
<td><input type="text" name="sum" /></td>
</tr>
</table>
<p><input type="submit" value="Сохранить Акт" /></p>
</form>
</div><!-- /content-->

iguania добавил 19.04.2011 в 13:40

samimages:
Это чего за комбинация?

echo'<p>Подключение к серверу баз данных: успешно</p>';

cделайте

Во всех случаях естественно

Да, спасибо за поправку, здесь действительно затупил что-то я

Ragnarok
На сайте с 25.06.2010
Offline
226
#6

какую сейчас ошибку выдает?

попробуй ещё убрать лишние пробелы

echo '<p>'.'Данные успешно добавлены в таблицу'.'</p>';

samimages
На сайте с 31.05.2009
Offline
427
#7
Да, спасибо за поправку, здесь действительно затупил что-то я

невочто))) синтаксис PHP богат на точки и запятые)))

M
На сайте с 19.04.2011
Offline
0
#8

и вместо "INSERT INTO table(col1,col2,col3) VALUES(\"v1\",\"v2\")"..

можно писать "INSERT INTO table(col1,col2,col3) VALUES('v1','v2','v3')"

а еще лучше - INSERT INTO table SET col1='v1', col2='v2', col3='v3'

orphelin
На сайте с 02.07.2006
Offline
261
#9

а если в конце поставить фигурные скобки:

else {

die('<p>' . 'Невозможно добавить данные в таблицу: ' . mysql_error() . '</p>');

}

не?

orphelin добавил 19.04.2011 в 13:56

miraagex:
а еще лучше - INSERT INTO table SET col1='v1', col2='v2', col3='v3'

чем лучше?

iguania
На сайте с 10.12.2010
Offline
72
#10
Ragnarok:
какую сейчас ошибку выдает?

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

Parse error: syntax error, unexpected T_ELSE, expecting ',' or ';' in Z:\home\localhost\www\web_prog\do.php on line 45

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

iguania добавил 19.04.2011 в 14:35

orphelin:
а если в конце поставить фигурные скобки:
else {
die('<p>' . 'Невозможно добавить данные в таблицу: ' . mysql_error() . '</p>');
}
не?

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

Думаю, что быть может стоит Денвер переустановить. Но не было такого у меня ни разу, да и скрипты подобные писал. Обычно, выдает ошибку, ищешь - исправляешь, и дальше все работает. А это уперся на одной ошибке и хоть ты его *.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий