Ga naar inhoud

Checkbox in form geeft geen data door naar php script dus komt niet in database.


kunoke
 Delen

Aanbevolen berichten

Beste, Al een tijd ben ik bezig met het maken van een reisbenodigdheden systeem,

Ik heb: Een database waarin alles wat ik moet meenemen wordt bijgehouden en of ik het wel heb, Een tabel waarin alle items worden verschenen, Een tabel waarin alle items die bij oke een 0 of iets zouden verschijnen en een systeem waarin ik items kan toevoegen, Het aanvinken van een item komt later!

Een voorbeeld van die database,

Tabel: Krokus

Item (Hier komt de itemnaam) Oke(Hier komt een 0 of niets als het niet op voorraad is en een 1 als het er wel is)

 

Het gene waar ik al een tijdje mee vast loop is die form waarin ik items kan toevoegen.

Daarin heb ik een textbox waarin ik een Item kan in typen en een checkbox waarin ik kan aanvinken of ik het al heb en de submit button.

Het werkt half!

De het itemnaam wat ik in heb getypt komt in de database en dus verschijnt in te tabbellen

Maar of ik nu de checkbox aanvink of niet die stuurt geen data door naar het script.

Wat die zou moeten doen is: als die uitgevinkt is en de form wordt verzonden: een 0 verzenden en als die aangevinkt is een 1 verzenden

En omdat het script die nul of die een niet krijgt verschijnt er dus bij de database enkel de itemnaam en bij oke geen 0 of 1 wat dus wel moet gebeuren.

 

Ik heb alles al geprobeerd: De value bij die input aanpassen, een isset te maken,... maar niets helpt

Er blijft in de database bij oké niets verschijnen.

Zou iemand misschien de oplossing weten?

Hieronder vind je de code:

Uit veligheid heb ik even mijn database gegevens weggehaald

En het design is op dit moment raar maar dat wil ik pas na al die scripts doen!

Dit is de index, Die checkbox vind je waar <!Hier is de checkbox staat>

Onder de code heb je het script

Quote

<!DOCTYPE html>
<HTML>
    <!Titel>
    <title>Reisbenodigdheden</title>
    
    
<!Alle scripts ophalen>
<?php
require_once "scripts/script_all.php"
?>

<h2 style="text-align:center">Lightbox</h2>

<div class="row">
  <div class="column">
    <img src="img_nature.jpg" style="width:100%" onclick="openModal();currentSlide(1)" class="hover-shadow cursor">
  </div>
</div>
<div id="myModal" class="modal">
  <span class="close cursor" onclick="closeModal()">&times;</span>
  <div class="modal-content">

    <div class="mySlides">
      <div class="numbertext">1 / 4</div>
      <form action="insert.php" method="post">

    <p>

        <label for="Item">Item:</label>

        <input type="text" name="Item" id="Item">

    </p>

    <p>

        <label for="Oke">Toegevoegt?</label>

        <input type="checkbox" name="Oke" id="Oke" value="Yes" />

    </p>


    <input type="submit" value="Submit">

</form>
    </div>

    
    <a class="prev" onclick="plusSlides(-1)">&#10094;</a>
    <a class="next" onclick="plusSlides(1)">&#10095;</a>

    <div class="caption-container">
      <p id="caption"></p>
    </div>


    <div class="column">
      <img class="demo cursor" src="img_nature_wide.jpg" style="width:100%" onclick="currentSlide(1)" alt="">
    </div>
    <div class="column">
      <img class="demo cursor" src="img_fjords_wide.jpg" style="width:100%" onclick="currentSlide(2)" alt="Trolltunga, Norway">
    </div>
    <div class="column">
      <img class="demo cursor" src="img_mountains_wide.jpg" style="width:100%" onclick="currentSlide(3)" alt="Mountains and fjords">
    </div>
    <div class="column">
      <img class="demo cursor" src="img_lights_wide.jpg" style="width:100%" onclick="currentSlide(4)" alt="Northern Lights">
    </div>
  </div>
 
</div>
<!Responsive onderdeel
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">


<!Begin Elementen>
<body>


<!Design hele pagina>
    <div class="container flex-direction">
        
<!Alle Benodigdheden groep>
<div class="one">
<!Titel alle benodigdheden>
<h2 style="color: blue">Alle benodigdheden!</h2>


<!Script alle benodigdheden (Gaat verder zie lijn 7-10)>

<?php
echo new TableRows(new RecursiveArrayIterator($orm->get('SELECT item FROM Krokus')));
?>

</div>
<!Einde groep Vergeten benodigdheden>

<!Vergeten Items Groep>
<div class="two">
<!Titel vergeten items>
<h2 style="color: red">Vergeet deze items niet!</h2>

<!Begin script vergeten items zie lijn 7-10>
<?php
echo new TableRows(new RecursiveArrayIterator($orm->get("SELECT item FROM Krokus WHERE Oke = 0")));
?>

</div>
<!Einde groep Vergeten benodigdheden>
</div>
<!Einde design hele pagina>
</body>
<!Einde Lichaamselementen>

<!Ophalen van de opmaak bestanden (css)>
<STYLE>
//Begin lightbox css
body {
  font-family: Verdana, sans-serif;
  margin: 0;
}

* {
  box-sizing: border-box;
}

.row > .column {
  padding: 0 8px;
}

.row:after {
  content: "";
  display: table;
  clear: both;
}

.column {
  float: left;
  width: 25%;
}

/* The Modal (background) */
.modal {
  display: none;
  position: fixed;
  z-index: 1;
  padding-top: 100px;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: black;
}

/* Modal Content */
.modal-content {
  position: relative;
  background-color: #fefefe;
  margin: auto;
  padding: 0;
  width: 90%;
  max-width: 1200px;
}

/* The Close Button */
.close {
  color: white;
  position: absolute;
  top: 10px;
  right: 25px;
  font-size: 35px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #999;
  text-decoration: none;
  cursor: pointer;
}

.mySlides {
  display: none;
}

.cursor {
  cursor: pointer
}

/* Next & previous buttons */
.prev,
.next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  padding: 16px;
  margin-top: -50px;
  color: white;
  font-weight: bold;
  font-size: 20px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
  user-select: none;
  -webkit-user-select: none;
}

/* Position the "next button" to the right */
.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover,
.next:hover {
  background-color: rgba(0, 0, 0, 0.8);
}

/* Number text (1/3 etc) */
.numbertext {
  color: #f2f2f2;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

img {
  margin-bottom: -4px;
}

.caption-container {
  text-align: center;
  background-color: black;
  padding: 2px 16px;
  color: white;
}

.demo {
  opacity: 0.6;
}

.active,
.demo:hover {
  opacity: 1;
}

img.hover-shadow {
  transition: 0.3s
}

.hover-shadow:hover {
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
}
//einde lightbox css
.container{
  display:inline-flex;
  flex-wrap:wrap;
  border:0px solid ;
}
.flex-direction{
  flex-direction:row;
}
.one{
  border-right:0px solid;
  width:200px;
  height:1200px;
}

.two{
  right: 200px;
  width:200px;
  height:1200px;
}

span{
  font-size:16px;
    font-weight:bold;
    display: block;
    line-height: 132px;
    text-align: center;
}

@media screen and (max-width: 150px) {
  .flex-direction{
  flex-direction:column;
  }
.one{
  width:202px;
  height:1200px;
  border-right:none;
  border-bottom:1px solid ;
  }
  .two{
    width:202px;
    height:1200px;
  }
  .two span{
    line-height:107px;
  }

}
</STYLE>
  <script>
function openModal() {
  document.getElementById('myModal').style.display = "block";
}

function closeModal() {
  document.getElementById('myModal').style.display = "none";
}

var slideIndex = 1;
showSlides(slideIndex);

function plusSlides(n) {
  showSlides(slideIndex += n);
}

function currentSlide(n) {
  showSlides(slideIndex = n);
}

function showSlides(n) {
  var i;
  var slides = document.getElementsByClassName("mySlides");
  var dots = document.getElementsByClassName("demo");
  var captionText = document.getElementById("caption");
  if (n > slides.length) {slideIndex = 1}
  if (n < 1) {slideIndex = slides.length}
  for (i = 0; i < slides.length; i++) {
      slides.style.display = "none";
  }
  for (i = 0; i < dots.length; i++) {
      dots.className = dots.className.replace(" active", "");
  }
  slides[slideIndex-1].style.display = "block";
  dots[slideIndex-1].className += " active";
  captionText.innerHTML = dots[slideIndex-1].alt;
}
</script>

</HTML>

Hier vind je nog het script dat bij de form hoort

Quote

<?php

    /* Attempt MySQL server connection. Assuming you are running MySQL

    server with default setting (user 'root' with no password) */

    $link = mysqli_connect("localhost", "Weg", "Weg", "Weg");
 

// Check connection

if($link === false){

    die("ERROR: Could not connect. " . mysqli_connect_error());

}

 

// Escape user inputs for security

$Item = mysqli_real_escape_string($link, $_REQUEST['Item']);
$oke = mysqli_real_escape_string($link, $_REQUEST['oke']);


 

// attempt insert query execution

$sql = "INSERT INTO Krokus (Item, Oke) VALUES ('$Item', '$oke')";

if(mysqli_query($link, $sql)){

    echo "De items zijn successvol toegevoegd";
    print_r($_POST["oke"]);

} else{

    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);

}

 

// close connection

mysqli_close($link);

?>

Zou iemand misschien weten waarom die checkbox niet werkt?

En er mee kunnen helpen

Alvast bedankt,

Met vriendelijke groet,

Kuno Claes

P.S: Ik wil niet moeilijk doen maar ik ben 13 jaar en doe dit vooral als hobby dus probeer alstublieft te zeggen waar ik precies iets moet aanpassen of de juiste code geven.

Link naar reactie
Delen op andere sites

Hier is in principe niets mis mee, alleen de werking van een checkbox is anders dan alle andere elementen.

Wanneer een checkbox NIET is aangevinkt, zal deze niet in de $_POST of $_REQUEST data zitten. Is deze WEL aangevinkt, zal deze de waarde krijgen die je bij 'value' hebt aangegeven, of als je geen 'value' bij de checkbox hebt opgegeven zal hij de waarde 'on'  krijgen. 

 

Bovendien moet je ook kijken wat voor database veld-type je hebt gebruikt voor de betreffende kolom. Is dat een varchar, boolean of tinyint, dan is de waarde die je moet opgeven erg anders.

 

De onderstaande regel is dus eigenlijk niet compleet.

$oke = mysqli_real_escape_string($link, $_REQUEST['oke']);

 

Als je een varchar of tinyint hebt gebruikt (tinyint voor aan/uit is beter!), dan moet die regel zoiets worden: 

 

$oke = isset($_REQUEST['oke']) ? 1 : 0;
$oke = mysqli_real_escape_string($link, $oke);

De eerste regel is een one-liner voor een if-statement.  In dit geval zal de waarde 1 zijn in de database als je de checkbox aanvinkt, en 0 als je hem uitgevinkt laat.

Wil je daar wat anders, bijv: "YES" voor aangevinkt en "NO" voor uitgevinkt, dan moet het zoiets zijn: 

 

$oke = isset($_REQUEST['oke']) ? "YES" : "NO";
$oke = mysqli_real_escape_string($link, $oke);

 

Wil je de value van de checkbox overnemen als deze is aangevinkt dan wordt het zoiets:

 

$oke = isset($_REQUEST['oke']) ? $_REQUEST['oke'] : 0;
$oke = mysqli_real_escape_string($link, $oke);

 

 

PS: een one-liner if statement volgt deze structuur:

 

$result = [statement] ? [result when statement = true] : [result when statement = false];

Je ziet ook dat je dan ook geen if() meer typt. Maar alleen wat er tussen de haakjes staat. Staan er 2 if-statements, dan zet je die nog wel rond haakjes zoals dit: 

$result = (isset($_REQUEST['oke']) && isset($_REQUEST['fale']) ? "yes" : "no";

 

Link naar reactie
Delen op andere sites

 Delen

×
×
  • Nieuwe aanmaken...