Beste mensen,

Ik probeer nu het volgende te doen. Ik heb een DB met een webinterface waar ik gegevens van producten kan invoeren. Nu loop ik tegen het volgende aan:

Wat is de juiste manier om waardes uit een invoerveld op te tellen of af te trekken van de waardes in de DB

BV.

Heb in databse 10 appels. ik wil er 2 appels bij toevoegen via een HTMLform. Hoe kan ik deze rekensom(?)maken met waardes die ik uit een HTML form haal en de waardes die ik uit me Database haal?

Ik heb zelf geen flauw idee. Kan iemand me misschien een beetje op weg helpen?
B van der Leeden op 18/07/2014 12:35:33

Mijn part kolom heeft als eigenschap unique. Kan het dan ok met de part of moet het ID zijn?
en kan ik het ID juiste record selecteren op basis van de part?

(SELECT id FROM onderdelen WHERE part =?");


Ja dat kan zolang part uniek is. Wel zal het wat langzamer zijn. wellicht kun je part laten indexeren door de database.
Perfect. Okey ik heb nu de volgende php code

Maar er verandert nog niks in de DB



<?php

// het valideren doen we in een aparte functie om onze code overzichtelijk te houden.
function validate()
{
    $errors = array();
		
	if(strlen($_POST['aantal']) == 0)
        $errors[] = 'U moet de aantal opgeven.';

    return $errors;
}

// lege array voor de errors
$errors = array();

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $errors = validate(); // roep de functie validate() aan en zet de foutmeldigen in $errors.

    if(!count($errors)) // als er geen foutmeldingen zijn
    {
        // include connection file
		include("config.php");
		
		
		//Variables
		$part = $_POST[ 'part' ];
		$aantal = $_POST['aantal'];


		$sql = ("UPDATE onderdelen SET aantal=aantal+" . $aantal . " WHERE part=" . $part);
		
		
 { header( "location:admin.php");  }
}

// laat de foutmeldingen zien als ze er zijn
foreach($errors as $error)
{
    echo $error.'<br>';
}
}
?>


Tabelnaam = Onderdelen
Rows = id, part, locatie, aantal



Heb heel veel geprobeerd aan te passen maar niks werk nog.
>> Ja dat kan zolang part uniek is. Wel zal het wat langzamer zijn. wellicht kun je part laten indexeren door de database.

Is niet nodig, staat al een UNIQUE index op.

@ B
Je query klopt niet, part is datatype varchar, dus moet de waarde daarvan tussen enkele aanhalingtekens.
Daarnaast voer je de query nergens uit.
Yeah baby yeah!! :P ff een opluchtingskreet

Het is gelukt dankzij jullie support.
Zal de HTML en PHP plaatsen voor andere mensen. Voor mij werkt deze.

HTML addpart.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>DemoPool</title> 
</head> 

<body background="Plaatje.png">
<div style="width:100%" align="center" >
<div style="color: white">
<h1>Welkom</h1>
<h2>Vul hier de gegevens in</h2>
</div>
<div style="color: white">
<form name="form1" method="POST" action="addpart_check.php">
   <table width="500" border="15" align="center" cellpadding="3" cellspacing="6" bgcolor="BLACK">
    <tr>
     <td>
      <table width="100%" border="0" cellpadding="10" cellspacing="5" bgcolor="#FFFFFF">
       <tr>
	    <td style="color: Black">
		 Partnummer:<br />
		 <?php 
		// include connection file
		include("config.php");

		// Gegevens opvragen uit DB
		$sth = $dbh->prepare("SELECT part FROM onderdelen");
		$sth->execute();
		$data = $sth->fetchAll();
?>
		<select name="part" id="part">
		<?php foreach ($data as $row): ?>
		<option><?=$row["part"]?></option>
		<?php endforeach ?>
		</select>
		<br />
		Aantal:
		<br />
		<input type="text" name="aantal" id="aantal">
		<br />
		<input type="submit" name="toevoegen" value="Toevoegen">
		</td>
		</tr>
		<tr>
		<td style="color: Black">
		<input type="button" value="Nieuw Onderdeel" onclick="location.href = '../DemoPool/addpart_new.php'">
		</td>
		</tr>
		<tr>
		<td style="color: Black">
        <input type="button" value="Vorige pagina" onclick="location.href = '../DemoPool/voorraadbeheer.php'">
		<input type="button" value="Logout" onclick="location.href = '../DemoPool/login.php'">
        </td>
       </tr>
      </table>
     </td>
    </tr>
   </table>     
  </form>
 </body>  
</html>


PHPcode - addpart_check.php

<?php

// het valideren doen we in een aparte functie om onze code overzichtelijk te houden.
function validate()
{
    $errors = array();
		
	if(strlen($_POST['aantal']) == 0)
        $errors[] = 'U moet de aantal opgeven.';

    return $errors;
}

// lege array voor de errors
$errors = array();

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $errors = validate(); // roep de functie validate() aan en zet de foutmeldigen in $errors.

    if(!count($errors)) // als er geen foutmeldingen zijn
    {
        // include connection file
		include("config.php");
		
		
		//Variables
		$part = $_POST['part'];
		$aantal = $_POST['aantal'];


		$sql = ("UPDATE onderdelen SET aantal=aantal+" . $aantal . " WHERE part='$part'");
		$query = $dbh->prepare( $sql );
		$query->execute();	
		
		{ header( "location:admin.php");  }

		// laat de foutmeldingen zien als ze er zijn
		foreach($errors as $error)
		{
		echo $error.'<br>';
		}
	}
}
?>


Nogmaals heel erg bedankt voor jullie tijd en support op z'n warme dag als deze :)
De haakjes om de query hier dienen geen enkel doel.
B van der Leeden op 18/07/2014 14:18:08

$sql = ("UPDATE onderdelen SET aantal=aantal+" . $aantal . " WHERE part='$part'");

Net zoals de accolades hier.
B van der Leeden op 18/07/2014 14:18:08

{ header( "location:admin.php"); }

En dit wordt niet meer uitgevoerd omdat je er direct boven de redirect uitvoert. De foutmeldingen krijg je dus niet te zien.
B van der Leeden op 18/07/2014 14:18:08

// laat de foutmeldingen zien als ze er zijn
foreach($errors as $error)
{
echo $error.'<br>';
}


Reageren