[PHP] DB result in een 2 dimensionale array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een gastenboekje, maar dan voor meerdere bedrijven.
Ik heb een tabel, met daarin gegevens waar ik d.m.v. een select query enkele gegevens uithaal (bijv. Naam, woonplaats, bericht), en dat dan per bedrijfsID. Het resultaat zijn dus meerdere resultaten, maar deze hebben volgens mij geen unieke waarde waarop ik ze kan selecteren. Het is namelijk de bedoeling dat bijv. de eerste 10, of 2e 10 o.i.d weergegeven worden. (En met zo'n volgende knopje enzow)
Ik had het volgende bedacht:
- Ik zet het resultaat in een 2 dimensionale array, zodat ik alsnog een unieke ID per aantal gegevens heb.
- Maak dan alsnog een selectie van bijv. de eerste 10.

Mijn probleem zit het erin dat ik de gegevens niet goed in/uit die 2 dimensionale array krijg, hoogst waarschijnlijk zit het hem ergens in de syntax, maar omdat ik niet zo heel goed met PHP om kan gaan, zie ik gewoon even niet waar het probleem zit.
Ik heb het volgende:

$query = "SELECT Poster_naam, Poster_Woonplaats, Bericht FROM Items where bedrijfsID=$id";
$result = mysql_query($query) or die("Fout bij uitvoeren query");
$teller=0;
while ($row = mysql_fetch_array($result, MYSQL_NUM)){
$arr[$teller][0]=$row[0];
$arr[$teller][1]=$row[1];
$arr[$teller][2]=$row[2];
$teller++;
}
$teller=0;
for ($teller;$teller<10;$teller++){
print " Naam: $arr[$teller][0] "\n;
print " Woonplaats: $arr[$teller][1] "\n;
print " Bericht: $arr[$teller][2] "\n;
}

Ik heb voor het gemak even de HTML-opmaak tags verwijdert, dan is het wat duidelijker leesbaar. Nu staat de code voor de volgende, en vorige 10 er nog niet, maar dat gaat me wel lukken denk ik....Het probleem zit hem meer in het feit dat die gegevens niet worden weergegeven in het weergave gedeelte. Er wordt nu gewoon [0],[1],[2] als variabele inhoud getoont.

Alvast bedankt !

Groeten,

Foepe

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

code:
1
select naam,plaats from gastenboek where bedrijfsid = $id limit 0,10

Hiermee krijg je alleen de eerste 10 resultaten terug. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

http://www.mysql.com/doc/en/SELECT.html (>> en dan LIMIT)

zo heb je je while loop niet meer nodig en het is ook nog eens veel efficienter natuurlijk, anders zou je elke keer de hele table ophalen

als je dan zo'n 'volgende 10 berichten'-knop wilt hebben kun je die LIMIT gewoon in een variabele gooien, zoiets:
code:
1
SELECT Poster_naam, Poster_Woonplaats, Bericht FROM Items where bedrijfsID=$id LIMIT $i, 10

(begin met $i=0)

[ Voor 6% gewijzigd door Verwijderd op 01-12-2003 10:43 ]


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Nu online

ATS

En als je dan ook nog even het moment van posten in de database opslaat, en daar op sorteerd, dat weet je ook nog in welke volgorde ze horen :)

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

ATS schreef op 01 december 2003 @ 10:42:
En als je dan ook nog even het moment van posten in de database opslaat, en daar op sorteerd, dat weet je ook nog in welke volgorde ze horen :)
Hij zal ongetwijfeld een auto_increment field gebruiken, waardoor je dus al weet in welke volgorde ze moeten. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
while( $row = mysql_fetch_array( $this->result_set ) ){
    $this->result[] = $row;
}

is zoiets ook niet wat voor jou?
gooi alles in een array en daarna heb je een mega multi demensionale array.
Je kan dan ook de veldnamen van de database nog gebruiken dus bijvoorbeeld:

($i = record index)
$result[$i]["Poster_naam"]

als je je query limit op 10 heb je ook maar 10 records :)

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Dan heb je maar 10 records idd, maar dat is - dacht ik - ook juist de bedoeling van de TS. :) Het is ook zo overbodig 1000 records op te halen als je er toch maar 10 wilt showen. Plus dat als je gewoon
PHP:
1
2
3
while ($line = mysql_fetch_array($records, MYSQL_ASSOC)) {
// zooi ...
}

doet, dan kun je ook $line['Poster_naam'] gebruiken.

[ Voor 4% gewijzigd door OkkE op 01-12-2003 14:44 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.

Pagina: 1