Проблем с промяна на поле - UPDATE

tedo96

Registered
PHP:
		if(isset($_POST['change'])){
			$title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
			$text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
			?>
			<form method='post' action=''>

			Заглавие:<br />
			<input type='text' name='title' value='<?php echo $row['title'] ?>'/><br/>
			Урок: 
			<br />
			<textarea style="width:360px; height:200px;"  name='text'><?php echo $row['text']; ?></textarea><br /><br />
			<?php echo '<input type="hidden" name="id" value="'.$row['id'].'"/>'; ?>
			<input type='submit' value='Промени' name='chang'/>
			</form>
			<?php

			if(isset($_POST['chang'])){
				$title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
				$text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
				$sql= "UPDATE `tuts` SET `text`='$text', `title`='$title' WHERE `id`='".$_POST['id']."'";
				mysql_query($sql) or die(mysql_error());
			}
			//$sql= PRINT"UPDATE `tuts` SET `text`='$text', `title`='$title' WHERE `id`='".$_POST['id']."'";
		}
Защо не се записва в базата данни? Когато принтна заявката получавам:
UPDATE `tuts` SET `text`='', `title`='' WHERE `id`='3'
От това разбирам, че не ми разчита полетата... От къде може да идва този проблем?
 
PHP:
                if(isset($_POST['change'])){
                        $title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
                        $text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
                        ?>
                        <form method='post' action=''>

                        Заглавие:<br />
                        <input type='text' name='title' value='<?php echo $row['title'] ?>'/><br/>
                        Урок: 
                        <br />
                        <textarea style="width:360px; height:200px;"  name='text'><?php echo $row['text']; ?></textarea><br /><br />
                        <?php echo '<input type="hidden" name="id" value="'.$row['id'].'"/>'; ?>
                        <input type='submit' value='Промени' name='chang'/>
                        </form>
                        <?php

                        if(isset($_POST['chang'])){
                                $title2 = nl2br(addslashes(htmlspecialchars($_POST['title'])));
                                $text2 = nl2br(addslashes(htmlspecialchars($_POST['text'])));
                                $sql= "UPDATE `tuts` SET `text`='$text2', `title`='$title2' WHERE `id`='".$_POST['id']."'";
                                mysql_query($sql) or die(mysql_error());
                        }
                        //$sql= PRINT"UPDATE `tuts` SET `text`='$text', `title`='$title' WHERE `id`='".$_POST['id']."'";
                }
:shock:
 
Пробвай по моя начин със нов код:

Код:
$sql = mysql_query("UPDATE tuts SET title='$_POST[title]', text='$_POST[text]' WHERE id='$id'");

Ако не стане пробвай така:

Код:
$sql = PRINT("UPDATE tuts SET title='$_POST[title]', text='$_POST[text]' WHERE id='$id'");
 
tedo96 каза:
UPDATE tuts SET title='', text='' WHERE id='2'
Отново не ми зачита променливите...
Направих и var_dump($_POST); и ми дава:
array(2) { ["id"]=> string(1) "2" ["change"]=> string(14) "Промени" }
Ти сигурен ли си, че ползваш тая форма, която си постнал?
 
Кажи ми какъв трябва да е този код и ще ти напиша един нов, който ще работи. :) За редактиране на уроци ли?
 
PHP:
	if($row['author'] == $_SESSION['username'] or checkLevel($username) == 3)
		{
			print '<form method="POST" action="" style="padding:0;">
            <input type="hidden" name="id" value="'.$row['id'].'"/>
            <input type="submit" name="change" value="Промени"/>    
            <input type="submit" name="del" value="Изтрий"/></form><hr size="1" color="#dadad" />';
		}
                if(isset($_POST['change'])){
                        $title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
                        $text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
                        ?>
                        <form method='post' action=''>

                        Заглавие:<br />
                        <input type='text' name='title' value='<?php echo $row['title'] ?>'/><br/>
                        Урок: 
                        <br />
                        <textarea style="width:360px; height:200px;"  name='text'><?php echo $row['text']; ?></textarea><br /><br />
                        <?php echo '<input type="hidden" name="id" value="'.$row['id'].'"/>'; ?>
                        <input type='submit' value='Промени' name='chang'/>
                        </form>
                        <?php

                        if(isset($_POST['chang'])){
                                $title2 = nl2br(addslashes(htmlspecialchars($_POST['title'])));
                                $text2 = nl2br(addslashes(htmlspecialchars($_POST['text'])));
                                $sql = "UPDATE tuts SET title='$_POST[title]', text='$_POST[text]' WHERE id='$id'";
                                mysql_query($sql) or die(mysql_error());
                        }
                        //$sql = PRINT"UPDATE tuts SET title='$_POST[title]', text='$_POST[text]' WHERE id='$id'";
                        //$sql= PRINT"UPDATE `tuts` SET `text`='$text', `title`='$title' WHERE `id`='".$_POST['id']."'";
                        //var_dump($_POST);
                }
Мисля, че само тази част от кода ви трябва... @Replace мисля, че да, но когато искам да принтна за другото поле не става нищо. Страницата се рефрешва... о.О
 
Не може да се използва такава комбинация от кавички!
Ето така.
$sql = " UPDATE tuts SET title='" . $_POST['title'] . "', text='" . $_POST['text'] . "' WHERE id='" . $id . "' ";
 
Пфф... Пак не става. :shock: Сигурно грешката ми е някъде другаде.
Ето целия код:
PHP:
$id = $_GET['id'];
		if(!empty($id)) {
		$q = mysql_query("SELECT `users`.`username`, `users`.`level`, `tuts`.* FROM `tuts` JOIN `users` ON `users`.`username` = `tuts`.`author` WHERE id = '{$id}' AND `tuts`.`active` = '1' ORDER BY `tuts`.`id` ASC") or die(mysql_error());
		while($row = mysql_fetch_assoc($q)) {
		print "<i><strong>".$row['title']."</strong></i><br /><br />";	
		print stripslashes(stripcslashes($row['text'])) ;
		print "<br/><br/><strong> Автор: <a href=\"profile.php?username=$row[author]\">".$row['author']."</a></strong><hr size='1' color='#dadada' />";
		//var_dump($_POST);
		if($row['author'] == $_SESSION['username'] or checkLevel($username) == 3)
			{
				echo '<form method="POST" action="" style="padding:0;">
				<input type="hidden" name="id" value="'.$row['id'].'"/>
				<p><input type="submit" name="change" class="submit_big" value="Промени"/></p>
				<p><input type="submit" name="del" class="submit_big" value="Изтрий"/></form></p><hr />';
			}
					if(isset($_POST['change'])){
							$title = nl2br(addslashes(htmlspecialchars($_POST['title'])));
							$text = nl2br(addslashes(htmlspecialchars($_POST['text'])));
							?>
							<form method='post' action=''>

							Заглавие:<br />
							<input type='text' name='title' value='<?php echo $row['title'] ?>'/><br/>
							Урок: 
							<br />
							<textarea style="width:360px; height:200px; background: #cecece; border: 1px solid #b9b9b9; color: #427a98;"  name='text'><?php echo $row['text']; ?></textarea><br /><br />
							<?php echo '<input type="hidden" name="id" value="'.$row['id'].'"/>'; ?>
							<input type='submit' value='Промени' class='submit_big' name='chang'/>
							</form>
							<?php

							if(isset($_POST['chang'])){
									$title2 = nl2br(addslashes(htmlspecialchars($_POST['title'])));
									$text2 = nl2br(addslashes(htmlspecialchars($_POST['text'])));
									$sql = " UPDATE tuts SET title='" . $_POST['title'] . "', text='" . $_POST['text'] . "' WHERE id='" . $id . "' ";
									mysql_query($sql) or die(mysql_error());
							}
							//$sql = PRINT"UPDATE tuts SET title='$_POST[title]', text='$_POST[text]' WHERE id='$id'";
							//$sql= PRINT"UPDATE `tuts` SET `text`='$text', `title`='$title' WHERE `id`='".$_POST['id']."'";
							//var_dump($_POST);
					}
			
		if(isset($_POST['del'])){
				$sql="DELETE FROM `tuts` WHERE `id`='".$_POST['id']."'";
				mysql_query($sql) or die(mysql_error());
				echo '<meta http-equiv="refresh" content="0">';
			}
		if($_SESSION['username']){
		?>
	<div style="font-style: italic;"><a href="#коментари" class="comm-preview">Коментари</a></div>
	<div class="comm-cont"> 
	
	<tr>
	<td>
	<form action="" method="post">
	Коментар:<br />
	<textarea name="comment" cols="45" rows="4" class="textinput" style="background: #cecece; border: 1px solid #b9b9b9; color: #427a98;"></textarea><br />
	<br />
	<input name="submit" type="submit" value="Изпрати" class="submit_big">  
	<input name="submit" type="reset" value="Изчисти" class="submit_big">
	<br />
	<?php
	if(isset($_POST['submit'])){
		$date = date("d.m.Y");
		if(!empty($_POST['comment'])) {	
		$sql = mysql_query("INSERT INTO comment (id, article, username, comment, date) VALUES (NULL, '$id', '$_SESSION[username]', '$_POST[comment]', '$date')") or die(mysql_error());
		}
		echo "Вашият коментар е добавен!";
		}
	echo "</form><br />";
$query = mysql_query("SELECT * FROM `comment` WHERE `article`='$id' ORDER BY `id` DESC") or die(mysql_error());
while($raw = mysql_fetch_array($query)){
echo "<tr><td></td>От: <a href=\"profile.php?username=$raw[username]\">".$raw['username']."</a><br />На: ".$raw['date']."<br>".$raw['comment']."</td></tr><br />";

		if(checkLevel($username) == 3)
		{
			echo '<form method="POST" action="" style="padding:0;">
            <input type="hidden" name="id" value="'.$raw['id'].'"/>
            <input type="submit" name="del_comment" value="Изтрий" class="submit_big"/></form><hr size="1" color="#dadad" />';
		}
		if(isset($_POST['del_comment'])){
			$dell="DELETE FROM `comment` WHERE `id`='".$_POST['id']."'";
			mysql_query($dell) or die(mysql_error());
			echo '<meta http-equiv="refresh" content="0">';
		}
}
	echo "</div>";
}

	
	
	}
	} else {
	$query = mysql_query("SELECT * FROM `tuts` WHERE `active` = '1' ORDER BY `id` DESC") or die(mysql_error());
	while($row = mysql_fetch_assoc($query)) {   
	echo '<div class="tut_prev">
	<a href="?id='.$row[id].'">'.$row['title'].'</a><br />';
	$min_tut = mb_substr($row['text'],0,100, "UTF8");
	//echo stripslashes($min_tut).'</div>';
	echo '</div>';
	}
}
?>
 
Аз лично така не мога да ти поправя грешка ако има. Съвет: вместо заявката сложи echo 'DA!!!!' и ако това ти извади, значи проблемът е в заявката. Прави ми впечатление, че имаш $title2 и $text2, а в sql ползваш $_post. Защо? При някои хостинги не се записват данни ако имат кавички. Случвало ми се е. Може и от това да е.
Ако не става никак, започвай да махаш части от кода, докато стигнеш до проблема.
Имаш ли session_start()?

ПП: Какво показва die(mysql_error()); и включил ли си да показва всички грeшки с E_ALL?
 
Следвах съветите в темата и затова последно го направих с $_POST в заявката.
Оправих се, но по доста различен начин. Зададох си на формата action друг php файл и там правя обработката като взимам id от $_GET на урока.
Мисля, че се получи добре.
 

Back
Горе