css class toewijzen afhankelijk van db waarde
Ik ben bezig met een systeem waarin onder andere de status van een order wordt weergegeven. Dit zijn 3 verschillende statussen (Pending, Wating, Closed) en deze wil ik weergeven elk met een eigen css class.
Nu heb ik het volgende geprobeerd, maar dat werkt niet. Gezocht op internet maar ik kom er niet uit...
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
function showstatus(){
if ( $_GET['status'] == "Pending"){
echo "<span class=\"pending\">Pending</span>";
} else {
echo "<br /><br />No information found in the status row. Please check your code.";
}
};
if ( $_GET['status'] == "Pending"){
echo "<span class=\"pending\">Pending</span>";
} else {
echo "<br /><br />No information found in the status row. Please check your code.";
}
};
Iemand die mij in de goede richting kan wijzen?
Ik zou niet weten wat daar niet aan werkt.
Zet dit bovenin je script.
Geef maar net iets meer code, zoals de SQL Query
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
include('config.php');
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
</tr>";
$result = mysql_query("SELECT * FROM `order` ORDER BY `id` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign='top'>" . nl2br( $row['nr']) . "</td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . nl2br( $row['status']) . "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=new>New Row</a>";
showstatus();
?>
include('config.php');
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
</tr>";
$result = mysql_query("SELECT * FROM `order` ORDER BY `id` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign='top'>" . nl2br( $row['nr']) . "</td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . nl2br( $row['status']) . "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=new>New Row</a>";
showstatus();
?>
de functie staat nu nog even onderaan om te testen...
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf
showstatus binnen de while, een waarde meegeven en $_GET vervangen door $row
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include('config.php');
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
</tr>";
$result = mysql_query("SELECT * FROM `order` ORDER BY `id` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign='top'>" . nl2br( $row['nr']) . "</td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . showstatus(nl2br( $row['status']) ). "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=new>New Row</a>";
?>
include('config.php');
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
</tr>";
$result = mysql_query("SELECT * FROM `order` ORDER BY `id` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign='top'>" . nl2br( $row['nr']) . "</td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . showstatus(nl2br( $row['status']) ). "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=new>New Row</a>";
?>
Code (php)
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door steen
Hij echoed nu alleen eerst de else en dan de if waarde, en dit doet hij bovenaan de tabel, hoe kan dit? De functie wordt binnen de while loop en de td tags uitgevoerd?
** Update:
Ik heb nu nog 2 waarden toegevoegd in een elseif statement, en deze werkt nu goed. Hij laat nu niet meer de else echo zien. Hij laat alles nog wel zien boven de tabel.
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf
Iemand een idee en een hint in wat ik de oplossing ik kan vinden?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
</tr>";
?>
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
</tr>";
?>
Hier ineens vijf:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
echo "<tr>
<td valign='top'>" . nl2br( $row['nr']) . "</td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . showstatus(nl2br( $row['status']) ). "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
?>
echo "<tr>
<td valign='top'>" . nl2br( $row['nr']) . "</td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . showstatus(nl2br( $row['status']) ). "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
?>
Verder zou ik het gebruik van single en double quotes omdraaien. Nu krijg je single quotes in je XHTML.
Jan Koehoorn schreef op 08.09.2009 08:06:
Hier heb je drie kolommen:
Hier ineens vijf:
Verder zou ik het gebruik van single en double quotes omdraaien. Nu krijg je single quotes in je XHTML.
Hier ineens vijf:
Verder zou ik het gebruik van single en double quotes omdraaien. Nu krijg je single quotes in je XHTML.
Klopt, dit had ik ook al gezien en aangepast; onderstaand de huidige code (die niet werkt).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include('config.php');
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
<td></td>
<td></td>
</tr>";
$result = mysql_query("SELECT * FROM `order` ORDER BY `id` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign='top'><a href=index.php?page=viewinfo&id={$row['id']}>" . nl2br( $row['nr']) . "</a></td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . showstatus(nl2br( $row['status']) ) . "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=new>New Row</a>";
?>
include('config.php');
echo "<table border=1 cellpadding=5 cellspacing=0 >
<tr>
<td><b>Nr</b></td>
<td><b>Klant</b></td>
<td><b>Status</b></td>
<td></td>
<td></td>
</tr>";
$result = mysql_query("SELECT * FROM `order` ORDER BY `id` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign='top'><a href=index.php?page=viewinfo&id={$row['id']}>" . nl2br( $row['nr']) . "</a></td>
<td valign='top'>" . nl2br( $row['klant']) . "</td>
<td valign='top'>" . showstatus(nl2br( $row['status']) ) . "</td>
<td valign='top'><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign='top'><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=new>New Row</a>";
?>
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf
Het werkt, maar ik vind het niet ideaal, overzicht wordt er een beetje onduidelijk van. Onderstaand in ieder geval de werkende code:
De Functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function show_status($status){
if ( $status == "Pending"){
echo "<td class=\"pending\">Pending</td>";
} elseif ( $status == "Waiting"){
echo "<td class=\"waiting\">Waiting</td>";
} elseif ( $status == "Closed"){
echo "<td class=\"closed\">Closed</td>";
} else {
echo "No information found in the status row. Please check your code.";
}
?>
}
function show_status($status){
if ( $status == "Pending"){
echo "<td class=\"pending\">Pending</td>";
} elseif ( $status == "Waiting"){
echo "<td class=\"waiting\">Waiting</td>";
} elseif ( $status == "Closed"){
echo "<td class=\"closed\">Closed</td>";
} else {
echo "No information found in the status row. Please check your code.";
}
?>
}
De pagina view:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
//Get and display orders from the database
echo "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\" >
<tr>
<td><b>Ordernumber</b></td>
<td><b>Client</b></td>
<td><b>Status</b></td>
<td></td>
<td></td>
</tr>";
$result = mysql_query("SELECT * FROM `$table_orders` ORDER BY `$sort_default` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign=\"top\"><a href=index.php?page=viewinfo&id={$row['id']}>" . nl2br( $row['ordernumber']) . "</a></td>
<td valign=\"top\">" . nl2br( $row['client']) . "</td>";
show_status(nl2br( $row['status']) );
echo "<td valign=\"top\"><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign=\"top\"><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=neworder>New Row</a>";
?>
//Get and display orders from the database
echo "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\" >
<tr>
<td><b>Ordernumber</b></td>
<td><b>Client</b></td>
<td><b>Status</b></td>
<td></td>
<td></td>
</tr>";
$result = mysql_query("SELECT * FROM `$table_orders` ORDER BY `$sort_default` DESC") or trigger_error(mysql_error());
while($row = mysql_fetch_array($result)){
foreach($row AS $key => $value) { $row[$key] = stripslashes($value); }
echo "<tr>
<td valign=\"top\"><a href=index.php?page=viewinfo&id={$row['id']}>" . nl2br( $row['ordernumber']) . "</a></td>
<td valign=\"top\">" . nl2br( $row['client']) . "</td>";
show_status(nl2br( $row['status']) );
echo "<td valign=\"top\"><a href=index.php?page=edit&id={$row['id']}>Edit</a></td>
<td valign=\"top\"><a href=index.php?page=tasks&id={$row['id']}>Tasks</a></td>
</tr>";
}
echo "</table>";
echo "<br /><br /><a href=index.php?page=neworder>New Row</a>";
?>
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf
Code (php)
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
27
28
29
30
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
27
28
29
30
<?php
function showStatus($status){
switch($status)
{
case 0: //bijv pending
$class = 'pendingorder';
break;
case 1: //bijv waiting
$class = 'waitingorder';
break;
case 2: //bijv closed
$class = "closedorder"
break;
default;
throw new exception('Unkown orderstatus: No information found in the status row. Please check your code.'):
break;
return $class;
}
//hier table enzo
while($row= mysql_fetch_array($result)){
echo '<tr><td class="'.showStatus($row['status']).'">'.$row['iets'].'</td></tr>';
}
?>
function showStatus($status){
switch($status)
{
case 0: //bijv pending
$class = 'pendingorder';
break;
case 1: //bijv waiting
$class = 'waitingorder';
break;
case 2: //bijv closed
$class = "closedorder"
break;
default;
throw new exception('Unkown orderstatus: No information found in the status row. Please check your code.'):
break;
return $class;
}
//hier table enzo
while($row= mysql_fetch_array($result)){
echo '<tr><td class="'.showStatus($row['status']).'">'.$row['iets'].'</td></tr>';
}
?>
Stuk netter en overzichtelijker. En opmaak doe je in CSS. Dus die align troep is onnodig.
Overigens de namen, pending, waiting en closed zou ik uit de DB halen dmv een switch in SQL. Niet nodig om dit allemaal in PHP nog te verwerken.
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
Jurgen schreef op 10.09.2009 10:47:
Ik zou zo doen:
Goede kritiek! Ik ga dit even proberen, en de waarden al uit de database halen. Die align troep moet er inderdaad uit.
Edit: Ik heb het aan de praat gekregen. Hoe bedoel je precies alles uit de database halen met een switch? De functie al in de query verwerken ofzo?
Edit 2: De functie wordt nu niet aangeroepen bij de td class, maar gewoon de waarde van status wordt daar nu ingevuld. Ik roep dus de functie niet meer op. Met de functie op die plaats kreeg ik het niet aan de praat. De class zal altijd gelijk zijn aan de waarde in de database, dan kan ik die functie toch verder achterwege laten? Of is dit niet verstandig, en waarom niet?
Gewijzigd op 01/01/1970 01:00:00 door Rick de Graaf