Regel break op nieuw karakter (Opgelost)
DRobje - 22/08/2007 11:51
Nieuw lid
Vraagje,
Ik haal een overzicht uit de database waar kolom data kan beginnen met 3 verschillende vormen: I12345 - INC12345 - COH12345
Nu wordt het netjes op volgorde gesorteerd maar wat ik graag zou willen is dat zodra I regels klaar zijn en de INC regels beginnen er eerst een lege regel wordt gegeven om er een beter overzicht van te maken. Die regel zou ik dan ook nog wel een kleurtje willen geven. Wie heeft hier een simpele oplossing voor??
16 antwoorden
Gesponsorde links
ArndJan - 22/08/2007 12:01
PHP interesse
Kun je een stukje code plaatsen?
DRobje - 22/08/2007 12:05
Nieuw lid
Wat wil je hebben? ik bedoel dat ik die code wel kan plaatsen maar weet niet of je er wat aan hebt. Maar goed, de query is:
$query = "SELECT COUNT(IPC) AS aantal, SUM(Parentpr) AS parent, SUM(Childpr) AS child, CURRENT_DATE(), submission_date, DATEDIFF(CURRENT_DATE(), MIN(submission_date)) AS verschil, IPC, submission_id, Part_Family, Request_Type, Description, Parentpr, Childpr, Prio, MAX(Description) FROM ft_form_4 WHERE status = 'open' GROUP BY IPC ORDER BY Part_Family, Request_Type ASC";
$sql = mysql_query ($query) or die (mysql_error());
if ($sql && mysql_num_rows($sql) >= 1)
{
$query = "SELECT COUNT(IPC) AS aantal, SUM(Parentpr) AS parent, SUM(Childpr) AS child, CURRENT_DATE(), submission_date, DATEDIFF(CURRENT_DATE(), MIN(submission_date)) AS verschil, IPC, submission_id, Part_Family, Request_Type, Description, Parentpr, Childpr, Prio, MAX(Description) FROM ft_form_4 WHERE status = 'open' GROUP BY IPC ORDER BY Part_Family, Request_Type ASC" ;
{
en het op te bouwen overzicht:
while ($row= mysql_fetch_array ($sql)){
echo '<tr><td><a href="detail.php?id='.$row['submission_id'].'">'.$row['IPC'].'</a></td>';
echo '<td>'.$row['submission_date'].'</td>';
echo '<td>'.$row['verschil'].'</td>';
echo '<td>'.$row['aantal'].'</td>';
echo '<td>'.$row['parent'].'</td>';
echo '<td>'.$row['child'].'</td>';
echo "<td>".$row['Part_Family']."</td>";
echo "<td>".$row['Request_Type']."</td>";
echo "<td>".$row['Description']."</td></tr>";
}
echo '<tr><td><a href="detail.php?id=' . $row [ 'submission_id' ] . '">' . $row [ 'IPC' ] . '</a></td>' ; echo '<td>' . $row [ 'submission_date' ] . '</td>' ; echo '<td>' . $row [ 'verschil' ] . '</td>' ; echo '<td>' . $row [ 'aantal' ] . '</td>' ; echo '<td>' . $row [ 'parent' ] . '</td>' ; echo '<td>' . $row [ 'child' ] . '</td>' ; echo "<td>" . $row [ 'Part_Family' ] . "</td>" ; echo "<td>" . $row [ 'Request_Type' ] . "</td>" ; echo "<td>" . $row [ 'Description' ] . "</td></tr>" ; }
DMM - 22/08/2007 15:14
PHP beginner
Met extra while's kan het misschien wel...
while(substr ($waarde, 0, 3) == "INC") {
echo '<td></td>';
}
while ( substr ( $waarde , 0 , 3 ) == "INC" ) { }
BramBo - 22/08/2007 15:22
JS gevorderde
in je while lust declareer je aan het einde een var $last. En een regel hiervoor een vergelijking die controleert op een wijziging in de $last waarde.
dus:
$last;
while() {
...
if(empty($last) && preg_replace("/^(\w+)\d+/", "\\1", $row['IPC']) != $last) print "</tr><td colspan='10'></td><tr>";
$last = preg_replace("/^(\w+)\d+/", "\\1", $row['IPC']);
$last ;
while ( ) {
...
if ( empty ( $last ) && preg_replace ( "/^(\w+)\d+/" , "\\1 " , $row [ 'IPC' ] ) != $last ) print "</tr><td colspan='10'></td><tr>" ;
Rik - 22/08/2007 15:30 (laatste wijziging 22/08/2007 15:31)
Crew algemeen
Dan wordt het dus zoiets:
<?php
$colors = array('red', 'green', 'blue');
$i = 0;
$last = '';
while ($row = mysql_fetch_array($sql)) {
$prefix = preg_replace('/\d/', '', $row['submission_id']); // Of $row['IPC'], ik weet niet precies wat er allemaal in je DB staat :)
$last = empty($last) ? $prefix : $last;
echo '<tr style="color: ' . $colors[$i % count($colors)] . ';"><td><a href="detail . php?id=' . $row['submission_id'] . '">' . $row['IPC'] . '</a></td>';
echo '<td>' . $row['submission_date'] . '</td>';
echo '<td>' . $row['verschil'] . '</td>';
echo '<td>' . $row['aantal'] . '</td>';
echo '<td>' . $row['parent'] . '</td>';
echo '<td>' . $row['child'] . '</td>';
echo '<td>' . $row['Part_Family'] . '</td>';
echo '<td>' . $row['Request_Type'] . '</td>';
echo '<td>' . $row['Description'] . '</td></tr>';
if ($previx != $last) {
$i++;
echo '<tr><td colspan="8"></td></tr>';
}
$last = $prefix;
}
?>
<?php
$colors = array ( 'red' , 'green' , 'blue' ) ; $i = 0 ;
$last = '' ;
$prefix = preg_replace ( '/\d/' , '' , $row [ 'submission_id' ] ) ; // Of $row['IPC'], ik weet niet precies wat er allemaal in je DB staat :) $last = empty ( $last ) ?
$prefix : $last ; echo '<tr style="color: ' . $colors [ $i % count ( $colors ) ] . ';"><td><a href="detail . php?id=' . $row [ 'submission_id' ] . '">' . $row [ 'IPC' ] . '</a></td>' ; echo '<td>' . $row [ 'submission_date' ] . '</td>' ; echo '<td>' . $row [ 'verschil' ] . '</td>' ; echo '<td>' . $row [ 'aantal' ] . '</td>' ; echo '<td>' . $row [ 'parent' ] . '</td>' ; echo '<td>' . $row [ 'child' ] . '</td>' ; echo '<td>' . $row [ 'Part_Family' ] . '</td>' ; echo '<td>' . $row [ 'Request_Type' ] . '</td>' ; echo '<td>' . $row [ 'Description' ] . '</td></tr>' ; if ( $previx != $last ) {
$i ++;
echo '<tr><td colspan="8"></td></tr>' ; }
$last = $prefix ;
}
?>
DRobje - 22/08/2007 15:50 (laatste wijziging 22/08/2007 16:00)
Nieuw lid
Ziet er heel goed uit. Alleen krijg ik nu een gekleurd overzicht waarin dus alle kollomen de kleur rood hebben gekregen. Bij een nieuwe regel krijg ik ongeacht het het nummer een kleur groen of blauw. De bedoeling was dus dat als de rij veranderd waar bij IPC de waarde veranderd van I0123 naar INC9876 of COH98765
Dat er dan een lege regel met een kleurtje kwam.
Rik - 22/08/2007 16:10
Crew algemeen
Oh zo!
<?php
$last = '';
while ($row = mysql_fetch_array($sql)) {
$prefix = preg_replace('/\d/', '', $row['submission_id']); // Of $row['IPC'], ik weet niet precies wat er allemaal in je DB staat :)
$last = empty($last) ? $prefix : $last;
echo '<tr><td><a href="detail . php?id=' . $row['submission_id'] . '">' . $row['IPC'] . '</a></td>';
echo '<td>' . $row['submission_date'] . '</td>';
echo '<td>' . $row['verschil'] . '</td>';
echo '<td>' . $row['aantal'] . '</td>';
echo '<td>' . $row['parent'] . '</td>';
echo '<td>' . $row['child'] . '</td>';
echo '<td>' . $row['Part_Family'] . '</td>';
echo '<td>' . $row['Request_Type'] . '</td>';
echo '<td>' . $row['Description'] . '</td></tr>';
if ($previx != $last) {
echo '<tr><td colspan="8" style="color: blue"></td></tr>';
}
$last = $prefix;
}
?>
<?php
$last = '' ;
$prefix = preg_replace ( '/\d/' , '' , $row [ 'submission_id' ] ) ; // Of $row['IPC'], ik weet niet precies wat er allemaal in je DB staat :) $last = empty ( $last ) ?
$prefix : $last ; echo '<tr><td><a href="detail . php?id=' . $row [ 'submission_id' ] . '">' . $row [ 'IPC' ] . '</a></td>' ; echo '<td>' . $row [ 'submission_date' ] . '</td>' ; echo '<td>' . $row [ 'verschil' ] . '</td>' ; echo '<td>' . $row [ 'aantal' ] . '</td>' ; echo '<td>' . $row [ 'parent' ] . '</td>' ; echo '<td>' . $row [ 'child' ] . '</td>' ; echo '<td>' . $row [ 'Part_Family' ] . '</td>' ; echo '<td>' . $row [ 'Request_Type' ] . '</td>' ; echo '<td>' . $row [ 'Description' ] . '</td></tr>' ; if ( $previx != $last ) {
echo '<tr><td colspan="8" style="color: blue"></td></tr>' ; }
$last = $prefix ;
}
?>
DRobje - 22/08/2007 16:32
Nieuw lid
Helaas, nu is er lijkt er niks gewijzigd ten opzichte van wat ik had. Maar waar telt hij nu die eerste waarde van die prefix??
BramBo - 22/08/2007 16:40
JS gevorderde
.... nog geen 5 seconde of ik zie de error al. Als iemand zoveel moeite doet dat hij je heel het script aan levert kan je op zijn minst de moeite nemen om het door te nemen..
$previx moet zijn $prefix natuurlijk
DRobje - 22/08/2007 16:44
Nieuw lid
Nee sorry hoor. dat had ik al lang aangepast. Ik krijg ook geen error. alleen er zit nog geen verschil in en dat is nu juist dat stukje waar Boukefalos de moeite voor heeft genomen. En als je mijn laatste post goed had gelezen had je dat kunnen zien.
DRobje - 22/08/2007 20:17 (laatste wijziging 23/08/2007 08:44)
Nieuw lid
Ok nu zijn we een heel eind. Het werkt bijna maar wat er nu gebeurt is dat er inderdaad na wisseling van karakters iets gebeurt maar zet het dan er 1 boven. Dus als hij bij de twintigste moet wisselen dan dot ie dit bij nr 19. Dus loop ik een regel achter. Wat gaat er nu nog fout?? Hieronder de uiteindelijke code
$last = '';
while ($row = mysql_fetch_array($sql)) {
$date = substr($row['submission_date'],0,10);
$prefix = preg_replace('/\d/', '', $row['IPC']);
$last = empty($last) ? $prefix : $last;
echo '<tr><td width=\"72\"><a href="detail.php?id=' . $row['submission_id'] . '">' . $row['IPC'] . '</a></td>';
echo '<td>'.$date.'</td>';
echo '<td align="center">' . $row['verschil'] . '</td>';
echo '<td>' . $row['aantal'] . '</td>';
echo '<td>' . $row['parent'] . '</td>';
echo '<td>' . $row['child'] . '</td>';
echo '<td>' . $row['Part_Family'] . '</td>';
echo '<td>' . $row['Request_Type'] . '</td>';
echo '<td>' . $row['Description'] . '</td>';
if ($prefix != $last) {
echo '<tr><td colspan="9" style="color: blue">----------</td></tr>';
}
$last = $prefix;
}
$last = '' ;
$date = substr ( $row [ 'submission_date' ] , 0 , 10 ) ; $last = empty ( $last ) ?
$prefix : $last ; echo '<tr><td width=\"72\"><a href="detail.php?id=' . $row [ 'submission_id' ] . '">' . $row [ 'IPC' ] . '</a></td>' ; echo '<td>' . $date . '</td>' ; echo '<td align="center">' . $row [ 'verschil' ] . '</td>' ; echo '<td>' . $row [ 'aantal' ] . '</td>' ; echo '<td>' . $row [ 'parent' ] . '</td>' ; echo '<td>' . $row [ 'child' ] . '</td>' ; echo '<td>' . $row [ 'Part_Family' ] . '</td>' ; echo '<td>' . $row [ 'Request_Type' ] . '</td>' ; echo '<td>' . $row [ 'Description' ] . '</td>' ; if ( $prefix != $last ) {
echo '<tr><td colspan="9" style="color: blue">----------</td></tr>' ; }
$last = $prefix ;
}
Rik - 23/08/2007 10:12
Crew algemeen
En als je het zo probeert?
$last = '';
while ($row = mysql_fetch_array($sql)) {
$date = substr($row['submission_date'],0,10);
$prefix = preg_replace('/\d/', '', $row['IPC']);
$last = empty($last) ? $prefix : $last;
if ($prefix != $last) {
echo '<tr><td colspan="9" style="color: blue">----------</td></tr>';
}
echo '<tr><td width=\"72\"><a href="detail.php?id=' . $row['submission_id'] . '">' . $row['IPC'] . '</a></td>';
echo '<td>'.$date.'</td>';
echo '<td align="center">' . $row['verschil'] . '</td>';
echo '<td>' . $row['aantal'] . '</td>';
echo '<td>' . $row['parent'] . '</td>';
echo '<td>' . $row['child'] . '</td>';
echo '<td>' . $row['Part_Family'] . '</td>';
echo '<td>' . $row['Request_Type'] . '</td>';
echo '<td>' . $row['Description'] . '</td>';
$last = $prefix;
}
$last = '' ;
$date = substr ( $row [ 'submission_date' ] , 0 , 10 ) ; $last = empty ( $last ) ?
$prefix : $last ; if ( $prefix != $last ) {
echo '<tr><td colspan="9" style="color: blue">----------</td></tr>' ; }
echo '<tr><td width=\"72\"><a href="detail.php?id=' . $row [ 'submission_id' ] . '">' . $row [ 'IPC' ] . '</a></td>' ; echo '<td>' . $date . '</td>' ; echo '<td align="center">' . $row [ 'verschil' ] . '</td>' ; echo '<td>' . $row [ 'aantal' ] . '</td>' ; echo '<td>' . $row [ 'parent' ] . '</td>' ; echo '<td>' . $row [ 'child' ] . '</td>' ; echo '<td>' . $row [ 'Part_Family' ] . '</td>' ; echo '<td>' . $row [ 'Request_Type' ] . '</td>' ; echo '<td>' . $row [ 'Description' ] . '</td>' ; $last = $prefix ;
}
DRobje - 23/08/2007 10:34
Nieuw lid
PERFECTO !!!!
Heel hartelijk bedankt voor je hulp.
marten - 23/08/2007 10:37
Beheerder
Ken je de opgelost knop al?
Gesponsorde links
Dit onderwerp is gesloten .