Редактирование (БД)

dryn1300

Новичок
Добрый день всем,столкнулся с такой проблемой
Есть страница "редактирования".в данном случае 2-х текстовых полей(1название ссылки и 2собственно сама ссылка)
Но получается вывести эти 2 поля(из БД) только с определенным ID, прописаным в исходнике(у меня это $new_id
пример http://wartest.ru/add_admin_link/edit.php
Нужно вывести все формы редактирования с 1 по последний id из БД
пытался закинуть в цикл, но из-за криворучия у меня это не совсем получилось(при изменении 1 ссылки менялись все сразу,на то что я ввел,т.е. получалось большое количество одинаковых полей)

PHP:
<?php
$new_id = 1;
$dbhost = "";  // 
    $dbname = "";       // 
    $dbuser = "";       //    
    $dbpass = ""; //  

    $link1 = mysql_connect($dbhost, $dbuser, $dbpass);     // !
    mysql_select_db($dbname);                     // !
	mysql_set_charset('utf8',$link1); 	

	$query = "SELECT * FROM `add_admin_link` WHERE `id`='$new_id' LIMIT 1";
        $result = mysql_query($query);
        if (mysql_num_rows($result) != 1)
        {
            print "dsd"; exit;
	}
$phpself = $_SERVER["PHP_SELF"];
$print_form = 0;

    if (@$_POST)
    {
    $name =  $_POST['addName'];
	$url = $_POST['addUrl'];        
	$url = htmlspecialchars($url);
	if (strlen($url) > 5000)
	{
	    print "Слишком длинный URL<br>\n"; 
            $print_form = 1;
	}
	elseif (strlen($url) <= 1)
	{
	    print "Слишком короткий URL.<br>\n"; 
            $print_form = 1;
	}
        else
        {
	    $query = "UPDATE `add_admin_link` SET `name`='$name', `url`='$url' WHERE `id`='$new_id'";
	    if (mysql_query($query))
	    {
	       $print_form = 1;
            }
            else
            {
                print " :" . mysql_error() . "\n";
            }
         }
    }       
    else
    {
        $print_form = 1;
    }
    
    if ($print_form == 1)
    {
	$query = "SELECT * FROM `add_admin_link` WHERE `id`='$new_id'";
        $result = mysql_query($query);
        $row = mysql_fetch_assoc($result);
        
        $row_name = $row['name'];
        $row_url = $row['url'];
	$row_text = str_replace("<br />", "", $row_text);	
	?>
	<form name="addform" action="<?=$phpself ?>" method="POST">
    <input name="addName" value="<?=$row_name ?>" style="width:300px;"></input><br>
    <input name="addUrl" value="<?=$row_url ?>" style="width:300px;"/input><br>
    <input type="submit" value="Изменить" style="width:150px;background:#CCC;"/>
	</form>
    <?
    }    
	?>
</body>
</html>
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
>(при изменении 1 ссылки менялись все сразу,на то что я ввел,т.е. получалось большое количество одинаковых полей)
Твой скрипт обладает телепатическими возможностями по опеделению ID записи которую ты редактируешь в текущий момент?
Вряд-ли.
Добавь скрытое поле в форму, по сабмиту формы обновляй запись по условию id = POST значение скрытого поля ID

Да прибудет с тобой сила
 

dryn1300

Новичок
Попробовал,выдает ошибку
PHP:
<? Подкючился к БД

        $new_id = $_POST['addID'];
	$query = "SELECT * FROM `add_admin_link` WHERE `id`='$new_id' LIMIT 1";
        $result = mysql_query($query);
        if (mysql_num_rows($result) != 1)
        {
            print "Ошибка"; exit;
	}
$phpself = $_SERVER["PHP_SELF"];
$print_form = 0;

    if (@$_POST)
    {
    $name =  $_POST['addName'];
	$url = $_POST['addUrl'];        
	$url = htmlspecialchars($url);
	if (strlen($url) > 5000)
	{
	    print "   5000 .<br>\n"; 
            $print_form = 1;
	}
	elseif (strlen($url) <= 1)
	{
	    print "   1 .<br>\n"; 
            $print_form = 1;
	}
        else
        {
	    $query = "UPDATE `add_admin_link` SET `name`='$name', `url`='$url' WHERE `id`='$new_id'";
	    if (mysql_query($query))
	    {
	       $print_form = 1;
            }
            else
            {
                print " :" . mysql_error() . "\n";
            }
         }
    }       
    else
    {
        $print_form = 1;
    }
    
    if ($print_form == 1)
    {
    $new_id = 1;
    while($new_id < 4) {
	$query = "SELECT * FROM `add_admin_link` WHERE `id`='$new_id'";
        $result = mysql_query($query);
        $row = mysql_fetch_assoc($result);
        
        $row_name = $row['name'];
        $row_url = $row['url'];
	$row_text = str_replace("<br />", "", $row_text);
	?>
	<form name="addform" action="<?=$phpself ?>" method="POST">
    <input name="addName" value="<?=$row_name ?>" style="width:300px;"></input><br>
    <input name="addUrl" value="<?=$row_url ?>" style="width:300px;" /></input><br>
    <input name="addID" value="ID = <?=$new_id ?>" style="width:300px;" readonly="readonly"/><br>
    <input type="submit" value="Изменить" style="width:150px;background:#CCC;"/>
	</form>
    <?
    $new_id++;}  }  
	?>
</body>
</html>
Ошибка появилась после того,как прописал $new_id = $_POST['addID'];
 

dryn1300

Новичок
Спасибо большое
Доработал немного и все получилось

Единственный вопрос остался,как сделать,чтобы цикл while шел не с 1 по 4(в данном случае), а просто по конец БД
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
dryn1300
В мануале по функции, что ты используешь, все есть.
Посмотри внимательно и сделай как там.

http://ua2.php.net/mysql_fetch_assoc
 

dryn1300

Новичок
Решил по-своему
так и не получилось в переменную занести id последней записи
еще раз спасибо
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Что значить решил по своему?
"Подпер" костелём или что?

>не получилось в переменную занести id последней записи
Да ну
<input name="addId" value="<?=$row_id ?>" type="hidden"><br>

?
 

Redjik

Джедай-мастер
Решил по-своему
так и не получилось в переменную занести id последней записи
еще раз спасибо
Боже тебе же скинули ссылку
PHP:
while($r=mysql_fecth_assoc($result))
Да пинайте меня, что все разжевал, но он же ПО-СВОЕМУ решил уже... вдруг мои будущие дети зайдут на этот сайт....
 

dryn1300

Новичок
PHP:
while($new_id != $max_link) {
		$query = "SELECT * FROM ".$table." WHERE `id`='$new_id'";
        $result = mysql_query($query);
        $row = mysql_fetch_assoc($result);
        
        $row_name = $row['name'];
        $row_url = $row['url'];
	    $row_url = str_replace("<br />", "", $row_url);	
	
 
   if ($row_url == "") {
	$query="UPDATE ".$table." SET `id`='$new_id' WHERE `name`='$row_name'";
	$new_id++;
	} else {
	?>
    <center>
	<form name="addform" action="<?=$phpself ?>" method="POST">
    <input name="addName" value="<?=$row_name ?>" style="width:300px;"></input><br>
    <input name="addUrl" value="<?=$row_url ?>" style="width:300px;" /></input><br>
    <input name="addID" value="<?=$id ?>" style="width:300px;"/><br>
    <input type="submit" value="Изменить" style="width:150px;background:#CCC;"/>
	</form>
    <a href="<?=$www?>add_admin_link/delete.php?id=<?=$new_id?>">Удалить</a>
    <br />
    </center>
    <?
    $new_id++;}  
	   }
$max_link, максимальное число выводимых записей.
Боже тебе же скинули ссылку
PHP:
while($r=mysql_fecth_assoc($result))
Сделал так же,но страница вообще не работала,пришлось по-своему делать
 
Сверху