Toon posts:

[PHP] checkbox value aan database toevoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 09:31
Goedenavond,

Ik ben bezig om voor iemand een petitiescript te maken en daarbij zit ook een checkboxje. Nu lukt het me om alle info uit de form naar de database te schrijven maar die van dat ene checkboxje niet.

Het php script:
PHP:
1
2
3
4
5
6
7
8
$showhide = (isset($_POST['check']) && $_POST['check'] == '1')? 1 : 0;

if($_SERVER["REQUEST_METHOD"]=="POST")
{

//Insert het email,naam van de persoon in database
        mysql_query("INSERT INTO `petitie` ( name, woonplaats, wijk, check ) 
                                    VALUES ('".$_POST["name"]."', '".$_POST["woonplaats"]."', '".$_POST["wijk"]."', '".$showhide."'") or die (mysql_error());


En het Html script:
code:
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
    <form name="form1" method="post" action="conect.php">
    <table width="80%" border="0px" cellpadding="0" cellspacing="0">
      <tr> 
        <td><h2 style="color:#0059a3;">Ik, </h2></br></br></td>
        <td><strong> 
          <input type="text" name="name" value="naam en achternaam">
          </strong></td>
      </tr>
      <tr> 
        <td><h2 style="color:#0059a3;">wonende te </h2></br></td>
        <td><input type="text" name="woonplaats" value="woonplaaats" ></td>
      </tr>
      <tr> 
        <td></br></br></br></td>
        <td><input type="text" name="wijk" value="wijk"></td>
      </tr>
      <tr> 
        <td><h2>zegt <font color="#E4062D">NEE</font></h2></td>
        <td><input class="check" type="checkbox" name="check" value="1">naam en woonplaats mogen zichtbaar zijn
        </td>
      </tr>
      <tr> 
        <td></br></br><button class="submit" type="submit" name="Submit">ONDERTEKENEN</button></td>
      </tr>
    </table>
  </form>


Kunnen jullie zien waarom de checkbox value niet naar de database word geschreven?

bij voorbaat dank,
Xander

Acties:
  • 0Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 03-06 20:45

Saven

Administrator

$_POST['check'] == 1 of == true, zonde r quotes als ik me niet vergis, al een tijd niet meer gephp'd

Acties:
  • 0Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
ik gebruik normaliter geen value, en check op $_POST['check'] =='on'. Heb je wel eens gecheckt wat de waarde is van $_POST['check'] ?

Acties:
  • 0Henk 'm!

  • RMX
  • Registratie: Augustus 2000
  • Laatst online: 11:03
PHP:
1
$showhide = (isset($_POST['check']) && $_POST['check'] == '1')? '1' : '0';

Acties:
  • 0Henk 'm!

  • zwittrooper
  • Registratie: April 2009
  • Laatst online: 09:42
Saven schreef op dinsdag 10 mei 2011 @ 20:14:
$_POST['check'] == 1 of == true, zonde r quotes als ik me niet vergis, al een tijd niet meer gephp'd
Klopt helemaal wat je zegt.
jij geeft een integer ( 1 ) door maar je kijkt of er een string is met als waarde ( '1' ).

PS: denk ook aan het escapen van je data! ;)

Acties:
  • 0Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 09:31
Met of zonder quotes geeft geen verschil.

de foutmelding die ik krijg
code:
1
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 '' at line 2


ik heb btw niks op line 2 staan...

[Voor 7% gewijzigd door xarow op 10-05-2011 20:24]


Acties:
  • 0Henk 'm!

  • zwittrooper
  • Registratie: April 2009
  • Laatst online: 09:42
wat staat er in de variabele $showhide?
en wat is het veld type van check (in je database)?
is het een int of varchar etc?

Edit: zie al wat er fout is, je moet even goed de quotes langs lopen van je query.
mysql_query("INSERT into (naam) VALUES (waardes)")

Edit2: Je moet dan geen enkele quotes om $showhide zetten in je query. Haal de 2 enkele quotes om de variabele dus weg.

[Voor 51% gewijzigd door zwittrooper op 10-05-2011 20:30]


Acties:
  • 0Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 09:31
showhide geeft 1 als checkbox is gecheckt en 0 unchecked.
het veldtype is tinyint

Acties:
  • 0Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 09:31
zo dus?

mysql_query("INSERT INTO `petitie` ( name, woonplaats, wijk, showname )
VALUES ('".$_POST["name"]."', '".$_POST["woonplaats"]."', '".$_POST["wijk"]."', $showhide")

Acties:
  • 0Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
xarow schreef op dinsdag 10 mei 2011 @ 20:23:
Met of zonder quotes geeft geen verschil.

de foutmelding die ik krijg
code:
1
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 '' at line 2


ik heb btw niks op line 2 staan...
Even iets beter nadenken/debuggen hier... Die fout komt bij mysql vandaan en slaat enkel op de query, en die query heeft duidelijk een 2e regel. Als je de letterlijke query bekijkt (zet var_dump neer ipv mysql_query) zal je de fout moeten kunnen spotten. Sterker nog, met de code highlighting van tweakers is het al appeltje eitje: tel het aantal roodgekeurde haakjes.

[Voor 9% gewijzigd door Voutloos op 10-05-2011 20:46]

{signature}


Acties:
  • 0Henk 'm!

  • Cobalt
  • Registratie: Januari 2004
  • Laatst online: 05-06 13:58
Gebruik prepared statements, die zijn iets minder gevoelig voor bepaalde chars en check de input voordat je het in de databases knalt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$name =...
$city= ...
$district=...
$check= ...

$link = mysqli_connect(...);

$stmt = mysqli_prepare($link,"INSERT INTO `petitie`(`name`, `woonplaats`, `wijk`, `check`) VALUES ('?', '?', '?', ?)");

mysqli_stmt_bind_param ($stmt, "s", $name);
mysqli_stmt_bind_param ($stmt, "s", $city);
mysqli_stmt_bind_param ($stmt, "s", $district);
mysqli_stmt_bind_param ($stmt, "i", $check);

[Voor 77% gewijzigd door Cobalt op 10-05-2011 20:54]


Acties:
  • 0Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 09:31
Heel erg bedankt voor julie hulp..

Ben bijna 3/4 uur bezig geweest hiermee zonder iets te vinden en nu kom ik erachter dat ik een ) was vergeten...

Nogmaals bedankt :)

Acties:
  • 0Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Gewoon leren debuggen dus, dan hoef je ook geen simpele topics op GoT te openen. Tip: lees, begrijp en voer Cobalt z'n reactie door, doe dit niet en je bent een keer je gegevens kwijt vanwege SQL-injection.

Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

offtopic:
$showhide is natuurlijk een variabelenaam van niks. Wat als showhide true is? Is het dan show? Of juist hide? Kies liever voor iets als $ispublicprofile, $ispublicpetition, $ispublic of weet ik het; dat beschrijft wat de waarde van de boolean betekent

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee