PDA

Volledige versie bekijken : PHP dropdown menu verschillende tables.


MrAlucard
%Europe/Berlin %671 %2009, 16:07
Ik ben bezig om met een dropdown menu een keuze te geven in welke table de data komt in de database voor in mijn simpele CMS systeempje ;).
InsertForm.
<form action="cms/insert.php" method="post">
<label>Page.</label>
<select name="pagina">
<option value="" selected="selected">-- Select --</option>
<option value="persons">persons</option>
<option value="other">other</option>
</select><br />
Title: <input type="text" name="title" /><br />
Content:<textarea input type="text" name="content" cols="45" rows="5"></textarea><br />
ID: <input type="text" name="id" /><br />
<input type="submit" value="submit"/>
</form>
Hier is dus het html gedeelte dat ik gebruik.
En hier is " insert.php" .

<? include "base.php" ?>

<?php
$sql="INSERT INTO persons (Title, Content, Id)
VALUES
('$_POST[title]','$_POST[content]','$_POST[id]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

$sql="INSERT INTO other (Title, Content, Id)
VALUES
('$_POST[title]','$_POST[content]','$_POST[id]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con)
?>
Nu wil ik dus weten hoe ik de naam van de geselecteerde drop down item kan koppelen aan insert.php. Want als ik het form nu gebruik wordt het in beide tables gepost.

023-jimmy
%Europe/Berlin %679 %2009, 16:17
<?php
$sql="INSERT INTO ". $_POST['pagina'] ." (Title, Content, Id)
VALUES
('$_POST[title]','$_POST[content]','$_POST[id]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con)
?>

MrAlucard
%Europe/Berlin %680 %2009, 16:19
Dus zo simpel kan het wel zijn?
//edit. Die oplossing had ik ook al in gedachten maar dat werkt alleen als alle forms hetzelfde zijn met dezelfde gegevens etc.

Dat is in dit voorbeeld ook wel zo maar stel dat ik er een datum bij wil hebben in de ene table en niet de ander. Dan gaat het mis toch?

023-jimmy
%Europe/Berlin %680 %2009, 16:20
Jup, moeilijker hoef je het niet te maken.

-- Edit
Dat is in dit voorbeeld ook wel zo maar stel dat ik er een datum bij wil hebben in de ene table en niet de ander. Dan gaat het mis toch?

Dan kan je inderdaad ook een andere oplossing gebruiken, door gebruik te maken van if statement. Als volgt:

<?php
if($_POST['pagina'] == "persons"){
$sql="INSERT INTO persons (Title, Content, Id) VALUES ('$_POST[title]','$_POST[content]','$_POST[id]')";

if (!mysql_query($sql,$con)){
die('Error: ' . mysql_error());
}
echo "1 record added";
}


if($_POST['pagina'] == "other"){
$sql="INSERT INTO other (Title, Content, Id, Date) VALUES ('$_POST[title]','$_POST[content]','$_POST[id]','$_POST[date]')";

if (!mysql_query($sql,$con)){
die('Error: ' . mysql_error());
}
echo "1 record added";
}

mysql_close($con)
?>

josko
%Europe/Berlin %981 %2009, 23:33
Hey,
alle bovenstaande code is slecht beveiligd. Ik weet niet precies hoe je het gaat gebruiken, maar het uitvoeren van mysql_real_escape_string en eventueel bij het outputten htmlspecialchars is een goed idee.

groetjes :)

MrAlucard
%Europe/Berlin %428 %2009, 10:17
Hey Josko, ik weet dat de codes niet beveiligt zijn. Het gaat me eerst om de functionaliteit voor een simpele CMS systeem voor aantal websites die ik in de maak heb. Er is dus maar 1 gebruiker mee bezig.

Maar alsnog bedankt, beveiliging wordt aan gewerkt ;).