25. januar 2003 - 16:38Der er
13 kommentarer og 1 løsning
Printe ud i en tabel!
Er ny i php, så bær over med mig.
Jeg har et resultat fra en forespørgslen i en mysql database (i $result). Jeg kan godt udskrive til en tabel med en enkelt kolonne, men hvordan udskriver jeg resultater til flere kolonner?
Jeg syntes at en smart måde at hente data fra et table er at smide hente funktionen i en fil, og så require() den i de sider som man skal hente data fra en sql database.
#fil: funktioner/mysql.php <?php // Funktion til at hente data fra en mysql database function mysqlHent($query) { $resultat = mysql_query($query);
if(!$resultat) { udskriv_fejl("Kunne ikke udføre: <em>$query</em>"); }
Til Morten: Som du kan se kan jeg godt skrive resultatet fra forespørgslen ud i en tabel med en enkelt kolonne. Problemet er så at denne tabel bliver meget lang. Derfor ville det være mere overskueligt at skrive ud til en tabel med to kolonner... (håber du forstår)
Hmm, jeg er ikke så god til at gennemgå det i hovedet :) Men jeg mener dette skulle virke :) Skulle der være et ulige antal dvd'er skal der blive en tom celle tilsidst.
//MySQL connect $sql = "SELECT * FROM noget ORDER BY noget DESC"; $query = mysql_query($sql)or die("fejl i " . $sql . "<br><br>fejlen var: " . mysql_error());
//så laver vi tabellen... du kan ændre i disse ting hvis du vil... $brede = 2; // antal koloner per række $brede_paa_table = 400; // bredden på tabellen...
Jeg har bikset følgende sammen som nemt kan bruges til at udskrive indhold af arrays, udtræk fra db osv:
<?php //udtræk fra db $res = mysql_query("select navn from table");
//Hvor mange søjler i tabellen $ColumnCount = 2; //Hvor mange poster i udtrækket $RecordCount = mysql_num_rows($res); //Hvor mange rækker får vi brug for $RowCount = (int) ($RecordCount / $ColumnCount) + 1;
echo "<table>\n"; //loop over rækker for ($i=0;$i<$RowCount;$i++) { echo "\t<tr>\n"; //loop over søjler for ($j=0;$j<$ColumnCount;$j++) { echo "\t\t<td>"; //hvis vi ikke er nået til sidste post if(($i+1)*$ColumnCount+$j < $RecordCount) { list($navn) = mysql_fetch_row($res); echo 'Navn: ' . $navn; } echo "</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; ?>
Hvis det kun er db-udtræk, kan man udnytte, at mysql_fetch_row() returnerer false når der ikke er flere poster:
<?php $res = mysql_query("select navn from table");
Fordelen ved deas og undertegnedes udgave er at hvis du finder på at ændre antallet af søjler til 3, 4, 5 el. flere kolonner fungerer de fejlfrit - hyttemeiers udgave benytter et lille "trick" i tilfældet med 2 søjler og kan ikke umiddelbart skaleres - men det kommer selvfølgelig an på behovet.
Synes godt om
Ny brugerNybegynder
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.