Archief - PHP hulp!

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

krawler

Legacy Member
jow,
Ik heb een probleem met een stuk php code.
De bedoeling is dus dat ik 1 of meerdere checkboxen aanduid en die dan delete in de databank (postgres btw). ik krijg hele tijd DB unknown error. Ik heb wat zitten debuggen en eerst gaf hij aan de er niet in $_POST['leden'] zit. Dat heb ik dan gefixt en in de plaats krijg ik dus een unknown error.
Ziet iemand de fout? of hoe ik miss anders kan doen?

edit : Blijkbaar is de POST['leden'] nog steeds leeg. maar waarom?


Code:
<?php session_start();

require_once('databankConnectie.php');
global $db;
/*$db->setFetchMode(DB_FETCHMODE_OBJECT);*/


if (isset($_POST['verwijder']))
{
    $toDelete = $_POST["leden"];
   
    foreach($toDelete as $deleted)
    {
        $q = $db->query("DELETE FROM bockno.leden
                         WHERE lidnr = ?",array($deleted));
    }
}

$leden = $db->getAll('SELECT lidnr,nickname FROM bockno.leden');

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type"
content="text/html; charset=iso-8859-1" />
<title> Dumbell paradise - Lijst van alle leden
</title>
<link rel="stylesheet" type="text/css" href="cssfile.css" />
</head>
<body>
<div id="wrapper">
   	<div id="header">
       	<div id="logo"><img src="fotos/headerfoto.jpg" alt="" width="800" height="150" /></div>
        <div id="bc">
	       	<a href="home.php">Home</a> > <a href="welkom.php">Welkom</a> > lijst van leden
      	</div>
    </div>

    <div id="nav">
		<ul>
			<li><a href="home.php">Home</a></li>
			<li><a href="oefeningenLinks.php">Oefeningen</a></li>
			<li><a href="Trainingschemas.php">Trainingschema's</a></li>
                        <li><a href="login.php">Inloggen</a></li>
                        <li><a href="form.php">Registreren</a></li>
                        <?php if($_SESSION["soort"] == "admin" || $_SESSION["soort"] == "lid" || $_SESSION["soort"] == "eLid")
                        {?>
                            <li><a href="ForumTopics.php">Forum</a></li>
                        <?php }?>

                        <?php if($_SESSION["soort"] == "admin")
                        {?>
                            <li><a href="VerwijderTopics.php">Verwijder Topics</a></li>
                        <?php }?>
		</ul>



                </div>
     <div id="tekstwindow">
         <h1>Lijst van leden </h1>
        <form method="post" action="<?php echo $PHP_SELF;?>">
        <table cellpadding="5" cellspacing="0" border="1">

            <tr>
		<th></th> <th>Lid</th>
            </tr>

            <?php foreach($leden as $lid){?>

                <tr>
                   <td><input type="checkbox" value="<?php $lid[0]?>" name="leden[]"/></td> <td><?php echo $lid[1] ?></td>
                </tr>
            <?php }?>
        </table>
        <p><input type="submit" name="verwijder" value="verwijder" /></p>
        </form>
        <p><?php $toDelete = $_POST["leden"];
    print_r($toDelete); 
    echo $_POST["leden"];?></p>

   </div>
    
	</div>
</body>

</html>

krawler

Legacy Member
Cycloon zei:
Mss omdat je checkboxen de naam "leden[]'" hebben?

ah oei. ik dacht dat php dat stript naar leden. meteen is testen!
edit: nope. nu zegt hij dat ik op lijn 16 een invalid argument mee geef met e for each.

krawler

Legacy Member
Tyfius zei:
Dat is correct hoor: Handling checkbox in a PHP form processor

En wat is de exacte error want uw debug call is fout. $_POST['leden'] zal een array zijn en ga je met echo niet kunnen afdrukken. Daarvoor moet je print_r() gebruiken.

Array ( [0] => ) dit is de output van print_r na dat ik de array geinitialiseerd heb met de POST waarde. Ik weet dus dat hij de POST['leden] niet gevuld heeft met de data.. Juist?

En de exacte error is. DB Error: unknown error
dat is alles :s

Edit! ok gefixt!
had hier een echo vergeten <td><input type="checkbox" value="<?php echo $member[0]?>"
en ik denk dat er twee dezelfde POST vars waren. en dat kan blijkbaar conflicten geven

cheers en bedankt mensen!

Cycloon

Legacy Member
Die action in je form mag je ook weglaten als je naar dezelfde pagina post. Ik zou alleszins eens proberen om 1 checkbox te gebruiken en zien wat dat oplevert. Als dat al niet werkt zit het probleem ergens anders.

Ik wist trouwens niet dat php die [] vereiste achter een naam voor multiple checkboxes, weer wat bijgeleerd :)

Curahee Q

Legacy Member
Even een paar opmerkingen ivm je code

<form method="post" action="<?php echo $PHP_SELF;?>">

$PHP_SELF bestaat niet, het werkt wel maar dat komt van vroeger. Het is dus $_SERVER['PHP_SELF'] maar ook dat is af te raden. Gewoon de naam van de file ingeven dus.

<form method="post" action="naam_file.php">

Wat je afhandeling betreft van je form doe je het verkeerd. Zo handel je een form in php af

Code:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
       // hier de afhandeling
}
?>

Omdat je dan misschien niet weet van welke form het komt kan je een hidden field toevoegen binnen je form

<form action="naam_file.php" method="post">
<input type="hidden" name="txtHidden" value="verwijder" />

...
</form>

En dan krijg je als php-code

Code:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
       if(isset($_POST['txtHidden']) && $_POST['txtHidden'] == "verwijder") {
               // verdere afhandeling
       }
}
?>

krawler

Legacy Member
Danku!
weer serieus wat bijgeleerd. Ben vrij nieuw in php.
Bedankt voor de feedback!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan