Avatar billede pede15 Nybegynder
26. oktober 2002 - 13:30 Der er 15 kommentarer og
1 løsning

Hente data ud fra tables i varierende størrelse....hvordan?

Jeg har siddet og bakset rundt med noget kode som skulle vise alt indholdet af en tabel. Problemet er bare, at man på siden, inden denne, vælger hvilken tabel man ønsker at se, og det er så der at problemet opstår. For de tabeller man vælger imellem varierer i størrelse. Nu tænker jeg ikke på rows..men på fields...altså kolonner, og den kan jeg ikke lige greje.

Altså.. noget kode som selv finder ud af hvor mange kolonner der er i tabellen, og vha. det viser al informationen i tabellen.

Det er lidt svært at forklare, men sig endelig til hvis i ikke forstår hvad jeg mener..så skal jeg prøve igen.
Avatar billede pede15 Nybegynder
26. oktober 2002 - 13:31 #1
jeg ved ikke hvor komplekst det er, men hvis det viser sig at være en større opgave, så smider jeg selvfølgelig flere point ind! :o)
Avatar billede spaff Nybegynder
26. oktober 2002 - 13:52 #2
Den her vil liste alle felter i en given database:

$query = "select * from tabel";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);

for ($p = 0; $p < $num_results; $p++)
    {
        $row = mysql_fetch_array($result);
        for ($n = 0; $n < sizeof($row); $n++)
            {
                print "($p, $n): $row[$n]<br>";
            }
    }
Avatar billede lauer Nybegynder
26. oktober 2002 - 14:02 #3
Hmm, jeg tror altså at det var dette han mente..
så man selv kunne vælge en tabel, og så skulle alle dataer fra den tabel vises?!?

<?php
$res = mysql_query("SELECT * FROM ".$table)
$fields = mysql_num_fields($res);
print ('<table>');
while($row = mysql_fetch_row($res)) {
    print ('<tr>');
    for ($i = 0; $i <= $fields; $i++) {
        printf('<td>%s</td>', $row[$i]);
    }
    print('<\tr>');   
}
print ('</table>');
?>

- lauer
Avatar billede lauer Nybegynder
26. oktober 2002 - 14:04 #4
How, lige et par fejl.
retter lige, samt sætter det som svar :)

<?php
$res = mysql_query("SELECT * FROM ".$table);
$fields = mysql_num_fields($res);
print ('<table>');
while($row = mysql_fetch_row($res)) {
    print ('<tr>'."\n");
    for ($i = 0; $i <= $fields; $i++) {
        printf('<td>%s</td>', $row[$i]);
    }
    print ('</tr>'."\n");   
}
print ('</table>');
?>
Avatar billede lauer Nybegynder
26. oktober 2002 - 14:05 #5
argh... det går helt galt for mig i dag :/

for ($i = 0; $i <= $fields; $i++) {

skal ændres til

for ($i = 0; $i < $fields; $i++) {

så skulle der vist heller ikke være mere :o)
Avatar billede pede15 Nybegynder
26. oktober 2002 - 14:14 #6
machomann >> jeg har lige prøvet det, og ændret det som du sagde, men den kommer med en 'parse error' i denne linje:

    $fields = mysql_num_fields($res);

Kan det være noget af det foregående der forårsager fejlen?
Avatar billede lauer Nybegynder
26. oktober 2002 - 14:15 #7
har du også sat ';' efter '$res = mysql_query("SELECT * FROM ".$table)' som jeg også have glemt?
Avatar billede pede15 Nybegynder
26. oktober 2002 - 14:17 #8
argh  det går sq heller ikke for godt for mig...havde selv lavet en fejl i koden...lol

- well det virker!
Viel danke! ;O)
du får lige de 50 bobs!
Avatar billede pede15 Nybegynder
26. oktober 2002 - 14:18 #9
"there ya go!"
Avatar billede lauer Nybegynder
26. oktober 2002 - 14:19 #10
takker :)
Avatar billede tipsen Nybegynder
26. oktober 2002 - 14:24 #11
Forslag til ændringer:

Der er sat en overskriftsrække på og der er ændret <= til < i for-løkkerne!

$res = mysql_query("SELECT * FROM ".$table);
$fields = mysql_num_fields($res);
print ('<table>');
print ('<tr>'."\n");
for ($i = 0; $i < $fields; $i++) {
  printf('<th>%s</th>', mysql_field_name($res, $i));
}
print ('</tr>'."\n");   
while($row = mysql_fetch_row($res)) {
  print ('<tr>'."\n");
  for ($i = 0; $i < $fields; $i++) {
    printf('<td>%s</td>', $row[$i]);
  }
  print ('</tr>'."\n");   
}
print ('</table>');
Avatar billede pede15 Nybegynder
26. oktober 2002 - 14:42 #12
wops...var vist lige hurtig nok ... ehm... tipsen >> jeg vil godt give dig lige point for dine tilføjelser..men sidste gange jeg gjorde det, var jeg nær blevet slettet for det. Det var måske også fordi det var over 200 point... men ..ja...ehm..jeg ved sq ikke rigtigt om jeg tør at gøre det igen ;o)
Avatar billede pede15 Nybegynder
26. oktober 2002 - 14:44 #13
prøv at se her:

http://www.eksperten.dk/spm/204412

...wops *S*
Avatar billede tipsen Nybegynder
26. oktober 2002 - 14:55 #14
pede: nevermind - bare du kan bruge det :-)

PS: Bemærk specielt ændringen i for-løkken - med den anden udgave må du have fået en tom tabel-celle i højre side af tabellen?
Avatar billede pede15 Nybegynder
26. oktober 2002 - 14:57 #15
ehm...ved ikke om det er tilfældet...men nu har jeg siddet og redigeret i det osv..og det ser helt fint ud! ;o)

- nice touch med navnene på felterne..giver en del mere overblik.

Jeg siger MANGE tak ;o)
Avatar billede tipsen Nybegynder
26. oktober 2002 - 15:01 #16
du kan jo prøve at indføre, at tabellen bliver sorteret efter feltnavnet, hvis man klikker på det :-)

"SELECT * FROM $table ORDER BY $fieldname"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester