Foutief id wordt verwijderd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bert Van den Brande

Bert Van den Brande

22/06/2013 08:54:23
Quote Anchor link
Onderstaande code gebruik om de geblokeerde gebruikers weer te geven.
Als er een geblokeerde gebruiker is is er geen enkel probleem.
Vanaf er 2 zijn en ik klik achter de eerste gebruiker op verwijderen dan verwijdert hij de blokkering van de 2de gebruiker.

Wat is er mis met m'n code?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);

/******************
*Initialisatie
*******************/

 $_srv = $_SERVER['PHP_SELF'];
 $_srid = $_SESSION['user_srid'];
 $_output = "";
// authorisation
 include("../php_lib/user_ok.inc.php");
 User_OK(1);
/******************
*        autoload
******************/

function __autoload($className) {
    require_once "../klassen/$className.class.php";
}


 include("../connections/pdo.inc.php");
 include("../php_lib/menu.inc.php");
try
{
if (! isset($_POST["verwijder"]))
    {

$_result = $_PDO -> query("SELECT * FROM v_users WHERE Counter=3");

  if ($_result -> rowCount() > 0)
        {

            $_output.= "<form  id='club' method='post' action='$_srv'><fieldset><legend>Geblokkeerde gebruikers</legend><ol>";
            
            while ($_row = $_result -> fetch(PDO::        FETCH_ASSOC))
            {

                $_output.= "<li>
              "
.$_row['Voornaam']."&nbsp;".$_row['Familienaam']."";
              $_output.= "<input name='id' type='hidden' value='".$_row['Userid']."'>
                  <input name='voornaam' type='hidden' value='"
.$_row['Voornaam']."'>
                    <input name='familienaam' type='hidden' value='"
.$_row['Familienaam']."'>
                <input name='verwijder' type='submit' value='verwijder'></li>"
;


             }

            $_output.= "<br></fieldset></form>";
           }

               else
               {
                   $_output = "<form  id='club' method='post' action='$_srv'><fieldset><legend>Geblokkeerde gebruikers</legend><ol><li>Geen geblokkeerde gebruikers gevonden</li></fieldset></form>";
            }
    }

    else
  {
        $_id = $_POST['id'];
        $_voornaam = $_POST['voornaam'];
        $_familienaam = $_POST['familienaam'];
      $_result = $_PDO -> query("select d_user_id, d_logon FROM t_user where d_user_id = '$_id';");
  
          if ($_result -> rowCount() > 0)
           {

               $_result = $_PDO -> query("UPDATE t_user SET d_counter=0, d_timeout=0 WHERE d_user_id = $_id");
/*            $_logon = $_row['d_logon'];*/
                $_output = "<form  id='club' method='post' action='$_srv'><fieldset><legend>Geblokkeerde gebruikers</legend><ol><li>Blokkering voor $_voornaam $_familienaam is opgeheven.</li></fieldset></form>";

           }

           else
           {
            throw new myException("database inconsistency");

            }
    }

// Object instantieren
    $_smarty = new My_smarty();

// We kennen de variabelen toe
    $_smarty->assign('menuh',menu(16,'H'));
    $_smarty->assign('menuv',menu($_SESSION['user_rol'],'VA'));
    $_smarty->assign('inhoud', $_output);
// display it
    $_smarty->display('test.tpl');

}

 catch( PDOexception $e ){
//doe iets met de foutmelding
//    log("../log/logfile.csv");
//    errorMessage();

echo $e->getMessage();

}
  

?>
 
PHP hulp

PHP hulp

18/12/2024 09:26:42
 
Ward van der Put
Moderator

Ward van der Put

22/06/2013 11:46:29
Quote Anchor link
Het gaat onder andere fout bij deze (ingekorte) constructie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
while ($_row = $_result->fetch(PDO::FETCH_ASSOC)) {
    $_output .= "<input name='id' type='hidden' value='" . $_row['Userid'] . "'>
        <input name='verwijder' type='submit' value='verwijder'>"
;
}

?>


Zodra je namelijk méér dan één gebruiker hebt, komt name='id' meerdere keren voor in het formulier, steeds met de id van een andere gebruiker. En je knop 'verwijder' verwijdert daarbij niet slechts die ene gebruiker, maar verzendt gewoon het gehele formulier, inclusief alle id's.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.