PHP script werkt nog niet

Status
Niet open voor verdere reacties.

turbojohn

Gebruiker
Lid geworden
26 jun 2007
Berichten
262
Hej,

Ik heb een tijdje geleden een vraag gepost over een scripje om artikelen toe te voegen.
Een ding daarvan is opgelost: als ik nu in mijn menu klik op een categorie doet hij t ook.. ik had CATEGORIE_ID ipv Categorie_id
Maar een ander ding werkt nog niet, namelijk mijn artikel_toevoegen script...
Als ik op toevoegen klik, gaat hij telkens terug naar mijn authorisatie.php ipv een artikel toe te voegen...

Hier is het script:
<?php
session_start();
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>JelCom -Computers-Laptops-Randapparatuur-Webdesign- EN GEGARANDEERD DE GOEDKOOPSTE!!!</title>
<link rel="stylesheet" type="text/css" href="css.css" />
</head>

<body>
<body bgcolor="#0299D8">
<!-- Begin Wrapper -->
<div id="wrapper">

<!-- Begin Header -->
<div id="header">

<center><br><br><br><br><br><font color="white">Best viewed by 1024x768 px</center></font>

</div>
<!-- End Header -->

<!-- Begin Left Column -->
<div id="leftcolumn">

<left><?php include ('./menu.php'); ?></left>

</div>
<!-- End Left Column -->

<!-- Begin Right Column -->
<div id="rightcolumn">


<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-width: 0" bordercolor="#111111" width="97%" id="AutoNumber1">
<tr>
<td width="100%" style="border-style: none; border-width: medium">
<p align="left">
<?php
require "header.php";
$admin = true;
require "authenticatie.php";

if ($knop && $naam && $omschrijving && $prijs) { // artikel ingevoerd?
$sql = "INSERT INTO Artikel (Naam, Omschrijving, Prijs) VALUES ('$naam', '$omschrijving', $prijs)";
if (!mysql_query($sql)) { // voer SQL code uit
echo "Toevoegen artikel mislukt!";
exit;
} else {
$artikelid = mysql_insert_id(); // primaire sleutel van zojuist toegevoegde rij
$sql = "INSERT INTO Categorie_per_artikel (Artikel_id, Categorie_id) VALUES ($artikelid, $categorieid)";
if (!mysql_query($sql)) { // voer SQL code uit
echo "Toevoegen categorie mislukt!";
exit;
}
}
echo "OK, uw artikel $naam is toegevoegd.";
} elseif ($knop) {
$sql = "INSERT INTO Categorie_per_artikel (Artikel_id, Categorie_id) VALUES ($artikelid, $categorieid)";
if (!mysql_query($sql)) { // voer SQL code uit
echo "Toevoegen categorie mislukt!";
exit;
}
echo "OK, uw artikel $naam is toegevoegd.";
}
if ($knop) {
?>
<p><div class="big">Artikel toevoegen</div><br>
<form method="post" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="naam" value="<?php echo $naam ?>">
<input type="hidden" name="artikelid" value="<?php echo $artikelid ?>">

Voeg eventueel een extra categorie toe aan het artikel <b><?php echo $naam ?></b><br>
Selecteer een categorie: <select name="categorieid">
<?php
$sql = "SELECT * FROM Categorie";
$resultaat = mysql_query($sql); // voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo "<option value=\"";
echo $rij["Categorie_id"]."\">";
echo $rij["Naam"]."</option>\n";
}

?>
</select><br>
<input type="submit" name="knop" value="toevoegen">
<?php

} else {
?>

<form method="post" action="<?php echo $PHP_SELF ?>">
Selecteer een categorie: <select name="categorieid">
<?php
$sql = "SELECT * FROM Categorie";
$resultaat = mysql_query($sql); // voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo "<option value=\"";
echo $rij["Categorie_id"]."\">";
echo $rij["Naam"]."</option>\n";
}
?>
</select><br>
Artikel naam: <input type="text" name="naam"><br>
Artikel omschrijving: <textarea name="omschrijving" cols="30" rows="4"></textarea><br>
Artikel prijs: <input type="text" name="prijs"><br>
<input type="submit" name="knop" value="toevoegen">
</form>
<?php
}

require "footer.php";
?>

</div>
<!-- End Right Column -->

</div>
<!-- End Wrapper -->

</body>
</html>


kan iemand mij alstublieft helpen??? Want ik zit er namelijk wel even mee...:thumb:
 
Wel je code tussen [.PHP] en [./PHP] zetten.

PHP:
<?php
session_start();
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>JelCom -Computers-Laptops-Randapparatuur-Webdesign- EN GEGARANDEERD DE GOEDKOOPSTE!!!</title>
<link rel="stylesheet" type="text/css" href="css.css" />
</head>

<body>
<body bgcolor="#0299D8">
<!-- Begin Wrapper -->
<div id="wrapper">

<!-- Begin Header -->
<div id="header">

<center><br><br><br><br><br><font color="white">Best viewed by 1024x768 px</center></font>

</div>
<!-- End Header -->

<!-- Begin Left Column -->
<div id="leftcolumn">

<left><?php include ('./menu.php'); ?></left>

</div>
<!-- End Left Column -->

<!-- Begin Right Column -->
<div id="rightcolumn">


<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-width: 0" bordercolor="#111111" width="97%" id="AutoNumber1">
<tr>
<td width="100%" style="border-style: none; border-width: medium">
<p align="left">
<?php
require "header.php";
$admin = true;
require "authenticatie.php";

if ($knop && $naam && $omschrijving && $prijs) { // artikel ingevoerd?
$sql = "INSERT INTO Artikel (Naam, Omschrijving, Prijs) VALUES ('$naam', '$omschrijving', $prijs)";
if (!mysql_query($sql)) { // voer SQL code uit
echo "Toevoegen artikel mislukt!";
exit;
} else {
$artikelid = mysql_insert_id(); // primaire sleutel van zojuist toegevoegde rij
$sql = "INSERT INTO Categorie_per_artikel (Artikel_id, Categorie_id) VALUES ($artikelid, $categorieid)";
if (!mysql_query($sql)) { // voer SQL code uit
echo "Toevoegen categorie mislukt!";
exit;
}
}
echo "OK, uw artikel $naam is toegevoegd.";
} elseif ($knop) {
$sql = "INSERT INTO Categorie_per_artikel (Artikel_id, Categorie_id) VALUES ($artikelid, $categorieid)";
if (!mysql_query($sql)) { // voer SQL code uit
echo "Toevoegen categorie mislukt!";
exit;
}
echo "OK, uw artikel $naam is toegevoegd.";
}
if ($knop) {
?>
<p><div class="big">Artikel toevoegen</div><br>
<form method="post" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="naam" value="<?php echo $naam ?>">
<input type="hidden" name="artikelid" value="<?php echo $artikelid ?>">

Voeg eventueel een extra categorie toe aan het artikel <b><?php echo $naam ?></b><br>
Selecteer een categorie: <select name="categorieid">
<?php
$sql = "SELECT * FROM Categorie";
$resultaat = mysql_query($sql); // voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo "<option value=\"";
echo $rij["Categorie_id"]."\">";
echo $rij["Naam"]."</option>\n";
}

?>
</select><br>
<input type="submit" name="knop" value="toevoegen">
<?php

} else {
?>

<form method="post" action="<?php echo $PHP_SELF ?>">
Selecteer een categorie: <select name="categorieid">
<?php
$sql = "SELECT * FROM Categorie";
$resultaat = mysql_query($sql); // voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo "<option value=\"";
echo $rij["Categorie_id"]."\">";
echo $rij["Naam"]."</option>\n";
}
?>
</select><br>
Artikel naam: <input type="text" name="naam"><br>
Artikel omschrijving: <textarea name="omschrijving" cols="30" rows="4"></textarea><br>
Artikel prijs: <input type="text" name="prijs"><br>
<input type="submit" name="knop" value="toevoegen">
</form>
<?php
}

require "footer.php";
?>

</div>
<!-- End Right Column -->

</div>
<!-- End Wrapper -->

</body>
</html
 
Hoe kom je aan die $knop, $naam, $omschrijving, etc.?

Om een variabele uit een formulier te halen, moet je wel $_POST gebruiken.

$naam = $_POST['naam'];

Dan kun je 'm pas gebruiken.
 
De $naam $omschrijving $prijs komen van het formulier. Van daaruit wordt er gegevens in de database opgeslagen.
Wat ik ook vreemd vind is, dat ik als ik me ingelogd heb, ik bij een andere hyperlink weer in moet loggen. Heel mijn control panel bij mijn adminmenu moet ik iedere keer, bij elke toetsklik weer inloggen. Dat vind ik heel vreemd. Vroeger was dat niet, toen had ik gewoon een standaard layout. Maar sinds kort heb ik alles met CSS opgemaakt en gepositioneerd en nu lijkt het wel of mijn php dr mee kapt.
:confused:
Ik heb al aan heel veel programmeurs gevraagd hoe dat komt, maar ik heb nog steeds geen duidelijk antwoord. :(

Als ik me inlog, en daarna weer op inloggen klik, dan moet ik me ook weer inloggen. Normaal gesproken zou hij dan toch aan moeten geven dat ik al ingelogd ben? Hieronder staat het scripje. Het komt uit de boekjes van Leer PHP van Arjan van Duuren... dus het zou toch moeten kloppen?

<?php
require "database.php";
function controle($naam, $wachtwoord, $admin) {

if ($admin == false) {

$sql = "SELECT Klant_id, Username, Password FROM Klant WHERE Username='$naam'";

} else { // admin nodig? Haal eerste record op

$sql = "SELECT Klant_id, Username, Password FROM Klant WHERE Klant_id='8'";

}

$result = mysql_query($sql);

if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "Klant_id");

if ($wachtwoord != $password) {
return false;
} else {
return $klantid;
}
} else {
return false;
}

}

// Check naam en wachtwoord

if (isset($_POST['verzonden'])) {

$username = $_POST['username'];
$wachtwoord = ($_POST['wachtwoord']);
$klantid = controle($username, $wachtwoord, $admin);

if ($klantid != false) {
// Correct

$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;

}

}

if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {

echo "<form method=\"post\" action=\"$PHP_SELF?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "</p>
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse; border-width: 0\" bordercolor=\"#111111\" width=\"100%\" id=\"AutoNumber1\" height=\"14\">
<tr>
<td width=\"28%\" style=\"border-style: none; border-width: medium\" height=\"12\">
<p align=\"right\"><font face=\"Arial\">Naam:</font></td>
<td width=\"72%\" style=\"border-style: none; border-width: medium\" height=\"12\">
<left><input type=\"text\" name=\"username\"></td>
</tr>
<tr>
<td width=\"28%\" style=\"border-style: none; border-width: medium\" height=\"12\">
<p align=\"right\"><font face=\"Arial\">Wachtwoord:</font></td>
<td width=\"72%\" style=\"border-style: none; border-width: medium\" height=\"12\">
<left><input type=\"password\" name=\"wachtwoord\"></td>

</tr>
</table>";
echo "<br>";
echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
echo "</form>";

echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";

if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}

exit;

}

?>
 
Laatst bewerkt:
Om een variabele uit een formulier te halen, moet je wel $_POST gebruiken.

$naam = $_POST['naam'];
 
ja, maar $naam is geen sessie ofzo??? Het wordt in het invoerformulier ingetypt, en dat vormt <input type="text" name="naam"> en daarvandaan komt die $naam
En zoals ik al zei, voor mijn CSSgebeuren werkte het wel. Of het komt door de nieuwe explorerversies van tegenwoordig of het komt door het script...
 
maar is het scripje wel goed dan? Want ik vind het gewoon gek dat het ineens niet meer werkt... ik heb niet veel verstand van programmeren, daarom ben ik het ook aan het leren. Ik wil weten waar de fout zit, heb alles ook al bekeken, maar kom er niet uit...
Want hoe kan het nu dat als ik op 'toevoegen' klik, hij weer terugswitcht naar mijn inlogscherm. Komt dat omdat mijn sessies dan afgelopen zijn of komt dat doordat mijn scripje niet goed is...?
 
Weet ik veel wat er allemaal mis is met dat script, het is een grote puinzooi.

Wat ik wel weet, is dat dit niet klopt.

PHP:
if ($knop && $naam && $omschrijving && $prijs) { // artikel ingevoerd?

Want nogmaals, je moet die variabelen eerst met $_POST uit de POST-array halen.
 
dat heb ik gedaan, maar dan nog werkt het niet...? Ja ik weet dat ik zeur en dat ik niets van php afweet... maar door fouten leer je het zei mijn oma altijd;)
Dus ja... ik heb nu alles gedaan zoals je al zei, maar het werkt nóg niet...:mad:
 
Wat voor error krijg je dan?
 
Want nogmaals, je moet die variabelen eerst met $_POST uit de POST-array halen.

Is niet helemaal waar. Die variabelen zullen wel werken, veilig is het niet (Volgens mij heb ik dat ook al eens eerder aan de TS duidelijk geprobeerd te maken, of het was een ander)

Je kunt nu net zo goed $_GET['knop'] etc. gebruiken, dan neemt hij gewoon die variabelen.

Door $_POST te gebruiken verplicht je het script om de variabelen uit een formulier te halen.

Ik ben het wel met SvU eens, dit script is verre van overzichtelijk.
Daarnaast is het voor ons wel fijn als je
PHP:
-tags gaat gebruiken. Hier heeft SvU je ook al op gewezen maar waarschijnlijk heb je dat bericht niet eens gelezen.
 
niets juist...
Kijk..ik zal het even duidelijk uitleggen, want ik ben nogal vaag...
Eerst klik ik op de link naar mijn admin...
Dan log ik in met mijn admin inloggegevens
Vervolgens klik ik op 'artikel toevoegen' en moet me dan weer inloggen..wat ik nog steeds niet snapt want hij gebruikt hetzelfde scripje als bij mijn adminlogin..
Maar goed, dan voer ik een artikel in en klik op de button 'toevoegen'
Zogauw ik die button aanraak met mijn muis komt er: \Jelcom\artikel_toevoegen.php (waarschijnlijk omdat hij als action $PHP_SELF gebruikt, want dat is ook bij mijn aanmeldformulier, maar die werkt wel)
En als ik dan klik, dan komt mijn inlogschermpje er weer, omdat ik schijnbaar niet ingelogd ben...??
 
Laatst bewerkt:
Is niet helemaal waar. Die variabelen zullen wel werken, veilig is het niet (Volgens mij heb ik dat ook al eens eerder aan de TS duidelijk geprobeerd te maken, of het was een ander)

Je kunt nu net zo goed $_GET['knop'] etc. gebruiken, dan neemt hij gewoon die variabelen.

Door $_POST te gebruiken verplicht je het script om de variabelen uit een formulier te halen.

Ik ben het wel met SvU eens, dit script is verre van overzichtelijk.
Daarnaast is het voor ons wel fijn als je
PHP:
-tags gaat gebruiken. Hier heeft SvU je ook al op gewezen maar waarschijnlijk heb je dat bericht niet eens gelezen.[/QUOTE]

Ow sorry, bedoelde hij het zo, ik het het eerder het idee dat hij het over mijn scripje had:o Lomp van me, ik had er verder niet bij nagedacht
Maar ik zal me in het vervolg eraan houden;)
 
Ligt het aan mij of mis ik in bovenstaand scriptje (waar de functie controle() in zit) een session_start();?
 
Ligt het aan mij of mis ik in bovenstaand scriptje (waar de functie controle() in zit) een session_start();?

Ehm, nee, maar dit scripje wordt in een pagina geladen met 'require' en in die pagina staat wel <?php session_start; ?>
Of moet ik die ook in dat loginscript zetten?
 
Eh, je moet wel de session_start-functie gebruiken, wil je sessies laten werken.
 
Ehm, nee, maar dit scripje wordt in een pagina geladen met 'require' en in die pagina staat wel <?php session_start; ?>
Of moet ik die ook in dat loginscript zetten?
Session_start is een FUNCTIE en een functie heeft altijd haakjes. Oftewel:

session_start();
 
Session_start is een FUNCTIE en een functie heeft altijd haakjes. Oftewel:

session_start();

Pardon, dat bedoelde ik ook, maar was dat even vergeten. Ik schrijf het namelijk wel met ()
Maar goed, ik heb nu zowel in mijn artikel_toevoegen.php als in mijn authenticatie.php dat session_start(); gezet, maar nog steeds vraagt hij bij nadat ik ingelogd ben weer om mijn wachtwoord.
Kun je een sessie een bepaalde tijd geven? Want het lijkt alsof hij bij het bladeren naar een andere pagina mijn sessies weer weggooit..?
 
Als je in php.ini nooit iets aan de session_timeout hebt veranderd (die standaard op 20 minuten staat) is de kans klein dat het daaraan ligt.

Hoe ziet je authenticatiescript eruit?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan