Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > $_GET - скрипт работает, только после нажатия F5


Автор: Enya 10.11.2006, 16:37
Вот. Вывела из БД табличку данных. Сделала, рядом ссылку удалить. Передаю по URL-у действие и id 
Ошибок не вылетает.
Делает перенаправление. Но показывает, что запись наместе. НО после нажатия на F5 запись исчезает.
Не понимаю.
Код

<?php
        $action = (isset($_GET['action'])) ? $_GET['action'] : '';
        
        $id=isset($_GET['id']);
        
        $db_host = 'localhost';
        $db_db = 'test';
        $db_user = 'ng';
        $db_password = 'ng';
        
        $db_link=mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    
        mysql_select_db($db_db) or die(mysql_error());
        
            echo '<h3>Main</h3>';
            
                        $sql    = 'SELECT * FROM `objects` ORDER BY `id` ASC';
                        $result = mysql_query($sql) or die("SQL Select Error");
                        
                        while ($obj = mysql_fetch_object($result)) {
                            ?>
                            <table width="500" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#FFFFE0">
                            <tr>
                                <td align="center" width="25" style="border: 1px solid Black;"><?=$obj->id?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj01?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj02?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj03?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><a href="">Edit</a></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><a href="control_up.php?action=delete&id=<?=$obj->id?>">Delete</a></td>
                            </tr>
                            </table>
                         <?php
                        }
            
        if($action=='delete'){
                
                // update data in mysql database
                $id=$_GET['id'];
                $sql="DELETE FROM `objects` WHERE id='$id'";
                $result=mysql_query($sql,$db_link);
                
                // if successfully updated.
                if($result){
                    header('location: control_up.php');
                }else{
                    echo "ERROR";
                }

            }

?>


Добавлено @ 16:41 
вот тут есть 5 записей.http://www.nasha.lv/123/control_up.php

Автор: Burrr 10.11.2006, 16:42
А ты сначала удаляй, а потом таблицу печатай ;)
Уверен, что так будет всё в порядке:
Код

        $action = (isset($_GET['action'])) ? $_GET['action'] : '';
        
        $id=isset($_GET['id']);
        

        if($action=='delete'){
                
                // update data in mysql database
                $id=$_GET['id'];
                $sql="DELETE FROM `objects` WHERE id='$id'";
                $result=mysql_query($sql,$db_link);
                
                // if successfully updated.
                if($result){
                    header('location: control_up.php');
                }else{
                    echo "ERROR";
                }

            }


        $db_host = 'localhost';
        $db_db = 'test';
        $db_user = 'ng';
        $db_password = 'ng';
        
        $db_link=mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    
        mysql_select_db($db_db) or die(mysql_error());
        
            echo '<h3>Main</h3>';
            
                        $sql    = 'SELECT * FROM `objects` ORDER BY `id` ASC';
                        $result = mysql_query($sql) or die("SQL Select Error");
                        
                        while ($obj = mysql_fetch_object($result)) {
                            ?>
                            <table width="500" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#FFFFE0">
                            <tr>
                                <td align="center" width="25" style="border: 1px solid Black;"><?=$obj->id?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj01?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj02?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj03?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><a href="">Edit</a></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><a href="control_up.php?action=delete&id=<?=$obj->id?>">Delete</a></td>
                            </tr>
                            </table>
                         <?php
                        }


Автор: Enya 10.11.2006, 16:59
Burrr, вообще ничего не удаляется, теперь. smile 

Автор: Burrr 10.11.2006, 17:01
Да, скрипт я неправильно написал, удаление до связи с MySQL-сервером это голимо, но логику я тебе верно сказал.

Добавлено @ 17:02 
Вот:
Код

 $action = (isset($_GET['action'])) ? $_GET['action'] : '';
        
        $id=isset($_GET['id']);
        

        

        $db_host = 'localhost';
        $db_db = 'test';
        $db_user = 'ng';
        $db_password = 'ng';
        
        $db_link=mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    
        mysql_select_db($db_db) or die(mysql_error());

if($action=='delete'){
                
                // update data in mysql database
                $id=$_GET['id'];
                $sql="DELETE FROM `objects` WHERE id='$id'";
                $result=mysql_query($sql,$db_link);
                
                // if successfully updated.
                if($result){
                    header('location: control_up.php');
                }else{
                    echo "ERROR";
                }

            }

        
            echo '<h3>Main</h3>';
            
                        $sql    = 'SELECT * FROM `objects` ORDER BY `id` ASC';
                        $result = mysql_query($sql) or die("SQL Select Error");
                        
                        while ($obj = mysql_fetch_object($result)) {
                            ?>
                            <table width="500" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#FFFFE0">
                            <tr>
                                <td align="center" width="25" style="border: 1px solid Black;"><?=$obj->id?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj01?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj02?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj03?></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><a href="">Edit</a></td>
                                <td align="center" width="100" style="border: 1px solid Black;"><a href="control_up.php?action=delete&id=<?=$obj->id?>">Delete</a></td>
                            </tr>
                            </table>
                         <?php
                        }

Автор: Enya 13.11.2006, 11:43
Burrr, всё равно не хочет нормально работать. Удалять - удаляется, но получается кликаю по ссылке, как бы запрос на удаление пошёл, а таблица осталась в прежнем виде, жму перезагрузить - запись изчезает.
Код

<?php
        $action = (isset($_GET['action'])) ? $_GET['action'] : '';
        $id=isset($_GET['id']);
        
        $db_host = 'localhost';
        $db_db = 'test';
        $db_user = 'ng';
        $db_password = 'ng';
        
        mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    
        mysql_select_db($db_db) or die(mysql_error());
        
        if($action=='delete'){
                
                // update data in mysql database
                $id=$_GET['id'];
                $sql="DELETE FROM `objects` WHERE id='$id'";
                $result=mysql_query($sql);
                header('location: control_up.php');
                
                
            }
            echo '<h3>Main</h3>';
            
                $sql    = 'SELECT * FROM `objects` ORDER BY `id` ASC';
                $result = mysql_query($sql) or die("SQL Select Error");
                
                while ($obj = mysql_fetch_object($result)) {
                    ?>
                    <table width="500" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#FFFFE0">
                    <tr>
                        <td align="center" width="25" style="border: 1px solid Black;"><?=$obj->id?></td>
                        <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj01?></td>
                        <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj02?></td>
                        <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj03?></td>
                        <td align="center" width="100" style="border: 1px solid Black;"><a href="">Edit</a></td>
                        <td align="center" width="100" style="border: 1px solid Black;"><a href="control_up.php?action=delete&id=<?=$obj->id?>">Delete</a></td>
                    </tr>
                    </table>
                    <?php
                }

?>

Автор: -=Ustas=- 13.11.2006, 12:04
А если так:
Код

<?php
        $action = (isset($_GET['action'])) ? $_GET['action'] : '';
        $id = intval($_GET['id']);
        
        $db_host = 'localhost';
        $db_db = 'test';
        $db_user = 'ng';
        $db_password = 'ng';
        
        mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
    
        mysql_select_db($db_db) or die(mysql_error());
        
        if($action == 'delete') {
            // update data in mysql database            
            $sql = 'DELETE FROM `objects` WHERE id = '.$id;
            mysql_query($sql);
        }
        echo '<h3>Main</h3>';
            
        $sql    = 'SELECT * FROM `objects` ORDER BY `id` ASC';
        $result = mysql_query($sql) or die("SQL Select Error");
                
        while ($obj = mysql_fetch_object($result)) {
            ?>
            <table width="500" border="0" cellspacing="1" cellpadding="0" align="center" bgcolor="#FFFFE0">
            <tr>
                <td align="center" width="25" style="border: 1px solid Black;"><?=$obj->id?></td>
                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj01?></td>
                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj02?></td>
                <td align="center" width="100" style="border: 1px solid Black;"><?=$obj->obj03?></td>
                <td align="center" width="100" style="border: 1px solid Black;"><a href="">Edit</a></td>
                <td align="center" width="100" style="border: 1px solid Black;"><a href="control_up.php?action=delete&id=<?=$obj->id?>">Delete</a></td>
            </tr>
            </table>
        <?php
        }
        ?>

Автор: Enya 13.11.2006, 12:42
-=Ustas=-, вы заменили isset(); на intval();
И в чём же прелесть этой функции?
Вот только выдаёт вот такое сообщение
Цитата

Notice: Undefined index: id in /home/ng/public_html/123/control_up.php on line 3

Автор: -=Ustas=- 13.11.2006, 13:10
Цитата(Enya @  13.11.2006,  12:42 Найти цитируемый пост)

Notice: Undefined index: id in /home/ng/public_html/123/control_up.php on line 3


Ну правильно, если ид не определен, тогда
Код

 $id = (isset($_GET['id'])) ? intval($_GET['id']) : FALSE;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)