Hej
Jag har en databas som alla klubbmedlemmar ligger i.
Från den databasen gör jag enskilda sidor för varje medlem, den delen fungerar.
Sedan vill jag göra en lista på alla medlemmar sorterade i en lite speciell ordning. Hur gör man det?
Jag kan läsa och lista allt i databasen så här
<?php
function mysql_die($error = "unknown")
{
echo "<H1>Error:". $error."</H1>";
exit;
}
$connection = mysql_connect("localhost","user","password") or mysql_die("Unable to connect");
mysql_select_db("user_se_db",$connection);
$result = mysql_query("SELECT namn, emejl, hemnr, mobnr FROM medlemmar", $connection);
while ($row = mysql_fetch_row($result))
{
for ($i=0; $i<mysql_num_fields($result); $i++)
echo $row[$i] . " ";
echo "<br />";
}
mysql_close($connection);
?>
<?php
function mysql_die($error = "unknown")
{
echo "<H1>Error:". $error."</H1>";
exit;
}
$connection = mysql_connect("localhost","user","password") or mysql_die("Unable to connect");
mysql_select_db("user_se_db",$connection);
$count = 0;
$result = mysql_query("SELECT namn, emejl, hemnr, mobnr FROM medlemmar", $connection);
while ($row = mysql_fetch_row($result))
{
for ($i=0; $i<mysql_num_fields($result); $i++)
echo ("<td>$row[$i] </td>");
$count++;
if ($count == 1){
echo "</tr>";
$count = 0;}
}
mysql_close($connection);
?>
Nu fungerar tabellen, men jag vet fortfarande inte hur man sorterar och hur man får emejlen länkad och länkar till medlem.
t.ex en sådan här länk <a href="medlemdb.php?id=3">Leif Björkman</a>
Missade en sak med sorteringen jag har en kolumn med våra certifikat som jag vill soretra efter, den heter cert.
Förfinade tabellgenereringen lite, efter att ha tittat i mina böcker.
Men faktum kvarstår, jag får inte sorteringen att fungera.
Jag behöver sortera efter min tabell "cert" den innehåller en text som kan se ut så här "2-stjärnig instruktör CMAS". Jag har också 3, 2, 1-stjärnig dykare CMAS och fridykare i samma tabell "cert".
Går det överhuvudtaget att sortera efter den tabellen? eller måste jag skapa olika frågor för varje grupp av dykare? Hur gör jag det i såfall?
Min nuvarande kod ser ut så här
<?php
include 'error.inc';
include 'db.inc';
// Visa Medlemmar i tabell
function displayMedlem($result)
{
echo "<h1>SSDKs medlemmar</h1>";
//Börja tabell med tabellhuvud
echo "\n<table>\n<tr>\n" .
"\n\t<th><p class=datum>Namn</p></th>" .
"\n\t<th><p class=datum>Emejl</p></th>" .
"\n\t<th><p class=datum>Hem Nr</p></th>" .
"\n\t<th><p class=datum>Mob Nr</p></th>" .
"\n</tr>";
//Fetch en rad in i $row array
while ($row = @ mysql_fetch_row($result))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row som separata ID (tabell data)
foreach($row as $data)
echo "\n\t<td><p class=tab> $data </p></td>";
//Avsluta rad
echo "\n</tr>";
}
//Avsluta sedan tabellen
echo "\n</table>\n";
}
$query = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar";
//Anslut till MySql servern
if (!($connection = @ mysql_connect($hostName, $username, $password)))
die("Kan ej ansluta");
if (!(mysql_select_db("saladyk_se_db", $connection)))
showerror();
//Kör frågan på anslutningen
if (!($result = @ mysql_query ($query, $connection)))
showerror();
//Visa resultatet
displayMedlem($result);
//Stäng anslutning
if (!(mysql_close($connection)))
showerror();
?>
om du vill sortera medlemmarna i namnföljd med den som börja på a först och ö sist så skriver du till en sak i raden:
$result = mysql_query("SELECT namn, emejl, hemnr, mobnr FROM medlemmar", $connection);
och skriver istället:
$result = mysql_query("SELECT namn, emejl, hemnr, mobnr FROM medlemmar ORDER BY namn", $connection);
Du kan även sortera i omvändordning alltså text med den som har ett namn som börjar på ö först och en som börjar på a sista kan du skriva så här istället:
$result = mysql_query("SELECT namn, emejl, hemnr, mobnr FROM medlemmar ORDER BY namn DESC", $connection);
Sedan är det ju bara att byra ut namn mot det du vill att den ska sortera efter. :birp
Hej iegn, ny uppdatering på mitt lilla projekt. Tack jockelw för att du hjälpte mig på traven.
Koden ser nu ut så här, och sorterar mina data i den ordning jag vill. Nästa problem är att få in url och mailto i kolumn 1 och 2. Ja i kolumn ett måste formen vara <a href="medlemdb.php?id=2">Jan-Olov Sävhammar</a> hur lyckas jag med det?
<?php
include 'error.inc';
include 'db.inc';
// Visa Instruktörer i tabell
function displayMedlem($result)
{
echo "<h1>SSDKs medlemmar</h1>";
//Börja tabell med tabellhuvud
echo "\n<table>\n<tr>\n" .
"\n\t<th><p class=datum>Namn</p></th>" .
"\n\t<th><p class=datum>Emejl</p></th>" .
"\n\t<th><p class=datum>Hem Nr</p></th>" .
"\n\t<th><p class=datum>Mob Nr</p></th>" .
"\n</tr>" .
"\n<tr>" .
"\n\t<td><b><u>Instruktörer</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while ($row = @ mysql_fetch_row($result))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row som separata ID (tabell data)
foreach($row as $data)
echo "\n\t<td><p class=tab>$data </p></td>";
//Avsluta rad
echo "\n</tr>";
}
}
$query = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar WHERE cert='2-stjärnig instruktör CMAS' ORDER by namn";
// Visa 3-stjärniga i tabell
function displayMedlem1($result1)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>3-stjärniga</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while ($row1 = @ mysql_fetch_row($result1))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row1 som separata ID (tabell data)
foreach($row1 as $data1)
echo "\n\t<td><p class=tab>$data1 </p></td>";
//Avsluta rad
echo "\n</tr>";
}
}
$query1 = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar WHERE cert='3-stjärnigt CMAS' ORDER by namn";
// Visa 2-stjärniga i tabell
function displayMedlem2($result2)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>2-stjärniga</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while ($row2 = @ mysql_fetch_row($result2))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row2 som separata ID (tabell data)
foreach($row2 as $data2)
echo "\n\t<td><p class=tab>$data2 </p></td>";
//Avsluta rad
echo "\n</tr>";
}
}
$query2 = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar WHERE cert='2-stjärnigt CMAS' ORDER by namn";
// Visa 1-stjärniga i tabell
function displayMedlem3($result3)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>1-stjärniga</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while ($row3 = @ mysql_fetch_row($result3))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row3 som separata ID (tabell data)
foreach($row3 as $data3)
echo "\n\t<td><p class=tab>$data3 </p></td>";
//Avsluta rad
echo "\n</tr>";
}
}
$query3 = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar WHERE cert='1-stjärnigt CMAS' ORDER by namn";
// Visa fridykare i tabell
function displayMedlem4($result4)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>Fridykare</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while ($row4 = @ mysql_fetch_row($result4))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row2 som separata ID (tabell data)
foreach($row4 as $data4)
echo "\n\t<td><p class=tab>$data4 </p></td>";
//Avsluta rad
echo "\n</tr>";
}
//Avsluta sedan tabellen
echo "\n</table>\n";
}
$query4 = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar WHERE cert='Fridykare' ORDER by namn";
//Anslut till MySql servern
if (!($connection = @ mysql_connect($hostName, $username, $password)))
die("Kan ej ansluta");
if (!(mysql_select_db("saladyk_se_db", $connection)))
showerror();
//Kör frågor på anslutningen
if (!($result = @ mysql_query ($query, $connection)))
showerror();
if (!($result1 = @ mysql_query ($query1, $connection)))
showerror();
if (!($result2 = @ mysql_query ($query2, $connection)))
showerror();
if (!($result3 = @ mysql_query ($query3, $connection)))
showerror();
if (!($result4 = @ mysql_query ($query4, $connection)))
showerror();
//Visa resultatet
displayMedlem($result);
displayMedlem1($result1);
displayMedlem2($result2);
displayMedlem3($result3);
displayMedlem4($result4);
//Stäng anslutning
if (!(mysql_close($connection)))
showerror();
?>
Jag fick tips i ett annat forum när det gäller länkar, men jag får det inte att fungera. Det blir bara parse error hela tiden. Någon som ser vad jag gjort för fel?
while($row = mysql_fetch_row($result))
{
echo "<tr>";
echo "<td><a href=\"medlemdb.php?id=".$row[4]."\">".$row[0]."</a></td>;
echo "<td><a href=\"mailto:".$row[1]."\">".$row[1]."</a></td>;
echo "<td>".$row[2]."</td>";
echo "<td>".$row[3]."</td>";
echo "</tr>";
}
}
$query = "SELECT namn, emejl, hemnr, mobnr, id FROM medlemmar WHERE cert='2-stjärnig instruktör CMAS' ORDER by namn";
Så här såg det ut förut
while ($row = @ mysql_fetch_row($result))
{
//Starta tabell
echo "\n<tr>";
//Skriv ut alla attribut fron $row som separata ID (tabell data)
foreach($row as $data)
echo "\n\t<td><p class=tab>$data </p></td>";
//Avsluta rad
echo "\n</tr>";
}
}
$query = "SELECT namn, emejl, hemnr, mobnr FROM medlemmar WHERE cert='2-stjärnig instruktör CMAS' ORDER by namn";
Ja så kan det gå. Jag hittade felet när jag la ut minn senaste fråga.
Min slutgiltiga lösning ser ut som följer
<?php
include 'error.inc';
include 'db.inc';
// Visa Instruktörer i tabell 36
function displayMedlem($result)
{
echo "<h1>SSDKs medlemmar</h1>";
//Börja tabell med tabellhuvud
echo "\n<table>\n<tr>\n" .
"\n\t<th><p class=datum>Namn</p></th>" .
"\n\t<th><p class=datum>Emejl</p></th>" .
"\n\t<th><p class=datum>Hem Nr</p></th>" .
"\n\t<th><p class=datum>Mob Nr</p></th>" .
"\n</tr>" .
"\n<tr>" .
"\n\t<td><b><u>Instruktörer</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array 52
while($row = mysql_fetch_row($result))
{
echo "<tr>";
echo "<td><a href=\"medlemdb.php?id=".$row[4]."\">".$row[0]."</a></td>";
echo "<td><a href=\"mailto:".$row[1]."\">".$row[1]."</a></td>";
echo "<td>".$row[2]."</td>";
echo "<td>".$row[3]."</td>";
echo "</tr>";
}
}
$query = "SELECT namn, emejl, hemnr, mobnr, id FROM medlemmar WHERE cert='2-stjärnig instruktör CMAS' ORDER by namn";
// Visa 3-stjärniga i tabell
function displayMedlem1($result1)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>3-stjärniga</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while($row1 = mysql_fetch_row($result1))
{
echo "<tr>";
echo "<td><a href=\"medlemdb.php?id=".$row1[4]."\">".$row1[0]."</a></td>";
echo "<td><a href=\"mailto:".$row1[1]."\">".$row1[1]."</a></td>";
echo "<td>".$row1[2]."</td>";
echo "<td>".$row1[3]."</td>";
echo "</tr>";
}
}
$query1 = "SELECT namn, emejl, hemnr, mobnr, id FROM medlemmar WHERE cert='3-stjärnigt CMAS' ORDER by namn";
// Visa 2-stjärniga i tabell
function displayMedlem2($result2)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>2-stjärniga</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while($row2 = mysql_fetch_row($result2))
{
echo "<tr>";
echo "<td><a href=\"medlemdb.php?id=".$row2[4]."\">".$row2[0]."</a></td>";
echo "<td><a href=\"mailto:".$row2[1]."\">".$row2[1]."</a></td>";
echo "<td>".$row2[2]."</td>";
echo "<td>".$row2[3]."</td>";
echo "</tr>";
}
}
$query2 = "SELECT namn, emejl, hemnr, mobnr, id FROM medlemmar WHERE cert='2-stjärnigt CMAS' ORDER by namn";
// Visa 1-stjärniga i tabell
function displayMedlem3($result3)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>1-stjärniga</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while($row3 = mysql_fetch_row($result3))
{
echo "<tr>";
echo "<td><a href=\"medlemdb.php?id=".$row3[4]."\">".$row3[0]."</a></td>";
echo "<td><a href=\"mailto:".$row3[1]."\">".$row3[1]."</a></td>";
echo "<td>".$row3[2]."</td>";
echo "<td>".$row3[3]."</td>";
echo "</tr>";
}
}
$query3 = "SELECT namn, emejl, hemnr, mobnr, id FROM medlemmar WHERE cert='1-stjärnigt CMAS' ORDER by namn";
// Visa fridykare i tabell
function displayMedlem4($result4)
{
//Börja tabell med tabellhuvud
echo "\n<tr>\n" .
"\n\t<td><b><u>Fridykare</u></b></td>" .
"\n</tr>";
//Fetch en rad in i $row array
while($row4 = mysql_fetch_row($result4))
{
echo "<tr>";
echo "<td><a href=\"medlemdb.php?id=".$row4[4]."\">".$row4[0]."</a></td>";
echo "<td><a href=\"mailto:".$row4[1]."\">".$row4[1]."</a></td>";
echo "<td>".$row4[2]."</td>";
echo "<td>".$row4[3]."</td>";
echo "</tr>";
}
//Avsluta sedan tabellen
echo "\n</table>\n";
}
$query4 = "SELECT namn, emejl, hemnr, mobnr, id FROM medlemmar WHERE cert='Fridykare' ORDER by namn";
//Anslut till MySql servern
if (!($connection = @ mysql_connect($hostName, $username, $password)))
die("Kan ej ansluta");
if (!(mysql_select_db("saladyk_se_db", $connection)))
showerror();
//Kör frågor på anslutningen
if (!($result = mysql_query ($query, $connection)))
showerror();
if (!($result1 = mysql_query ($query1, $connection)))
showerror();
if (!($result2 = mysql_query ($query2, $connection)))
showerror();
if (!($result3 = mysql_query ($query3, $connection)))
showerror();
if (!($result4 = mysql_query ($query4, $connection)))
showerror();
//Visa resultatet
displayMedlem($result);
displayMedlem1($result1);
displayMedlem2($result2);
displayMedlem3($result3);
displayMedlem4($result4);
//Stäng anslutning
if (!(mysql_close($connection)))
showerror();
?>