Проблем с MYSQL - обновяване на информацията

Msecurity

Registered
Здравейте имам следният проблем:
1-во: когато искам да редактирам информация от БД-то не ми попълва всички полета със опреденият запис във формата за редакция...
2-ро: Не ми обновява информацията... все едно нищо не съм направил...
Ето кода от файловете:
editaert.php
PHP:
<center>
<?php
include("connect.php");
$id=$_GET['id'];
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>   
            
<form action="update_ac.php" method="post">
Изберете категория:  <br /><SELECT name="catid" size="1" class="forma1" value="<?php echo $rows['catid']; ?>" > 
<OPTION></OPTION> 
<OPTION  value="1"> ****** </OPTION> 
<OPTION  value="8"> - ******  </OPTION> 
<OPTION  value="9"> - ******  </OPTION> 
<OPTION  value="10"> - ******  </OPTION> 
<OPTION  value="11"> - ******  </OPTION> 
<OPTION  value="12"> - ******  </OPTION> 
<OPTION  value="13"> - ******  </OPTION> 
<OPTION  value="14"> - ******  </OPTION> 
<OPTION  value="15"> - ******  </OPTION> 
<OPTION  value="16"> - ******  </OPTION> 
<OPTION  value="17"> -******  </OPTION> 
<OPTION  value="18"> - ******  </OPTION> 
<OPTION  value="19"> - ******  </OPTION> 
<OPTION  value="2"> ******  </OPTION> 
<OPTION  value="20"> - ******  </OPTION> 
<OPTION  value="21"> - ******  </OPTION> 
<OPTION  value="22"> - ******  </OPTION> 
<OPTION  value="23"> - ******  </OPTION> 
<OPTION  value="24"> -******  </OPTION> 
<OPTION  value="3"> ******  </OPTION> 
<OPTION  value="4"> ******  </OPTION> 
<OPTION  value="5"> ******  </OPTION> 
<OPTION  value="7"> ******  </OPTION> 
<OPTION  value="6"> ******  </OPTION> 
</SELECT> <br>
Въведете име на продукт:  <br />  <input type="text" name="title" size="30" value=" <?php echo $rows['title']; ?>"> <br>
Въведета информация за продукта:  <br /><TEXTAREA ROWS="7" NAME="info" COLS="50" value="<?php echo $rows['info']; ?>"></TEXTAREA></br>
Въведета цена на продукта:<br /> <input type="text" name="price"  size="10" value="<?php echo $rows['price']; ?>">  <br />
На промоция?<br />  <input type="text" name="promo"  size="15" value="<?php echo $rows['promo']; ?>"> <br>
Добавете изображение на продукта: <br />  <input type="text" name="images" value="img/"  size="40" value="<?php echo $rows['images']; ?>"> <br>
Въведета дата на въвеждане в системата:<br />  <input type="DATE" name="data"  size="10" value="<?php echo $rows['data']; ?>"> <br>
Добавил администратор? <br /><SELECT name="adduser" size="1" class="forma1" value="<?php echo $rows['adduser']; ?>"> 
<OPTION></OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
<OPTION  value="****** "> ******  </OPTION> 
</SELECT> <br>
            <input type="submit" name="submit" value="Редактирай продукта"><br>
        </form>
      

</center>

update_ac.php
PHP:
<?php
include("connect.php");

$sql="UPDATE $tbl_name SET catid='catid', title='title', info='info', price='price', promo='promo', images='images', data='data', adduser='adduser' WHERE id='id'";
$result=mysql_query($sql);

if($result){
echo "Успешно редактирахте продукта!";
echo "<BR>";
echo "<a href='admin.php'>Върнете се в администраторският панел</a>";
}

else {
echo "Грешка при опита за обновяване на информацията!<br /> <b>Моля свържете се със системният администратор!</b>";
}

?>
 
еми проблема според мен ти е в файла за обновяване ..

Ти имаш това
PHP:
$sql="[color=blue]UPDATE $tbl_name SET catid='catid', title='title', info='info', price='price', promo='promo', images='images', data='data', adduser='adduser' WHERE id='id'";[/color]

кво е тва ? ти не вкарваш рпменливи а прост стринг ..

и не виждам да пращаш id на продукта ... тва не е целия код нз как изкаш да ти помогнем като сакращаваш кода ..

но това отгоре трябва да стане така:

PHP:
$sql="UPDATE $tbl_name SET catid='$catid', title='$title', info='$info', price='$price', promo='$promo', images='$images', data='$data', adduser='$adduser' WHERE id='$id'";
и естествено да дефинираш дали са ПОСТ или ГЕТ променливи :)[/html]
 
а преди това, което ти е дал колегата слагаш това:
PHP:
$catid = $_POST['catid'];
$title = $_POST['title'];
$info = $_POST['info'];
$price = $_POST['price'];
$promo = $_POST['promo'];
$images = $_POST['images'];
$data = $_POST['data'];
$adduser = $_POST['adduser'];
$id = $_POST['id'];

освен това
1. <input> от тип DATE не съществува трябва да е type="text";
2. във формата ти е необходимо да имаш невидимо поле с име id, за да си докараш ID-то от $_GET['id'] във формуляра, т.е. след <form> добавяш следното
HTML:
<input type="hidden" value="<?php echo $id;?>"/>
 
Не виждам никъде да зареждаш $tbl_name.
Смени променливата в реда
$sql="UPDATE $tbl_name SET catid='catid', title='title', info='info', price='price', promo='promo', images='images', data='data', adduser='adduser' WHERE id='id'";

с името на таблицата си.


Също така реда:
$result=mysql_query($sql);

го направи:
mysql_query($sql) or die(mysql_error());

и ако ти даде някаква грешка виж дали се ориентираш в нея и ако не се ориентираш я пейстни тук. Между другото няма нужда да присвояваш резултата от заявката на променлива защото тази заявка не връща резултат.


Msecurity каза:
М колеги и пак е същият резултата нищо не обновява...
 
Хм... пак не става... дава ми грешката която аз съм си въвел като съобщение " Грешка при опита за обновяване на информацията!
Моля свържете се със системният администратор!"
...
PHP:
<?php
include("connect.php");
$catid = $_POST['catid'];
$title = $_POST['title'];
$info = $_POST['info'];
$price = $_POST['price'];
$promo = $_POST['promo'];
$images = $_POST['images'];
$data = $_POST['data'];
$adduser = $_POST['adduser'];
$id = $_POST['id'];


$sql="UPDATE `news` SET catid='$catid', title='$title', info='$info', price='$price', promo='$promo', images='$images', data='$data', adduser='$adduser' WHERE id='$id'";
mysql_query($sql) or die(mysql_error());

if($result){
echo "Успешно редактирахте продукта!";
echo "<BR>";
echo "<a href='admin.php'>Върнете се в администраторският панел</a>";
}

else {
echo "Грешка при опита за обновяване на информацията!<br /> <b>Моля свържете се със системният администратор!</b>";
}

?>
 
Не си взел правилната променлива $result - тоест тя не съществуваше. Имаше и още някои неща , които поправих.

Един съвет. Дори да използваш кода за административния ти панел си прави защита на $_POST и $_GET.

PHP:
<?php
include("connect.php");
$catid = $_POST['catid'];
$title = $_POST['title'];
$info = $_POST['info'];
$price = $_POST['price'];
$promo = $_POST['promo'];
$images = $_POST['images'];
$data = $_POST['data'];
$adduser = $_POST['adduser'];
$id = $_POST['id'];
$result = mysql_query("UPDATE `news` SET `catid`='{$catid}', `title`='{$title}', `info`='{$info}', `price`='{$price}', `promo`='{$promo}', `images`='{$images}', `data`='{$data}', `adduser`='{$adduser}' WHERE `id`='{$id}'") or die(mysql_error());
if($result){
	echo "Успешно редактирахте продукта! <br /><a href='admin.php'>Върнете се в администраторският панел</a>";
} else {
	echo "Грешка при опита за обновяване на информацията!<br /> <b>Моля свържете се със системният администратор!</b>";
}
?>


П.С. Не е задължително да използваш два различни файла, за да редактираш дадена информация. Може да го направиш и с един if(); например.

Успех! :)
 
Мерси много, но сега пак не става... явно не ми върви...
"Notice: Undefined index: id in C:\Program Files\VertrigoServ\www\update_ac.php on line 11"
 
Човек липсва ти много базово ниво. Предлагам ти да се насочиш към ето това място за повече помощ:
http://booktrading.bg/1006894%20%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D0%BD%D0%B5%20%D0%B8%20Web%20%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%20%D1%81%20PHP5,%20MySQL,%20Apache%20-%20%D1%82%D0%BE%D0%BC%201?keyword=php
 
palex каза:
1. <input> от тип DATE не съществува трябва да е type="text";
В HTML5 съществува input type date, ама като гледам, човека май не пише на HTML5 :)

palex каза:
2. във формата ти е необходимо да имаш невидимо поле с име id, за да си докараш ID-то от $_GET['id'] във формуляра, т.е. след <form> добавяш следното
HTML:
<input type="hidden" value="<?php echo $id;?>"/>

<input type="hidden" name="id" value="<?php echo $id;?>"/>
 
100% прав си

exec каза:
palex каза:
1. <input> от тип DATE не съществува трябва да е type="text";
В HTML5 съществува input type date, ама като гледам, човека май не пише на HTML5 :)

palex каза:
2. във формата ти е необходимо да имаш невидимо поле с име id, за да си докараш ID-то от $_GET['id'] във формуляра, т.е. след <form> добавяш следното
HTML:
<input type="hidden" value="<?php echo $id;?>"/>

<input type="hidden" name="id" value="<?php echo $id;?>"/>
 

Back
Горе