Jump to content
  • 0

Нужна помощь!)


w1ndw0rk
 Share

Question

Дело в том что я хочу что-бы "index.php" не перезагружался при обновлении "<input name='new_address' type='text'".

И что-бы ошибки выводились перед <form>.

index.php


<?php
$result_city = mysql_query ("SELECT * FROM address WHERE address_code='$select_city'",$db);
if (mysql_num_rows($result_city) > 0)
{
$myrow_city = mysql_fetch_array($result_city);
}
do
{
printf ("<style>
#boxes%s .window {
position:absolute;
left:0;
top:0;
width:440px;
height:200px;
display:none;
z-index:9999;
padding:20px;
}
#boxes%s #dialog%s {
width:375px;
height:203px;
padding:10px;
background-color:#ffffff;
}
</style>
<p>%s <a name='modal' href='#dialog%s'>Изменить</a></p>
<div id='boxes%s'>
<div id='dialog%s' class='window'>
Изменение: %s | <a href='#'class='close'>Закрыть его</a>
<form action='process.php' method='post'>
<input name='new_address' type='text' value='%s' size='15' maxlength='35'>
<input name='id' type='hidden' value='%s'>
<input name='address_code' type='hidden' value='$select_city'>
<input type='submit' name='submit' value='Изменить'>
</form>
</div>
<div id='mask'>
</div> </div>",$myrow_city["id"],$myrow_city["id"],$myrow_city["id"],$myrow_city["address_name"],$myrow_city["id"],$myrow_city["id"],$myrow_city["id"],$myrow_city["address_name"],$myrow_city["address_name"],$myrow_city["id"]);
}
while ($myrow_city = mysql_fetch_array($result_city));
?>

process.php

<?php 
include('blocks/db.php');
if (isset($_POST['new_address']))
{
$new_address = $_POST['new_address'];
if($new_address == '')
{
unset($new_address);
}
}
if (isset($_POST['id']))
{
$id = $_POST['id'];
if($id == '')
{
unset($id);
}
}
if (isset($_POST['address_code']))
{
$address_code = $_POST['address_code'];
if($address_code == '')
{
unset($address_code);
}
}

$new_address = trim($new_address);


if (empty($new_address))
{
echo "<li>Необходимо указать адрес!</li>";
$error = 1;
}

if(strlen($new_address)>30)
{
echo "<li>Минимум 30 символов!</li>";
$error = 1;
}

if(strlen($new_address)<3)
{
echo "<li>Не меньше 3 символов!</li>";
$error = 1;
}

if (!get_magic_quotes_gpc())
{
$new_address = addslashes($new_address);
}

$new_address = htmlspecialchars($new_address);

if ($error == 0) {
if ($result = mysql_query("UPDATE address SET address_name='$new_address' WHERE id='$id'"))
{
echo 'Сохранено.';
}
else
{
echo 'Не сохранено.';
}
}
?>

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

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

а если по делу, w1ndw0rk, что запрос "ajax" в гугле даёт теперь? Что пробовали, и почему не получилось?

Link to comment
Share on other sites

  • 0

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

а если по делу, w1ndw0rk, что запрос "ajax" в гугле даёт теперь? Что пробовали, и почему не получилось?

как я понимаю оно не передает $new_address в process.php

и оно не хочет записываться в БД

Link to comment
Share on other sites

  • 0

1. разместите в начале второго вашего файла

var_dump($_POST);

так вы узнаете что приходит из формы.

2. если переменные приходят, проверяйте вашу "логику" обработки переменных, не перезаписываются ли они, все ли условные конструкции выполнимы.

3. и что значит "не хочет записываться?" с чего вы взяли? выведите тем же var_dump() SQL запрос, посмотрите что он из себя представляет. если считаете что запрос верный, а запись не произошла, смотрите какую ошибку возвращает сервер базы данных. В этом вам поможет mysql_error().

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

Edited by Быколай
Link to comment
Share on other sites

  • 0

не записывает потому-что оно выдает:


else
{
echo 'Не сохранено.';
}

а побывал по обычному $_POST отправлять в process.php тогда сохраняет!

вот и прошу помощи, может кто-то знает из-за чего это!

Edited by w1ndw0rk
Link to comment
Share on other sites

  • 0

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

Edited by Быколай
Link to comment
Share on other sites

  • 0

if (isset($_POST['new_address']))
{
$new_address = $_POST['new_address'];

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

Link to comment
Share on other sites

  • 0

if (isset($_POST['new_address']))
{
$new_address = $_POST['new_address'];

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

<form action='process.php' method='post'>

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

а можете подсказать каким еще способом можно сделать?

Edited by w1ndw0rk
Link to comment
Share on other sites

  • 0

Древний и тупой, но кроссбраузерный и надежный, как лом, вариант — сделать скрытый iframe, задать его name в качестве target-а формы и отсылать форму туда. Вывод обработчика оформить в виде яваскрипта, обращающегося к элементам родительской страницы (parent.document.getElementById(...)) и записывающий в них (через innerHTML) что угодно.

Если задача "быстро сделать и забыть", можно пойти по такому пути. Если задача — разобраться и научиться, лучше добивать Аякс.

А по поводу отладки — рекомендую эту статью.

Link to comment
Share on other sites

  • 0

if (isset($_POST['new_address']))
{
$new_address = $_POST['new_address'];

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

<form action='process.php' method='post'>

а это тут при чем? :blink:

Link to comment
Share on other sites

  • 0

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

а можете подсказать каким еще способом можно сделать?

вообще должно хватить и тех что я дал. var_dump($_переменная_или_массив_которые_могут_влиять_на_результат) и смотрите, с чем же на самом деле вы работаете. mysql_error() - покажет вам ошибку, по которой не удалась запись.

и да, почитайте статью, которую вам любезно указал SelenIT.

Edited by Быколай
Link to comment
Share on other sites

  • 0

if (isset($_POST['new_address']))
{
$new_address = $_POST['new_address'];

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

<form action='process.php' method='post'>

а это тут при чем? :blink:

подумал что вы говорите про

$_GET

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy