[PHP] table maken

Pagina: 1
Acties:
  • 4.613 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo mensen

Ik wil het volgende bereiken, maar weet niet hoe ik dit moet aanpakken.

heb een SQL database met o.a. de velden "positie" en "omschrijving"
positie is gevuld met 01, 02, 03 ...

vanuit deze database wil ik een tabel maken met daarin het volgende:
code:
1
2
3
4
5
6
7
<table>
<tr><td>Positie</td><td>Omschrijving</td></tr>
<tr><td>01</td><td>Omschrijving 1</td></tr>
<tr><td>02</td><td>Omschrijving 2</td></tr>
<tr><td>03</td><td>Omschrijving 3</td></tr>
<tr><td>04</td><td>Omschrijving 4</td></tr>
</table>

Nu is het zo dat hierbij de omschrijvingen uit de db worden gehaald en op de goede plaats
acher de positie wordt geplaatst. De positie moet altijd in de tabel staan en als die positie
niet in de db voorkomt moet daarvan de omschrijving leeg blijven. Dus "positie" wordt gewoon in de <td> gezet en omschrijving moet uit de db komen.

Hoop dat iemand weet hoe ik dit voor elkaar kan krijgen.

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Sorry maar dit is een zeer basic question

zoek eens op while(); loops ism mysql_fetch_array();


durf niet echt te zeggen: www.justfuckinggoogleit.com

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
echo '<table>';
echo '<tr><td>Positie</td><td>Omschrijving</td></tr>';
$query = "SELECT positie, omschrijving FROM table ORDER BY positie";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());
while($row = mysql_fetch_object($result))
{
      echo '<tr><td>'. $row->positie .'</td><td>'. $row->omschrijving .'</td></tr>';
}
echo '</table>';

Zoiets?

[ Voor 32% gewijzigd door Verwijderd op 26-08-2006 21:36 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
echo '<td>'. $row->positie .'</td><td>'. $row->omschrijving .'</td>';

nu haalt ie ook de positie uit de db, en dat is niet de bedoeling. de positie moet vast staan en die geef ik handmatig op in de <td> zegmaar.
Wat ie vervolgens uit de db moet halen is de omschrijving en die achter de betreffende positie neerzetten als dat mogelijk is.
Dus als in de db "02" met "omschrijving 2" niet bestaat dat ik in me tabel wel 02 heb en daarachter een leeg omschrijvingsveld.

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Dan hou je toch nog gewoon een 'counter' bij in je while loop. En samen met een IF kan dat onmogelijk een probleem zijn.

De bedoeling hier is eigenlijk dat je eerst zelf dingen opzoekt...

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo '<table>';
echo '<tr><td>Positie</td><td>Omschrijving</td></tr>';
$query = "SELECT positie, omschrijving FROM table ORDER BY positie";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

$row = mysql_fetch_object($result); //eerste rij
for ($i=0; $i<1000; $i++)
{
    if ($i == $row->positie)
    {
       echo '<tr><td>'. $row->positie .'</td><td>'. $row->omschrijving .'</td></tr>';
       $row = mysql_fetch_object($result);  //volgende rij
    }
    else
       echo '<tr><td>'. $i .'</td><td>leeg</td></tr>';
}
echo '</table>';

Kan vast op een makkelijker manier en ik weet ook niet of dit wel is wat je bedoeld

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik snap dat ik eerst moet zoeken op dit forum. Ik kan er wel een while loop en een IF inzetten. Maar ik weet niet hoe ik het voor elkaar moet krijgen om de goede omschrijving achter de positie te krijgen.
Als ik ook de positie uit de db zou moeten halen dan was het niet zo moeilijk, maar op deze manier lukt het me ff niet.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
gewoon met een simpel if statement. If positie == 1 ( .... vulderestmaarin

Wees creatief!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt het stukkie script van The_Shad0w werkt prima voor mij. Is precies wat ik bedoel en simpeler dan ik gedacht had.

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
En wat als je nu eens 1001 records hebt in je tabel ? Dan zal het scriptje hard crashen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
$i = 0
while ( nog rows in de recordset ) {
  if (row->position == null) {
    echo $i
  }
  else {
    echo row->position . " " . row->beschrijving
  }

  $i++;
}

[ Voor 4% gewijzigd door Feyd-Rautha op 26-08-2006 22:22 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zijn altijd maximaal 25 records die ik uit db filter, dus dat zal geen probleem zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb ik nog 1 vraagje. hoe kan ik de omschrijving inkorten tot 200 karaters gevolgd door ... als deze langer is als 200 karakters

normaal doe je dat volgens mij zo:
code:
1
 $omschrijving = (strlen($omschrijving) > 200) ? substr($omschrijving, 0, 200).'...' : $omschrijving;

maar ik weet niet hoe dat met '. $row->omschrijving .' werkt

Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
if (strlen($row->omschrijving) > 200) $row->omschrijving = substr($row->omschrijving, 0, 200).'...';


en voor de lege velden kun je het 't beste zo doen denk ik:
code:
1
2
3
4
5
6
7
for ($i=1; $row = mysql_fetch_object($result); $i++) {
  if ($i == $row->positie) {
    echo '<tr><td>'. $row->positie .'</td><td>'. $row->omschrijving .'</td></tr>';
  } else {
    echo '<tr><td>'. $i .'</td><td>leeg</td></tr>';
  }
}

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
@Kneh: Ik volg dit topic al een tijdje, en wil je er toch even op wijzen zelf iets meer inzet te tonen. Met een beetje puzzelen, desnoods wat zoekwerk, en wat debuggen moet je een heel eind kunnen komen. Het is niet de bedoeling dat we hier je handje vast houden (hoewel gerichtte vragen natuurlijk altijd welkom zijn als je dus zelf een beetje moeite hebt gedaan).

Einde dienstmededeling ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1