css class toewijzen afhankelijk van db waarde
Goedenavond,
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...
Iemand die mij in de goede richting kan wijzen?
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.
Misschien moet ik even vermelden dat 'status' niet in de url staat...
Als ik vervang voor gebeurt er ook niets.
Als ik vervang voor gebeurt er ook niets.
$row zal niet bestaan in die function.
Zet dit bovenin je script.
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:
Gewijzigd op 01/01/1970 01:00:00 door steen
Bedankt! En ik snap het :)
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.
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?
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.
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:
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
Ik heb het opgelost door de td tags in de functie te zetten.
Het werkt, maar ik vind het niet ideaal, overzicht wordt er een beetje onduidelijk van. Onderstaand in ieder geval de werkende code:
De Functie:
De pagina view:
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
Ik zou zo doen:
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.
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:
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





