X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Интересное поведение mysql_query("UPDATE")
alex159
alex159
Topic Starter сообщение 29.7.2013, 23:10; Ответить: alex159
Сообщение #1


Есть два кода.
<?php
if(isset($_POST['red'])) {$red = $_POST['red'];}
include("config/bd.php");
$result3 = mysql_query("SELECT * FROM product WHERE id='$red'",$db);
    $myrow3 = mysql_fetch_array ($result3);
printf ("
<form action='red.php' method='post' name='addnew'>
<input name='red' type='hidden' value='%s' />
<p>Название товара: <input name='name' type='text' value='%s'></p>
<p>Цена: <input name='price' type='text' value='%s'></p>
    <p>Артикул: <input name='article' type='text' value='%s'></p>
<p>Категория: <input name='category' type='text' value='%s'></p>
<p>Ключевые слова: <input name='meta_keyword' type='text' value='%s'></p>
<p>Мета описание: <input name='meta_description' type='text' value='%s'></p>
<p>Фото: <input name='image' type='text' value='%s'></p>
<p>Описание: <textarea name='description' cols='20' rows='10'>%s</textarea></p>
    <input name='add' type='submit'>
</form>",$red,$myrow3['name'],$myrow3['price'],$myrow3['article'],$myrow3['category'],$myrow3['meta_keyword'],$myrow3['meta_description'],$myrow3['image'],$myrow3['description']);
?>

и
<?php
include("config/bd.php");
if(isset($_POST['name'])) {$name = $_POST['name'];}
if(isset($_POST['price'])) {$price = $_POST['price'];}
if(isset($_POST['article']))     {$article = $_POST['article'];}
if(isset($_POST['category'])){$category = $_POST['category'];}
if(isset($_POST['meta_keyword'])) {$meta_keyword = $_POST['meta_keyword'];}
if(isset($_POST['meta_description'])) {$meta_description = $_POST['meta_description'];}
if(isset($_POST['image'])) {$image = $_POST['image'];}
if(isset($_POST['description'])) {$description = $_POST['description'];}
if(isset($_POST['red'])) {$red = $_POST['red'];}

    if(-1 < $price) {
$result2 = mysql_query("UPDATE product SET name='$name',price='$price',article='$article',category='$category',meta_keyword='$meta_keyword',meta_description='$meta_description',image='$image',description='$description' WHERE id='$red'")
or die("Invalid query: " . mysql_error());
if ($result2 = "true") { echo "Товар изменен"; }
    }
?>


mysql_query(); отдает значение true но изменение в бд не происходят.

Про бывал также ставить скрытое поле со значение id и куча всякой ерунды передавал ид через строку и тд.

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

Есть варианты проблемы?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 30.7.2013, 0:32; Ответить: isvetlichniy
Сообщение #2


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


1. кто тебя так учил проверку делать?
if(-1 < $price)


2. а это что за
echo 0.;


3. у тебя запрос сформирован неверно, глупости. ты вставляешь переменные, но строка в одинарных кавычках не будет разбираться на переменные
4. в запросе смотри name="name"

продолжать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alex159
alex159
Topic Starter сообщение 30.7.2013, 12:20; Ответить: alex159
Сообщение #3


неверно,


То я уже от фонаря по наставлял.

Скобки я понял пытался пере делать подругой код который я увидел.

С самого начала было так. (изменил) код.

Насчет проверки что бы время не терять и просто проверить как будет реагировать скрипт.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 30.7.2013, 12:47; Ответить: matroskin8
Сообщение #4


[member=alex159], Вы так и не исправили все ошибки, на которые указали. Попробую еще раз перечислить:
1. В запросе первая пара поле=значение уже передается с ошибкой - пропущен знак доллара для переменной $name: UPDATE product SET name='$name'
2. Строковые данные, вставляемые в запрос, нужно экранировать... хорошо еще если на сервере включены волшебные кавычки, а если нет и в запрос попадет слово с апострофом? Попробуйте отключить волшебные кавычки и передать к примеру, в качестве имени - д'Артаньян.
3. Вот так вот - if ($result2 = "true") - проверять не очень хорошо... во-первых, Вы не проверяете равенство (==), а выполняете операцию присваивания (=)... во-вторых, даже если запрос не вернул ошибку, то это отнюдь не значит, что в БД этот запрос хоть что-то изменил, а потому заявлять уверенно об успехе изменения товара, пожалуй, чересчур оптимистично с подобной проверкой :) для проверки есть специальная функция - mysql_affected_rows() - посмотрите пример ее использования в мануале и рекомендую проверять изменения в БД именно с помощью нее...
Ну и булево значение TRUE - это не строка, а потому обрамлять ее кавычками совсем не обязательно... интерпретатор-то поймет, что нужно сделать и приведет строку к нужному типу, но код от этого не становится лучше.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alex159
alex159
Topic Starter сообщение 30.7.2013, 17:15; Ответить: alex159
Сообщение #5


[member=matroskin8], Разобрался спасибо. Я только начинаю и много еще не знаю. А почему название товара не изменялось на "name"?

С моей точки зрения название товара должно было стать name, но когда я побывал делать. Даже цена не менялась.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 30.7.2013, 17:34; Ответить: matroskin8
Сообщение #6


А почему название товара не изменялось на "name"? С моей точки зрения название товара должно было стать name

А, так Вы сознательно помещали туда не значение переменной, а эту строку? Ну если так, тогда первый пункт снимается. Ну а почему не выполняется запрос - это уже вопрос отладки. Для этого лучше сначала формировать текст запроса и только потом выполнять. Делается это для того, чтобы можно было распечатать запрос на экран и посмотреть все, что туда попадает... ну и к тому же этот запрос потом можно просто скопировать и попробовать выполнить через тот же phpMyAdmin, чтобы посмотреть корректность его выполнения... примерно так:
$query = ("UPDATE product SET name = '$name', price = '$price', article = '$article', category = '$category', meta_keyword = '$meta_keyword', meta_description = '$meta_description', image = '$image', description = '$description' WHERE id='$red'");
exit($query); // а здесь мы можем распечатать запрос на экран и посмотреть в каком виде он будет отправлен на сервер
$res = mysql_query($query) or die(mysql_error()); // если нашли ошибку, тогда убираем/комментируем exit() и наслаждаемся проделанной работой <img src="style_emoticons/default/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt=":)">
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alex159
alex159
Topic Starter сообщение 30.7.2013, 18:03; Ответить: alex159
Сообщение #7


Большое спасибо. Кроме ответов на мои вопросы получил дополнительную информацию.

А насчет знака $ я его действительно забыл и и-за этого не работал скрипт. А сейчас хотел просто узнать почему так вышло что он вообще не отправлял данные в Бд.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 30.7.2013, 18:12; Ответить: matroskin8
Сообщение #8


Пожалуйста)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыИнтересное решение при вёрстке резино - адаптированного текста в блоках
0 master-vek 1061 27.5.2018, 16:08
автор: master-vek
Открытая тема (нет новых ответов) Готовые статьи на околомедицинскую тему - здоровье, неопознанное, интересное, жизненное, и пр.
3 Lidok 3035 31.8.2016, 17:29
автор: bush83
Открытая тема (нет новых ответов) Интересное предложение по взаимному пиару в группе с 15 500 читателями
Пиар, PR, взаимный пиар, обмен постами
0 Gan517 1331 29.2.2016, 0:41
автор: Gan517
Открытая тема (нет новых ответов) Продам статьи.Тематика:Интересное,Непознанное,Космос.
0 Ruanon 1648 9.7.2015, 9:41
автор: Ruanon
Открытая тема (нет новых ответов) Поведение тега code
4 Den1xxx 5987 6.4.2014, 9:29
автор: -Den1xxx-


 



RSS Текстовая версия Сейчас: 19.4.2024, 3:23
Дизайн