Ik heb geen idee hoe je het nu doet zodat je errors krijgt. Maar een check lijkt mij wel minimaal.
Link gekopieerd
Bij alle chechboxen die niet ingevuld zijn krijg ik deze error:
Notice: Undefined index
Maar wat ik me dus afvroeg, is of het mogelijk is om in 1x alle checkboxen te checken en niet voor allemaal dat isset stuk te hoeven schrijven.
Een andere oplossing is ook ok, en is het mss handig als ik me source post?
Link gekopieerd
Je zal elke checkbox moeten checken met isset().
Link gekopieerd
Hmm, het werkt nog steeds niet zie hier mijn code:
<?php
include("config.php");
include("checksession.php");
$huisnaam = $_SESSION['huisnaam'];
$waardering_accommodatie = $_POST['waardering'];
$waardering_situering = $_POST['waardering_situering'];
if(isset($_POST['kamer'])) {
$kamer = $_POST['kamer'];
}
else {
$kamer = "";
}
if(isset($_POST['kamer2'])) {
$kamer2 = $_POST['kamer2'];
}
else {
$kamer2 = "";
}
if(isset($_POST['kamer_pension '])) {
$kamer_pension = $_POST['kamer_pension '];
}
else {
$kamer_pension = "";
}
if(isset($_POST['kamer_pension_2'])) {
$kamer_pension_2 = $_POST['kamer_pension_2'];
}
else {
$kamer_pension_2 = "";
}
if(isset($_POST['kamer_in_bb'])) {
$kamer_in_bb = $_POST['kamer_in_bb'];
}
else {
$kamer_in_bb = "";
}
if(isset($_POST['kamer_in_bb2'])) {
$kamer_in_bb2 = $_POST['kamer_in_bb2'];
}
else {
$kamer_in_bb2 = "";
}
if(isset($_POST['kamer_in_particulier'])) {
$kamer_in_particulier = $_POST['kamer_in_particulier'];
}
else {
$kamer_in_particulier = "";
}
if(isset($_POST['kamer_in_particulier_2'])) {
$kamer_in_particulier_2 = $_POST['kamer_in_particulier_2'];
}
else {
$kamer_in_particulier_2 = "";
}
if(isset($_POST['kamer_in_hotel'])) {
$kamer_in_hotel = $_POST['kamer_in_hotel'];
}
else {
$kamer_in_hotel = "";
}
if(isset($_POST['kamer_in_hotel2'])) {
$kamer_in_hotel2 = $_POST['kamer_in_hotel2'];
}
else {
$kamer_in_hotel2 = "";
}
if(isset($_POST['rijtjes_huis'])) {
$rijtjes_huis = $_POST['rijtjes_huis'];
}
else {
$rijtjes_huis = "";
}
if(isset($_POST['hoekwoning'])) {
$hoekwoning = $_POST['hoekwoning'];
}
else {
$hoekwoning = "";
}
if(isset($_POST['vrijstaand_huis'])) {
$vrijstaand_huis = $_POST['vrijstaand_huis'];
}
else {
$vrijstaand_huis = "";
}
if(isset($_POST['twee_onder_een_kap'])) {
$twee_onder_een_kap = $_POST['twee_onder_een_kap'];
}
else {
$twee_onder_een_kap = "";
}
if(isset($_POST['zomerhuis'])) {
$zomerhuis = $_POST['zomerhuis'];
}
else {
$zomerhuis = "";
}
if(isset($_POST['studio_in'])) {
$studio_in = $_POST['studio_in'];
}
else {
$studio_in = "";
}
if(isset($_POST['studio_in2'])) {
$studio_in2 = $_POST['studio_in2'];
}
else {
$studio_in2 = "";
}
if(isset($_POST['studio_in3'])) {
$studio_in3 = $_POST['studio_in3'];
}
else {
$studio_in3 = "";
}
if(isset($_POST['appartement_in'])) {
$appartement_in = $_POST['appartement_in'];
}
else {
$appartement_in = "";
}
if(isset($_POST['appartement_in2'])) {
$appartement_in2 = $_POST['appartement_in2'];
}
else {
$appartement_in2 = "";
}
if(isset($_POST['appartement_in3'])) {
$appartement_in3 = $_POST['appartement_in3'];
}
else {
$appartement_in3 = "";
}
if(isset($_POST['anders'])) {
$anders = $_POST['anders'];
}
else {
$anders = "";
}
if(isset($_POST['anders2'])) {
$anders2 = $_POST['anders2'];
}
else {
$anders2 = "";
}
if(isset($_POST['accommodaties_in_pand'])) {
$accommodaties_in_pand = $_POST['accommodaties_in_pand'];
}
else {
$accommodaties_in_pand = "";
}
if(isset($_POST['entree'])) {
$entree = $_POST['entree'];
}
else {
$entree = "";
}
if(isset($_POST['aantal_personen'])) {
$aantal_personen = $_POST['aantal_personen'];
}
else {
$aantal_personen = "";
}
if(isset($_POST['roken'])) {
$roken = $_POST['roken'];
}
else {
$roken = "";
}
if(isset($_POST['honden'])) {
$honden = $_POST['honden'];
}
else {
$honden = "";
}
if(isset($_POST['aantal_woonlagen'])) {
$aantal_woonlagen = $_POST['aantal_woonlagen'];
}
else {
$aantal_woonlagen = "";
}
if(isset($_POST['aantal_woonlagen2'])) {
$aantal_woonlagen2 = $_POST['aantal_woonlagen2'];
}
else {
$aantal_woonlagen2 = "";
}
if(isset($_POST['woonoppervlakte'])) {
$woonoppervlakte = $_POST['woonoppervlakte'];
}
else {
$woonoppervlakte = "";
}
if(isset($_POST['woonoppervlakt2'])) {
$woonoppervlakt2 = $_POST['woonoppervlakt2'];
}
else {
$woonoppervlakt2 = "";
}
if(isset($_POST['grondoppervlakte'])) {
$grondoppervlakte = $_POST['grondoppervlakte'];
}
else {
$grondoppervlakte = "";
}
if(isset($_POST['grondoppervlakte2'])) {
$grondoppervlakte2 = $_POST['grondoppervlakte2'];
}
else {
$grondoppervlakte2 = "";
}
if(isset($_POST['balkon_oppervlakte'])) {
$balkon_oppervlakte = $_POST['balkon_oppervlakte'];
}
else {
$balkon_oppervlakte = "";
}
if(isset($_POST['balkon_oppervlakte2'])) {
$balkon_oppervlakte2 = $_POST['balkon_oppervlakte2'];
}
else {
$balkon_oppervlakte2 = "";
}
if(isset($_POST['aantal_kamers'])) {
$aantal_kamers = $_POST['aantal_kamers'];
}
else {
$aantal_kamers = "";
}
if(isset($_POST['aantal_kamer2'])) {
$aantal_kamer2 = $_POST['aantal_kamer2'];
}
else {
$aantal_kamer2 = "";
}
if(isset($_POST['aantal_toiletten'])) {
$aantal_toiletten = $_POST['aantal_toiletten'];
}
else {
$aantal_toiletten = "";
}
if(isset($_POST['aantal_toiletten2'])) {
$aantal_toiletten2 = $_POST['aantal_toiletten2'];
}
else {
$aantal_toiletten2 = "";
}
if(isset($_POST['drukte'])) {
$drukte = $_POST['drukte'];
}
else {
$drukte = "";
}
if(isset($_POST['uitzicht_woningen'])) {
$uitzicht_woningen = $_POST['uitzicht_woningen'];
}
else {
$uitzicht_woningen = "";
}
if(isset($_POST['uitzicht_duinen'])) {
$uitzicht_duinen = $_POST['uitzicht_duinen'];
}
else {
$uitzicht_duinen = "";
}
if(isset($_POST['uitzicht_zee'])) {
$uitzicht_zee = $_POST['uitzicht_zee'];
}
else {
$uitzicht_zee = "";
}
if(isset($_POST['uitzicht_plein'])) {
$uitzicht_plein = $_POST['uitzicht_plein'];
}
else {
$uitzicht_plein = "";
}
if(isset($_POST['uitzicht_terras'])) {
$uitzicht_terras = $_POST['uitzicht_terras'];
}
else {
$uitzicht_terras = "";
}
if(isset($_POST['uitzicht_tuin'])) {
$uitzicht_tuin = $_POST['uitzicht_tuin'];
}
else {
$uitzicht_tuin = "";
}
if(isset($_POST['uitzicht_bomen'])) {
$uitzicht_bomen = $_POST['uitzicht_bomen'];
}
else {
$uitzicht_bomen = "";
}
if(isset($_POST['uitzicht_straat'])) {
$uitzicht_straat = $_POST['uitzicht_straat'];
}
else {
$uitzicht_straat = "";
}
if(isset($_POST['uitzicht_zwembad'])) {
$uitzicht_zwembad = $_POST['uitzicht_zwembad'];
}
else {
$uitzicht_zwembad = "";
}
if(isset($_POST['uitzicht_jachthaven'])) {
$uitzicht_jachthaven = $_POST['uitzicht_jachthaven'];
}
else {
$uitzicht_jachthaven = "";
}
if(isset($_POST['uitzicht_dorp'])) {
$uitzicht_dorp = $_POST['uitzicht_dorp'];
}
else {
$uitzicht_dorp = "";
}
if(isset($_POST['uitzicht_anders'])) {
$uitzicht_anders = $_POST['uitzicht_anders'];
}
else {
$uitzicht_anders = "";
}
if(isset($_POST['uitzicht_anders2'])) {
$uitzicht_anders2 = $_POST['uitzicht_anders2'];
}
else {
$uitzicht_anders2 = "";
}
$query = mysql_query("UPDATE accommodaties SET waardering_accommodatie = '$waardering_accommodatie', waardering_situering = '$waardering_situering', 'kamer = '$kamer', kamer2 = '$kamer2', kamer_pension = '$kamer_pension', kamer_pension_2 = '$kamer_pension_2', kamer_in_bb = '$kamer_in_bb', kamer_in_bb2 = '$kamer_in_bb2', kamer_in_particulier = '$kamer_in_particulier', kamer_in_particulier_2 = '$kamer_in_particulier_2', kamer_in_hotel = '$kamer_in_hotel', kamer_in_hotel2 = '$kamer_in_hotel2', rijtjes_huis = '$rijtjes_huis', hoekwoning = '$hoekwoning', vrijstaand_huis = '$vrijstaand_huis', twee_onder_een_kap = '$twee_onder_een_kap', zomerhuis = '$zomerhuis', studio_in = '$studio_in', studio_in2 = '$studio_in2', studio_in3 = '$studio_in3', appartement_in = '$appartement_in', appartement_in2 = '$appartement_in2', appartement_in3 = '$appartement_in3', anders = '$anders', anders2 = '$anders2', accommodaties_in_pand = '$accommodaties_in_pand', entree = '$entree', aantal_personen = '$aantal_personen', roken = '$roken', honden = '$honden', aantal_woonlagen = '$aantal_woonlagen', aantal_woonlagen2 = '$aantal_woonlagen2', woonoppervlakte = '$woonoppervlakte', woonoppervlakt2 = '$woonoppervlakt2', grondoppervlakte = '$grondoppervlakte', grondoppervlakte2 = '$grondoppervlakte2', balkon_oppervlakte = '$balkon_oppervlakte', balkon_oppervlakte2 = '$balkon_oppervlakte2', aantal_kamers = '$aantal_kamers', aantal_kamer2 = '$aantal_kamer2', aantal_toiletten = '$aantal_toiletten', aantal_toiletten2 = '$aantal_toiletten2', drukte = '$drukte', uitzicht_woningen = '$uitzicht_woningen', uitzicht_duinen = '$uitzicht_duinen', uitzicht_zee = '$uitzicht_zee', uitzicht_plein = '$uitzicht_plein', uitzicht_terras = '$uitzicht_terras', uitzicht_tuin = '$uitzicht_tuin', uitzicht_bomen = '$uitzicht_bomen', uitzicht_straat = '$uitzicht_straat', uitzicht_zwembad = '$uitzicht_zwembad', uitzicht_jachthaven = '$uitzicht_jachthaven', uitzicht_dorp = '$uitzicht_dorp', uitzicht_anders = '$uitzicht_anders', uitzicht_anders2 = '$uitzicht_anders2' WHERE huisnaam = '$huisnaam'")
or die(mysql_error());
echo "ok";
?>
En dit is de fout: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''kamer = '', kamer2 = '', kamer_pension = '', kamer_pension_2 = '', kamer_in_bb' at line 1
Wat gaat er mis?
Kilian
Link gekopieerd
Post alléén relevante code en geen compleet script.
Er staat een quote teveel in de query.
Haal $vars buiten quotes.
Script is lek -> sql-injection.
Link gekopieerd
Ik zou het anders doen. Ik zou van 'huis', 'uitzicht', 'toiletten', e.d. arrays maken, waar de gekozen opties in zitten. Dat gaat denk ik veel makkelijker. Dan denk ik ook dat je datamodel niet meer klopt, je zult alles nog eens over moeten denken, en het beter in moeten delen. Soort bij soort, categorie bij categorie. Ga [google]normaliseren[/google] ; ), zo blijft het enorm veel werk, te veel werk.
In $_POST maak je zo arrays:
<input type="checkbox" name="huis[]" value="Vrijstaand" />
<input type="checkbox" name="huis[]" value="Twee-onder-een-kap" />
<input type="checkbox" name="uitzicht[]" value="Zeezicht" />
<input type="checkbox" name="uitzicht[]" value="Duinzicht" />
enzovoorts...
Link gekopieerd
Waarom heb je zo een super lange code? Je kan dit toch veel makkelijker via een array en for each doen?
edit: van 340 naar 26 regels. Je moet wel zelf de array nog helemaal invullen:
<?php
include("config.php");
include("checksession.php");
$huisnaam = $_SESSION['huisnaam'];
$waardering_accommodatie = $_POST['waardering'];
$waardering_situering = $_POST['waardering_situering'];
$checkbox_namen = array('kamer."','kamer2."','kamer_pensioen');
foreach($checkbox_namen AS $checkbox)
{
if(isset($_POST[$checkbox])) {
${$checkbox} = $_POST[$checkbox];
}
else {
$kamer = "";
}
}
$query = mysql_query("UPDATE accommodaties SET waardering_accommodatie = '".$waardering_accommodatie."', waardering_situering = '".$waardering_situering."', 'kamer = '".$kamer."', kamer2 = '".$kamer2."', kamer_pension = '".$kamer_pension."', kamer_pension_2 = '".$kamer_pension_2."', kamer_in_bb = '".$kamer_in_bb."', kamer_in_bb2 = '".$kamer_in_bb2."', kamer_in_particulier = '".$kamer_in_particulier."', kamer_in_particulier_2 = '".$kamer_in_particulier_2."', kamer_in_hotel = '".$kamer_in_hotel."', kamer_in_hotel2 = '".$kamer_in_hotel2."', rijtjes_huis = '".$rijtjes_huis."', hoekwoning = '".$hoekwoning."', vrijstaand_huis = '".$vrijstaand_huis."', twee_onder_een_kap = '".$twee_onder_een_kap."', zomerhuis = '".$zomerhuis."', studio_in = '".$studio_in."', studio_in2 = '".$studio_in2."', studio_in3 = '".$studio_in3."', appartement_in = '".$appartement_in."', appartement_in2 = '".$appartement_in2."', appartement_in3 = '".$appartement_in3."', anders = '".$anders."', anders2 = '".$anders2."', accommodaties_in_pand = '".$accommodaties_in_pand."', entree = '".$entree."', aantal_personen = '".$aantal_personen."', roken = '".$roken."', honden = '".$honden."', aantal_woonlagen = '".$aantal_woonlagen."', aantal_woonlagen2 = '".$aantal_woonlagen2."', woonoppervlakte = '".$woonoppervlakte."', woonoppervlakt2 = '".$woonoppervlakt2."', grondoppervlakte = '".$grondoppervlakte."', grondoppervlakte2 = '".$grondoppervlakte2."', balkon_oppervlakte = '".$balkon_oppervlakte."', balkon_oppervlakte2 = '".$balkon_oppervlakte2."', aantal_kamers = '".$aantal_kamers."', aantal_kamer2 = '".$aantal_kamer2."', aantal_toiletten = '".$aantal_toiletten."', aantal_toiletten2 = '".$aantal_toiletten2."', drukte = '".$drukte."', uitzicht_woningen = '".$uitzicht_woningen."', uitzicht_duinen = '".$uitzicht_duinen."', uitzicht_zee = '".$uitzicht_zee."', uitzicht_plein = '".$uitzicht_plein."', uitzicht_terras = '".$uitzicht_terras."', uitzicht_tuin = '".$uitzicht_tuin."', uitzicht_bomen = '".$uitzicht_bomen."', uitzicht_straat = '".$uitzicht_straat."', uitzicht_zwembad = '".$uitzicht_zwembad."', uitzicht_jachthaven = '".$uitzicht_jachthaven."', uitzicht_dorp = '".$uitzicht_dorp."', uitzicht_anders = '".$uitzicht_anders."', uitzicht_anders2 = '".$uitzicht_anders2' WHERE huisnaam = '".$huisnaam'")
or die(mysql_error());
echo "ok";
?>
Link gekopieerd
En waar is dit voor:
$waardering_accommodatie = $_POST['waardering'];
$waardering_situering = $_POST['waardering_situering'];
Als $_POST['waardering'] niet geset is, krijg je een notice.
Link gekopieerd
Waarom wordt er niet gewoon een HTML index gecreeerd en die gewoon verwerkt? Naampjes van de index hetzelfde noemen als de velden in de DB.
Komt er dus op neer dat je dan alleen de relevante data verwerkt....
<?php
if (count($_POST) > 0)
{
$updatesql = array();
foreach ($_POST['checkbox'] AS $field => $value) $updatesql[] = "`" . mysql_escape_string($field)."`='" . mysql_escape_string($value) . "'";
$sql = "UPDATE `tablename` SET " . implode(",",$updatesql) . " WHERE `huisnaam`='" . mysql_escape_string($_SESSION['huisnaam']) . "'";
// Verwerk sql
}
?>
<form method="post" action="">
....
<input type="checkbox" name="checkbox[uitzicht_snackbar]" value="1" />
<input type="checkbox" name="checkbox[uitzicht_mcdonalds]" value="1" />
<input type="checkbox" name="checkbox[uitzicht_hoeren]" value="1" />
....
</form>
Iets in deze geest
Nog iets waar ik me mateloos aan irriteer:
EN GEBRUIK ALLEMAAL EENS EEN ESCAPE FUNCTIE Excuses voor de caps, maar de meeste fouten ontstaan hierdoor!!!! Niemand op dit forum gebruikt het!! Leer het jezelf aan ALTIJD een escape functie te gebruiken ookal komt de parameter van jezelf!!!!
Link gekopieerd
Leon schreef op 11.09.2009 16:13
Nog iets waar ik me mateloos aan irriteer:
EN GEBRUIK ALLEMAAL EENS EEN ESCAPE FUNCTIE Excuses voor de caps, maar de meeste fouten ontstaan hierdoor!!!! Niemand op dit forum gebruikt het!! Leer het jezelf aan ALTIJD een escape functie te gebruiken ookal komt de parameter van jezelf!!!!
Iets "irriteert" je, of je "ergert je aan". "Ik irriteer me aan" is fout Nederlands.
Verder zou ik zeggen: geef het goede voorbeeld in je eigen scripts. Je kunt niet na pas dertien posts stellen dat "niemand" op dit forum het gebruikt. En al die uitroeptekens staan bijzonder schreeuwerig.
Link gekopieerd