[PHP] checkbox value aan database toevoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 17:08
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:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-09 18:37

Saven

Administrator

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

Acties:
  • 0 Henk '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'] ?

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • RMX
  • Registratie: Augustus 2000
  • Laatst online: 18-09 21:56

RMX

PHP:
1
$showhide = (isset($_POST['check']) && $_POST['check'] == '1')? '1' : '0';

Acties:
  • 0 Henk 'm!

  • zwittrooper
  • Registratie: April 2009
  • Laatst online: 19:29
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:
  • 0 Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 17:08
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:
  • 0 Henk 'm!

  • zwittrooper
  • Registratie: April 2009
  • Laatst online: 19:29
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:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 17:08
zo dus?

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

Acties:
  • 0 Henk '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:
  • 0 Henk 'm!

  • Cobalt
  • Registratie: Januari 2004
  • Laatst online: 08:29
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:
  • 0 Henk 'm!

  • xarow
  • Registratie: Februari 2011
  • Laatst online: 17:08
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:
  • 0 Henk '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:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
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.

Je eigen tweaker.me redirect

Over mij

Pagina: 1