scrollbars in deel van while lus

Status
Niet open voor verdere reacties.

ecross

Gebruiker
Lid geworden
4 mrt 2009
Berichten
638
hallo,

ik maak op mijn website gebruik van het volgende:

PHP:
while($row = mysql_fetch_array($result)) 
 {
echo "<tr>";
echo "<td>".$variable1."</td>";
echo "<td>".$variable2."</td>";
echo "<td>".$variable3."</td>";
echo "<td>".$variable4."</td>";
echo "</tr>"; 
 }
nu heb je een blok van 4 kolommen en 8 rijen nu wil ik horizontale scrollbars voor de 3e en 4e kolom bij elkaar.
uitleg:
je hebt eerst 2 kolommen gewoon en daarna 2 kollomen die samen 1 horzizontale scrollbar hebben.
hoe maak ik dat?
 
Hoe bedoel je dat precies?

Als je bedoelt dat ze samen moeten scrollen, dat wordt lastig, if not impossible. Daarnaast hebben tabelcellen helemaal geen scrollbars.
 
ik dacht al dat ik het niet zo duidelijk uit had gelegd ...

het is de bedoeling dat voor de 3e en 4e kolom eigelijk 1 div komt
v.b.:
PHP:
while($row = mysql_fetch_array($result)) 
 {
echo "<tr>";
echo "<td>".$variable1."</td>";
echo "<td>".$variable2."</td>";
echo "<div met scroll bars>";
echo "<td>".$variable3."</td>";
echo "<td>".$variable4."</td>";
echo "</div>":
echo "</tr>"; 
 }
alleen nu komt er op elke regel een aparte <div> kan het ook dat er maar een <div> komt?
duidelijker zo?
 
Nou ja, ik snap er echt niks van. Je kunt niet zomaar een div tussen de td's door gooien.
 
volgens mij wil ecross zoiets maken:
HTML:
<table border='1'>
	<tr>
		<td>1</td>
		<td>2</td>
		<td rowspan='8'><textarea wrap='off' style='height:200px;'>aankomende week weer de 90s request bij 3fm</textarea></td>
	</tr>
	<tr>
	</tr>
	<tr>
		<td>3</td>
		<td>4</td>
	</tr>
	<tr>
		<td>5</td>
		<td>6</td>
	</tr>
	<tr>
		<td>7</td>
		<td>8</td>
	</tr>
	<tr>
		<td>9</td>
		<td>10</td>
	</tr>
</table>
Geen idee hoe ik horizontale scrollbars kan forceren met css dus daarom maar een textarea misbruikt icm een niet bestaande - maar wel werkende - wrap optie. Dit kun je niet direct vullen vanwege de rowspan, dus je zult de mysql gegevens eerst tijdelijk moeten wegschrijven in een array oid om ze daarna in de tabel te zetten.
 
ik heb een hele mooie voorbeeld tekening gemaakt,
het blauwe vak moet een horizontale scrollbar hebben.
zo duidelijk?
<bijlage>
 

Bijlagen

  • mooie tekening.JPG
    mooie tekening.JPG
    15,5 KB · Weergaven: 24
Dus je wilt de tabel layout (de vakjes) behouden en de inhoud van de tabel scrollen? Dat is niet mogelijk tenzij je met software als silverlight of flash aan de gang gaat.
 
en hoe maak je dat met div zo dat het net lijkt alsof het een tabel is?
ik wil wel met borders er omheen en tussen
 
Je maakt een div, die je links float en waar je het vaste deel van de tabel in zet.

Dan maak je daarnaast nog een div, die je er links tegenaan float, die maak je dan smaller dan de tabel die je daar in zet.

HTML:
<div style="float: left">

  <table>
    <tr>
      <td>Content</td>
      <td>Meer content</td>
    </tr>
    <tr>
      <td>Content</td>
      <td>Meer content</td>
    </tr>
  </table>

</div>

<div style="float: left; width: 200px; overflow-x: scroll">

  <table style="width: 400px">
    <tr>
      <td>Dit is scrollende content</td>
      <td>En nog meer daarvan</td>
    </tr>
    <tr>
      <td>En de tweede regel</td>
      <td>Whatever</td>
    </tr>
  </table>

</div>
 
Ja, dat zal wel moeten.

[EDIT]
Of je moet de hele HTML in variabelen steken en daarna na elkaar echoën.
[/EDIT]
 
Laatst bewerkt:
ik bedoelde niet dat het slecht was hoor :p

en bedankt voor de hulp
 
Dat dacht ik ook niet ;), maar als je liever één lus wilt, performance-wise wellicht beter, dan kan dat zo:

PHP:
$sTable1 = "<table>";
$sTable2 = "<table>";

while ( /* je expressie */ ) {

  $sTable1 .= "<tr>";
  $sTable2 .= "<tr>";

  $sTable1 .= "<td>" . $row[ 'kolomvoordeeerstetabel' ] . "</td>"; // deze regel herhaal je voor al je data in de eerste tabel
  $sTable2 .= "<td>" . $row[ 'kolomvoordetweedetabel' ] . "</td>"; // en deze voor de tweede tabel

  $sTable1 .= "</tr>";
  $sTable2 .= "</tr>";

}

$sTable1 .= "</table>";
$sTable2 .= "</table>";

echo '<div style="float: left">', $sTable1, '</div>';
echo '<div style="float: left; width: 200px; overflow-x: scroll">', $sTable2, '</div>';
 
na wat gepuzzel ben ik eruit gekomen.
ik heb 2 dingen die nog niet zijn zoals ik wil:
de regels zijn nu in de verschillen de tabellen niet evenhoog,
(in het scroll gedeelte heb ik soms 2 regels hoog)
en ik heb nu tussen de linkerkant en het scroll gedeelte 2 borders
(van allebij de tabellen 1)

kan hier wat aan gedaan worden?
 
Laatst bewerkt:
*klik*

ik heb zelf met die borders al een beetje zitten proberen alleen nu krijg ik geen "inner borders"
 
Tsja, dat probleem zul je zo altijd hebben. Dan moet je in je CSS een vaste hoogte opgeven voor een regel en de breedte helemaal weglaten. Zo kun je alles op 1 regel houden.

En dan kun je gewoon op de td's een border toepassen. Eventueel bijvoorbeeld alleen onder en rechts. Dan moet je alleen bij de laatste kolom een class toevoegen die zorgt dat er rechts geen border komt en bij de laatste rij een class die zorgt dat er onder geen border komt.
 
ik weet alleen niet waarom hij voor sommige cellen 2 regels gebruikt, heb ik helemaal niet opgegeven
code:
HTML:
<style type="text/css"> 

input#lengte {
	width:  5em;
	  }
div.scroll {
height: 100%;
width: 80%;
overflow: auto;
border: 1px solid #666;
background-color: #ccc;
padding: 8px;
}
table#table1 {
border-top:2px solid #000000; 
border-right:2px solid #000000; 
border-bottom:2px solid #000000; 
border-left:2px solid #000000;}

table#table2 {
border-top:2px solid #000000; 
border-right:0px none #000000; 
border-bottom:2px solid #000000; 
border-left:0px none #000000;}
td { border: 1px; }

</style>
PHP:
$sTable1 = "<table id='table1'>";
$sTable1 .= "<tr><td>actief<td>voornaam<td>achternaam</tr>";
$sTable2 = "<table id='table2'>";
$sTable2 .= "<tr><td>tvast<td>tmob<td>huisnr<td>straat<td>pcode<td>woonplaats<td>email<td>voorkeurzeilen<td>opmerking1<td>opmerking2</tr>";
$sTable3 = "<table id='table1'>";
$sTable3 .= "<tr><td>wijzig</td></tr>";



while ($row = mysql_fetch_array($result)){
 extract($row);
  $sTable1 .= "<tr>";
  $sTable2 .= "<tr>";
  $sTable3 .= "<tr>";
  
  if ($actief == "1")
	{$actief = 'ja';}
else
	{$actief = "nee";}
  
			   
  $sTable1 .= "<td>".$actief."</td>";
  $sTable1 .= "<td>".$voornaam."</td>";
  $sTable1 .= "<td>".$achternaam."</td>";
  
  $sTable2 .= "<td>".$tvast."</td>";
  $sTable2 .= "<td>".$tmob."</td>";
  $sTable2 .= "<td>".$huisnr."</td>";
  $sTable2 .= "<td>".$straat."</td>";
  $sTable2 .= "<td>".$pcode."</td>";
  $sTable2 .= "<td>".$woonplaats."</td>";
  $sTable2 .= "<td>".$email."</td>";
  $sTable2 .= "<td>".$voorkeurzeilen."</td>";
		
  $sTable2 .= "<td>".$opmerking1."</td>";
  $sTable2 .= "<td>".$opmerking2."</td>";
	
  $sTable3 .= "<form action='" . $_SERVER['PHP_SELF'] . "' method='GET'>";
  $sTable3 .= "<input type='hidden' name='show' value='select'>";
  $sTable3 .= "<input type='hidden' name='id' value='$schippers_id'>";
  $sTable3 .= "<tr>";
  $sTable3 .= "<td><input type='submit' value='wijzig'></td>";
  $sTable3 .= "</tr>";
  $sTable3 .= "</form>";
	
  $sTable1 .= "</tr>";
  $sTable2 .= "</tr>";
  $sTable3 .= "</tr>";
 
}
 
$sTable1 .= "</table>";
$sTable2 .= "</table>";
echo '<div style="float: left">'. $sTable1 .'</div>';
echo '<div style="float: left; width: 600px; overflow-x: scroll">'. $sTable2 .'</div>';
echo '<div>'. $sTable3 .'</div>';
 
Waarschijnlijk komt het doordat je als width 80% hebt opgegeven voor de scroll div.

Maar als je de tr een vaste hoogte geeft, werkt het dan niet?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan