Goedenavond,

Ik heb een probleem en ik zie momenteel even de bomen door het bos niet meer.
Voor het vak informatica moeten we een praktische opdracht doen met een zelf gekozen onderwerp.
Nu maken wij een werknemers website voor een zeker bedrijf.
De inlog/registratie/uitlog en index pagina staan.
Ook heb ik hierbij een extra pagina gemaakt om het rooster te kunnen maken, als je niet de functie filiaalmanager hebt dan kom je er niet op. Als default staat er dat je hulpkracht bent.

Echter nu komt het probleem,
Ik heb een tabel gemaakt met de data's en uiteraard de gebruikers (verkregen uit de database door middel van een query en een while-loop). In de cellen staan text fielden waar je de werktijden in kunt vullen, welke daarna in de database komen te staan. De andere werknemers kunnen dan op hun beurt de gegevens uitlezen en hun eigen rooster zien. Dat is het idee.

Maar wanneer ik op de submit knop druk, voert hij alle waarden in behalve de username. Daar stoort het 'm. Want eerst had ik de username die op dat moment ingelogd was, ik (Sander) dus. Dus wanneer ik dan een tijd voor een andere werknemer invul, pakt het systeem hem niet.

Dit kan ik het beste aan de hand van het voorbeeld hanteren.
Er werken twee werknemers, Sander en Victor. Sander is de filiaalmanager en Victor de hulpkracht.
Sander maakt dus het rooster voor hemzelf en Victor. Wanneer Sander het rooster voor Sander invult, pakt het systeem hem en komt er ook in de tabel te staan: Username; Sander, WerkTijd1: ... etc. Voor Victor pakt hij hem niet en vult hij in het veld niet de username Victor in.

De vraag is nu: Hoe pak ik een specifieke variable uit de while loop en vul de username daarbij in?

Help help help.

De broncode volgt hieronder.
<?php
include_once "includes/config.php";
?>
<html>
<head>
</head>
<body>
<?php
if(empty($_SESSION['LoggedIn']) && empty($_SESSION['Username']))
{
    header("Location: login.php");
}
else
{
	if($_SESSION['Function'] != "Filiaalmanager")
	{	
	echo "Je bent niet bevoegd om deze pagina te bekijken. Je wordt terug gestuurd.";
	echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php\">";
	}
	else
	{
	$maandag = date("d/m/Y");
	$dinsdag = date("d/m/Y", time()+86400);
	$woensdag = date("d/m/Y", time()+172800);
	$donderdag = date("d/m/Y",  time()+259200);
	$vrijdag = date("d/m/Y", time()+432000);
	$zaterdag = date("d/m/Y", time()+518400);
	$zondag = date("d/m/Y", time()+604800);
	
	$resultaat = mysql_query("SELECT Username FROM users");
	
     ?>
 
     <h1>Filiaalmanagers pagina</h1>
     <p>Welkom <b><?php echo $_SESSION['Username'];?></b>.</p>
	 
	 <form name = "rooster" method = "post" action = "<?php echo $_SERVER['PHP_SELF'];?>">
	 <table border = "1">
	 <tr>
		<th>Naam</th>
		<th><?php echo $maandag;?></th>
		<th><?php echo $dinsdag;?></th>
		<th><?php echo $woensdag;?></th>
		<th><?php echo $donderdag;?></th>
		<th><?php echo $vrijdag;?></th>
		<th><?php echo $zaterdag;?></th>
		<th><?php echo $zondag;?></th>
	 </tr>
	 <?php
	 while ($row = mysql_fetch_assoc($resultaat))
	 {
	 ?>
	 
	 <tr>
	 <?php
	 echo "<td>" . $row['Username'] . "</td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd1'></td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd2'></td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd3'></td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd4'></td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd5'></td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd6'></td>";
	 echo "<td><input type = 'text' size = '10' name = 'werktijd7'></td>";
	 ?>
	 </tr>
	 <?php
	 }
	 ?>
	 </table>
	 
	 <input type = "submit" name = "submit" value = "Verstuur naar database">
	 
	 </form>
	 
	 <li><a href = "index.php">Index</a></li> 
	 <li><a href = "logout.php">Log uit</a></li> 
     <?php
	 if($_POST['submit']){
		$gebruiker = mysql_fetch_assoc($resultaat);
		$werktijd1 = $_POST['werktijd1'];
		$werktijd2 = $_POST['werktijd2'];
		$werktijd3 = $_POST['werktijd3'];
		$werktijd4 = $_POST['werktijd4'];
		$werktijd5 = $_POST['werktijd5'];
		$werktijd6 = $_POST['werktijd6'];
		$werktijd7 = $_POST['werktijd7'];	

		$sql = mysql_query("INSERT INTO `roster`(`Username`, `WorkDate1`, `WorkDate2`, `WorkDate3`, `WorkDate4`, `WorkDate5`, `WorkDate6`, `WorkDate7`, `WorkTime1`, `WorkTime2`, `WorkTime3`, `WorkTime4`, `WorkTime5`, `WorkTime6`, `WorkTime7`) 
		VALUES ('".$gebruiker."','".$maandag."','".$dinsdag."','".$woensdag."','".$donderdag."','".$vrijdag."','".$zaterdag."','".$zondag."','".$werktijd1."','".$werktijd2."','".$werktijd3."','".$werktijd4."','".$werktijd5."','".$werktijd6."','".$werktijd7."')");
		
		
		if($sql){
			echo "Succes";
		}
		else{
			echo "Error";
		}
	 }
	 
}
}
?>
</body>
</html>


[size=xsmall]Toevoeging op 25/11/2014 20:56:15:[/size]

PS. Ik gebruik nog mysql_ . Het is puur voor een opdracht. Als ik MySqli gebruik snapt mn docent het niet meer. Hij snapt het nu al niet meer want hij kan me al niet meer helpen. -_-
Frank Nietbelangrijk op 26/11/2014 20:06:09

Let even op regel 31 en regel 49. Hier kom je 'id' tegen. dit is het user id uit de tabel users. Kan zijn dat jij user_id hebt in je database of iets dergelijks.



Heb ik herschreven. Het was UserID en dat heb ik veranderd..
Je probleem is dus opgelost, neem ik aan?
Om de code te begrijpen moet je echt eens met array's bezig zijn geweest. http://www.phptuts.nl/view/39/6/

Daarnaast zie je in mijn code hoe ik de volledige $_POST op het scherm dump. Doe dat ook eens met je oude code en zie het verschil.
Dat probleem wel. Nu doet zich een nieuw probleem op.

Ik heb mijn database tabel: roster, aangepast naar de tabellen: Username, WorkTime1 .. t/m 7.
In de PHP output komt er het volgende te staan:

INSERT INTO roster(Username, WorkTime1, WorkTime2, WorkTime3, WorkTime4, WorkTime5, WorkTime6, WorkTime7) VALUES ('1','06:00','','','','','','')


Ik heb idd één waarde ingevoerd, puur als test. Alleen in mijn database verschijnt die 0600 niet. Want daar komt te staan:



Dus hier gaat ook iets mis. :S
Bovendien bestudeer tevens de bron van je pagina in je webbrowser. Bekijk dus de HTML want dat is wat je met PHP maakt.

[size=xsmall]Toevoeging op 26/11/2014 20:16:43:[/size]

Ja. wat is het type van die WorkTime? kolommen? DATE of DATETIME?

Je moet er voor gaan zorgen dat er dit komt te staan:


VALUES ('1','2014-11-28 06:00:00','','','','','','')
Datetime velden zijn het.
Dus ik denk dat ik dan even in de INSERT query moet snuffelen?
Want daar stuur je wel de $tijden mee, maar niet de data?
Daarom moet je dus de juiste datum weten en de tijd naar het formaat hh:mm:ss zetten met tussen de datum en de tijd een spatie
Als ik zulke velden zie: WorkTime1, WorkTime2, WorkTime3, WorkTime4, WorkTime5, WorkTime6, WorkTime7...

dan gaan mijn vingers jeuken. Want wat nu als je straks 20 WorkTimes hebt? Ga je dan steeds de code aanpassen? Ik zou zeker eens kijken naar Normalisatie in SQL, want velden moet je nooit nummeren, dat is vragen om moeilijkheden.
Correct Aar maar van ondergeschikt belang. En er zullen altijd zeven dagen in de week blijven dus zou ik zeggen voor een schoolopdracht: laat maar even.
Klopt, ik heb er nu ook second thoughts over. Maar wat vindt u dan een alternatief? Dat ik wel 7 dagen aan werktijden kwijt kan?

Reageren