Tabel gegevens filteren

Status
Niet open voor verdere reacties.

Junior1986

Gebruiker
Lid geworden
16 mrt 2009
Berichten
10
Hallo mensen,

Ik ben momenteel bezig een website te bouwen.
De bedoeling is dat ik op een pagina alle projecten kan zien die in de database (sql) zijn toegevoegd.

Als ik op een knop druk ($taken) dan wil ik dat ik de taken van dat ene specifieke project kan zien.
Huidige situatie is dat als ik op de knop ($taken) druk dan krijg ik alle taken van alle projecten te zien.

De code die ik hiervoor gebruik is het volgende:
PHP:
<a href="hoofdpagina.php">Hoofdpagina</a>
<h1>
Projecten overzicht
</h1>

<?php
session_start();
//variables
$project_toevoegen = '<input type = "submit" name="Toevoegen" value="Project Toevoegen"/>';
$taken =
' <form method = "post" action = "taken_overzicht.php" name ="taken_bekijken">
	<table>
	
		
		<input type="submit" name="taak_overzicht" value="taken"/>
		

	</table>		
</form>';

require_once 'database_inc.php';
$db = mysqli_connect($server,$gebruikersnaam,$password);
mysqli_select_db($db, $database);

$projectnaam = $_POST['Projectnaam'];
$projectomschrijving = $_POST['Projectomschrijving'];

if (isset($projectnaam, $projectomschrijving) && !empty($emailadres))
{
	$query = mysql_query("INSERT INTO projecten(projectnaam, projectomschrijving,gebruiker)VALUES('$projectnaam', '$projectomschrijving','$emailadres')") or die (mysql_error());
}

$sql = "SELECT * FROM  projecten WHERE projectID ORDER BY projectnaam";

$Gebruiker = "SELECT projecten.projectnaam,projecten.projectomschrijving,taken.taak_naam,taken.taak_omschrijving,taken.taak_gebruiker,taken.taak_aanmaakdatum,taken.taak_deadline,taken.taak_status
FROM projecten INNER JOIN taken ON projecten.gebruiker=taken.gebruiker ORDER BY projectnaam";
				
$result = mysqli_query($db, $sql);


//$resultaat = "";

//array voor de projecten
while($regel = mysqli_fetch_array($result))
{	
	$resultaat .= $taken;
	$resultaat .= "<strong> Projectnaam: </strong> ".$regel['projectnaam']."</strong> <br>";
	$resultaat .= "<strong> Omschrijving: </strong>".$regel['projectomschrijving']." <br />";	
	$resultaat .= "<strong> Gebruiker: </strong>".$regel['gebruiker']." <br /> <br />";	
}
echo $resultaat;

mysqli_close($db);
?>

<!-- project toevoegen knop -->
<form method= "POST" action = "projecttoevoegen.php" name= "toevoegen">
	<table cellspacing= "0" cellpadding="0" border="0">
	<tr>
	<?php 
		if (!empty($emailadres))
	{
		echo $project_toevoegen;
	}
		else
	{
		echo 'U bent niet bevoegd om projecten te wijzigen/toevoegen!';
	}
	?>
	</tr>
	</table>		
</form>


Bij het clicken op de knop ($taken) wordt de volgende pagina geopend.
Hierin moeten de taken van het project weergegeven worden.

Hopelijk kan iemand mij hiermee helpen.
PHP:
<a href="hoofdpagina.php">Hoofdpagina</a></br>
<a href="projecten.php">Projecten</a>
<title>Taken overzicht</title>
<h1>
Taken admin
</h1>

<?php
session_start();
require_once 'database_inc.php';

$db = mysqli_connect($server,$gebruikersnaam,$password);
mysqli_select_db($db, $database);

$sql = "SELECT projecten.projectID, taken.projectID,taken.taak_naam, taken.taak_omschrijving, taken.taak_gebruiker, taken.taak_aanmaakdatum, taken.taak_deadline, taken.taak_status 
FROM  projecten INNER JOIN taken
ON projecten.projectID=taken.projectID";

$taken = mysqli_query($db, $sql);

//array voor de taak/taken
while($taken_overzicht = mysqli_fetch_array($taken))
{	
	$taken_lijst .= "<b> Taaknaam: </b>".$taken_overzicht['taak_naam']."<br>";
	$taken_lijst .= "<b> Omschrijving: </b>".$taken_overzicht['taak_omschrijving']."<br>";
	$taken_lijst .= "<b> Aanmaakdatum: </b>".$taken_overzicht['taak_aanmaakdatum']."<br>";
	$taken_lijst .= "<b> Deadline: </b>".$taken_overzicht['taak_deadline']."<br>";
	$taken_lijst .= "<b> Status: </b>".$taken_overzicht['taak_status']."<br>"."<br>";
}
echo $taken_lijst;
?>
 
Laatst bewerkt:
Je code is enigsinds onduidelijk, dat maakt het lezen wat moeilijk, maar dat hoort bij beginners denk ik ;)

Anyway... als ik het zo zie gebruik je deze query om de taken op te halen:
PHP:
$Gebruiker = "SELECT projecten.projectnaam,projecten.projectomschrijving,taken.taak_naam,taken.taak_omschrijving,taken.taak_gebruiker,taken.taak_aanmaakdatum,taken.taak_deadline,taken.taak_status
FROM projecten INNER JOIN taken ON projecten.gebruiker=taken.gebruiker ORDER BY projectnaam";

Wat je hier moet doen is een WHERE clausule opnemen, waar je alleen de rijen ophaalt die voldoen aan een bepaald ID (namelijk dat van de taak die je wilt hebben)

PHP:
$Gebruiker = 
"SELECT projecten.projectnaam, projecten.projectomschrijving, taken.taak_naam, taken.taak_omschrijving, taken.taak_gebruiker, taken.taak_aanmaakdatum,taken.taak_deadline, taken.taak_status
FROM projecten 
INNER JOIN taken ON projecten.gebruiker=taken.gebruiker 

WHERE taken.id = " . (int) $taak_id . "

ORDER BY projectnaam";

Daarnaast moet je dus de $taak_id die je op wilt halen ergens vandaan halen; bijvoorbeeld door hem als hidden input mee te geven aan je formulier :)

Succes.
 
Hallo Frats,

Het is een foutje van mij de variabel Gebruiker heb ik daar gezet als een test.
Deze is inmiddels uitgehaald uit de script.

De code die ik gebruik om de taken op de halen staat in variabel sql in de tweede php code blok.

Om ervoor te zorgen dat ik alleen de taak te zien krijg van dat specifieke project gebruik ik het volgende:
ON projecten.projectID=taken.projectID"

Maar dan krijg ik nog steeds alle taken van alle projecten te zien..
 
Klopt, wat je daar aangeeft koppelt elk veld uit projecten aan de bijbehorende velde uit taken... maar het geeft niet op welke taken of projecten je precies wilt hebben.

Je moet het aantal resultaten beperken met een WHERE, zoals ik in mijn vorige post ook al aangaf :)
 
Ok

Ik heb een where gezet ziet er als volgt uit:

PHP:
$taak_id = 1;
$sql = "SELECT projecten.projectID, taken.projectID,taken.taak_naam, taken.taak_omschrijving, taken.taak_gebruiker, taken.taak_aanmaakdatum, taken.taak_deadline, taken.taak_status 
FROM projecten 
INNER JOIN taken ON projecten.projectID=taken.projectID
WHERE taken.projectID = " . (int) $taak_id . "";

Ik heb nu dus gewoon handmatig een waarde aan $taak_id gegeven.
Het probleem is dat er nu bij het klikken op de submit knop ($taken) elke keer de taken met project_ID "1" weergegeven worden.

Wat ik niet begrijp is hoe ik ervoor kan zorgen dat bij het klikken op $taken de bijbehorende id aan $taak_id wordt gegeven.
Dit zou denk ik alles moeten oplossen..
 
Wil je 1 knop? Dan kun je gewoon een input text veldje aanmaken waar de gebruiker een ID invult, en dan laat je die zien:
HTML:
<form action="page.php" method="post">
  <input type="text" name="taak_id" value="" />
  <input type="submit" name="submit" value="Bekijk taken." />
</form>

Dan kun je daarna op je pagina de taak_id uitlezen:
PHP:
if ( isset ( $_POST['taak_id'] ) ) {
  $taak_id = (int) $_POST['taak_id'];
}
else {
  $taak_id = 0;
}

Alternatief kun je ook voor elk project een knop maken, dan kun je het taak_id in een verborgen veld zetten, zodat de gebruiker het niet ziet, maar je het wel uit kunt lezen:

HTML:
<form action="page.php" method="post">
  <input type="hidden" name="taak_id" value="1" />
  <input type="submit" name="submit" value="Bekijk taken voor project 1." />
</form>
<form action="page.php" method="post">
  <input type="hidden" name="taak_id" value="2" />
  <input type="submit" name="submit" value="Bekijk taken voor project 2." />
</form>
 
Hallo Frats,

Bedankt alweer voor het reageren op mijn post.

Ik zal er een kijkje naar nemen.
 
Hallo daar ben ik weer..

Ik heb gedaan wat Frats hierboven uitgelegd heeft en dat werkt!
Verder ben ik gaan kijken om een manier te zoeken zodat de value automatisch wordt ingevuld vanuit de array.

Dat is mij gelukt door in de array een url te maken waarin de id vanuit variabel "$projectid"
Zodra ik op de link klik wordt ik doorgestuurd naar taken_overzicht.php.
Op deze pagina krijg ik de taken van de desbetreffende project te zien ($taak_id = (int) $_GET['taak_id'];)

Binnen taken_overzicht.php heb ik een knop,dit knop dient om een nieuwe taak toe te voegen aan het geselecteerde project.

Het probleem is dat de nieuwe aangemaakte taak niet automatisch de taak_id pakt..terwijl ik dit met "$taak_id = (int) $_GET['taak_id'];" wel vraag.

Ik weet dat het een hele verhaal is ..
Weet iemand wat ik nu fout aan het doen ben? :shocked:

Op deze pagina zijn alle projecten te zien en heb je ook de mogelijkheid om de taken van elk project te bekijken
PHP:
<a href="hoofdpagina.php">Hoofdpagina</a>
<h1>
Projecten overzicht
</h1>

<?php
session_start();
//variables
$project_toevoegen = '<input type = "submit" name="Toevoegen" value="Project Toevoegen"/>';
$knop =
'<form method="post" action="taken_overzicht.php">
<input type="hidden" name="$project_naam" value="<?php echo $project_naam ?>"/><br/><br/>
<input type="submit" name="submit"/> 
</form>';

require_once 'database_inc.php';
$db = mysqli_connect($server,$gebruikersnaam,$password);
mysqli_select_db($db, $database);

$projectnaam = $_POST['Projectnaam'];
$projectomschrijving = $_POST['Projectomschrijving'];

if (isset($projectnaam, $projectomschrijving) && !empty($emailadres))
{
	$query = mysql_query("INSERT INTO projecten(projectnaam, projectomschrijving,gebruiker)
	VALUES('$projectnaam', '$projectomschrijving','$emailadres')") or die (mysql_error());
}

$sql = "SELECT * FROM  projecten WHERE projectID ORDER BY projectnaam";
				
$result = mysqli_query($db, $sql);

//array voor de projecten
while($regel = mysqli_fetch_array($result))
{	
	$projectid = $regel['projectID'];
	$project_naam .= $regel['projectnaam']."<br>";
	$resultaat .= "<a href='taken_overzicht.php?taak_id=$projectid'>Taken</a>"."<br>";
	$resultaat .= "<strong> Projectnaam: </strong> ".$regel['projectnaam']."</strong> <br>";
	$resultaat .= "<strong> Omschrijving: </strong>".$regel['projectomschrijving']." <br />";	
	$resultaat .= "<strong> Gebruiker: </strong>".$regel['gebruiker']." <br /> <br />";	
}
echo $resultaat;
mysqli_close($db);
?>

<!-- project toevoegen knop -->
<form method= "POST" action = "projecttoevoegen.php" name= "toevoegen">
	<table cellspacing= "0" cellpadding="0" border="0">
	<tr>
	<?php 
		if (!empty($emailadres))
	{
		echo $project_toevoegen;
	}
		else
	{
		echo 'U bent niet bevoegd om projecten te wijzigen/toevoegen!';
	}
	?>
	</tr>
	</table>		
</form>

Indien je op de link klikt kan je de taken van die desbetreffende project bekijken
PHP:
<a href="hoofdpagina.php">Hoofdpagina</a></br>
<a href="projecten.php">Projecten</a>
<title>Taken overzicht</title>
<h2>
Taken overzicht
</h2>

<?php
session_start();
require_once 'database_inc.php';

$db = mysqli_connect($server,$gebruikersnaam,$password);
mysqli_select_db($db, $database);
if (isset($taak_id))
{
$taak_id = (int) $_GET['taak_id'];
}

$sql = "SELECT projecten.projectID, taken.projectID,taken.taak_naam, taken.taak_omschrijving, taken.taak_gebruiker, taken.taak_aanmaakdatum, taken.taak_deadline, taken.taak_status 
FROM projecten 
INNER JOIN taken ON projecten.projectID=taken.projectID
WHERE taken.projectID = " . (int) $taak_id . "";


$taken = mysqli_query($db, $sql);

//array voor de taak/taken
while($taken_overzicht = mysqli_fetch_array($taken))
{	
	$taken_lijst .= "<b> Taaknaam: </b>".$taken_overzicht['taak_naam']."<br>";
	$taken_lijst .= "<b> Omschrijving: </b>".$taken_overzicht['taak_omschrijving']."<br>";
	$taken_lijst .= "<b> Aanmaakdatum: </b>".$taken_overzicht['taak_aanmaakdatum']."<br>";
	$taken_lijst .= "<b> Deadline: </b>".$taken_overzicht['taak_deadline']."<br>";
	$taken_lijst .= "<b> Status: </b>".$taken_overzicht['taak_status']."<br>"."<br>";
}
$naam =  $_GET['project_naam'];
echo 'Taken voor project: '.$naam."<br>"."<br>";
echo $taken_lijst;

$taak_aanmaak_knop =
'<input type = "submit" name= "taak_aanmaak" value="Nieuwe taak aanmaken" />
';
?>

<!-- taak aanmaak formulier -->
<html>
<body>
<form method="get" action="taak_aanmaak.php">
	<table cellspacing= "2" cellpadding="2" border="0">
		<tr>
		<td>
		<?php
		if (isset($emailadres))
		{
		echo $taak_aanmaak_knop;
		}
		else
		{
		echo 'U bent niet bevoegd om taken te wijzigen/toevoegen!'; 
		}
		?>
		</td>
		</tr>
		
		<tr>
		<td>
		<input type="hidden" name="projectid" value="<?php echo $taak_id; ?>" />
		</td>
		</tr>
		
	</table>
</form>
</body>
</html>

Als je op Nieuwe Taak Aanmaken klikt wordt je naar de onderstaande pagina verwezen
PHP:
<?php
session_start();
require_once 'database_inc.php';
$taak_id = (int) $_GET['taak_id'];
$taak_naam = $_POST['taak_naam'];
$taak_omschrijving = $_POST['taak_omschrijving'];
$taak_deadline = $_POST['taak_deadline'];
$datum = date ("j-n-Y");
$tijd = date("G:i");

$db = mysqli_connect($server,$gebruikersnaam,$password);
mysqli_select_db($db, $database);
$sql = "SELECT * FROM taken WHERE projectID";
$result = mysqli_query($db, $sql);

if (isset($emailadres, $taak_naam, $taak_omschrijving, $taak_deadline))
{
$query = mysql_query("INSERT INTO taken(projectID, gebruiker, taak_naam, taak_omschrijving, taak_deadline)
VALUES('$taak_id', '$emailadres', '$taak_naam', '$taak_omschrijving,','$taak_deadline')") or die (mysql_error());
mysqli_close($db);
header("Location:hoofdpagina.php");
}

/*Controlleren of de velden ingevuld zijn, zijn deze ingevuld en bestaat de email adres nog niet..dan wordt er een email gestuurd naar de
ingevulde email adres
*/

if (mysqli_num_rows($result) > 0)

{
$pagina ="confirm.php" . $_SERVER['HTTP_HOST'];
$onderwerp = "Taak aanmaak bevestiging";
$ontvanger = $emailadres;
$bericht .= "Geachte $emailadres:\n\n";
$bericht .= "Op $datum om $tijd heeft u een taak aangemaakt voor project:\n\n";
ini_set('sendmail_from', 'johnnybravo76@hotmail.com');
mail($ontvanger, $onderwerp, $bericht);
}
echo 'Email adres: '.$emailadres;
?>



<html>
<head>
<h1>
Taak aanmaken
</h1>
</head>
<body>

<!-- taak aanmaken -->
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']?>">
	<table cellspacing= "2" cellpadding="2" border="0">

		<tr>
		<td>Taak naam: <font color ="red">*</td> <td><input type="text" name="taak_naam" size = "30"/></br></td>
		</tr>
		
		<tr>
		<td>Taak Omschrijving: <font color ="red">*</td> <td><input type="text" name="taak_omschrijving" size = "30"/></br></td>
		</tr>
		
		<tr>
		<td>Deadline: <font color ="red">*</td> <td><input type="text" name="taak_deadline" size = "30"/></br></td>
		</tr>		
		
		<tr>
		<td><input type = "submit" value="taak aanmaken" /></td>

		<td><input type = "reset"  name="delete "value="Leegmaken" /></td>
		</tr>		
	</table>
	
	<br>
	<p>Let op: Alle velden met een <font color ="red">*</font> dienen verplicht ingevuld te worden !</p> 
</form>
</body>
</html>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan