Hvordan henter man data/resultater ud af en tabel?

Tags:    php

Hejsa

Det må da kunne lade sig gøre ret enkelt og uden at man behøver at kunne skrive/programmere ret meget php?

Jeg har i en MySQL database (med phpMyAdmin) oprettet en tabel med Nummer, Fornavn, Efternavn, Email, Website og Profil
(Profil skal indholde et link til en side på webstedet).

Jeg var her i tvivl om jeg skulle bruge tinyint, tinytext eller varchar og jeg havde problemer med at finde det beskrevet nogensteder, så det var til at forstå.
Jeg tror jeg har fundet noget passende intil videre.
Jeg har udfyldt to kollonner i tabellen - altså oprettet to medlemmer.

Nu vil jeg gerne hente data via et php-dokument på serveren (hotellets server på internettet). Ligemeget hvad jeg prøver med, så kan jeg ikke hente noget som helst.

Ideen er blot at oprette et medlemskatotek som man kan sortere i efter fornavn, efternavn m.v.

Man skal altså kunne se en liste eller en tabel over medlemmer og der skal være et link til deres mail, website og profil på hjemmesiden.

For overhovedet at lære at hente noget ud af databaseb/tabellen så har jeg forsøgt dette:

<?php
$conn = mysql_connect("localhost", "brugernavn", "password");
mysql_select_db("databasenavn");
$result = mysql_query("select Efternavn from dk-designere")or die(mysql_error());
echo "<table border='1px' cellspacing='0px'>";
while ($row = mysql_fetch_array($result)) {
extract($row);
echo "<tr>";
echo "<td>$Efternavn</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($conn);
?>

Det giver denne fejl: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''dk-designere'' at line 1

Jeg kan forstå at (linux)serveren har installeret PHP Version 4.3.11


Hvorfor findes der mon ikke en enkel beskrivelse af, hvordan man gør dette? Jeg kan i alle tilfælde ikke finde noget, og synes jeg er ved at køre sur i det.


Gitte




10 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Find et andet navn til din tabel dk-designere er ikke godt. du kan fx bruge dk_designere i stedet for



Hej Jokke og venlige hjælpsomme sjæle

Jeg kan godt se, hvordan det resultat der kommer er sorteret.
Tak for tippet om at man kan kalde resultater med ASC og DESC.
Det jeg nu gerne vil, er at give brugeren mulighed for at sortere.
Hvis man nu kunne klikke på overskriften Efternavn, og så få resultatet sorteret efter dette.
Er det mon muligt?
Jeg kan selvfølgelig linke til en ny side, hvor jeg har sat sorteringen anderledes, men kan man ikke sortere uden at oprette nye sider?
Det vil da være smart.
Altså - kan man índsætte et link der "kalder" en anden sortering frem ?

Jeg bliver nok aldrig nogen ørn til at programmere større ting selv, men jeg klapper i mine små hænder, når jeg forstår noget og får det til at fungere. Hjælp er virkeligt påskønnet!

Gitte :)

[Redigeret d. 14/09-05 01:32:29 af Gitte]


du kan lave links..
fx.
Fold kodeboks ind/udKode 

og så bare lave if's der tjekker hvad sortering er sat til.

fx

Fold kodeboks ind/udKode 





Super. Der var jo det.

Hvad skal der så til for at sortere i de forskellige punkter?

Min kode ser nu således ud:
<?php
$conn = mysql_connect("localhost", "brugernavn", "password");
mysql_select_db("database");
$result = mysql_query("select Nummer, Fornavn, Efternavn, Email, Website, Profil from dk_designere")or die(mysql_error());
echo "<table border='1px' cellspacing='2px'>";
echo "<tr>";
echo "<th style='width=120px'>Medl. nr.</th>";
echo "<th style='width=120px'>" . mysql_field_name($result, 1) . "</th>";
echo "<th style='width=120px'>" . mysql_field_name($result, 2) . "</th>";
echo "<th style='width=120px'>" . mysql_field_name($result, 3) . "</th>";
echo "<th style='width=120px'>" . mysql_field_name($result, 4) . "</th>";
echo "<th style='width=120px'>" . mysql_field_name($result, 5) . "</th>";
echo "</tr>";
while ($row = mysql_fetch_array($result)) {
extract($row);
echo "<tr>";
echo "<td>$Nummer</td>";
echo "<td>$Fornavn</td>";
echo "<td>$Efternavn</td>";
echo "<td>$Email</td>";
echo "<td>$Website</td>";
echo "<td>$Profil</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($conn);
?>

Gitte


[Redigeret d. 11/09-05 23:32:06 af Gitte]



Man sorterer typisk gennem SQL, altså det kald man laver til databasen.

Hermed slipper man for at skulle sortere resultaterne med serverscript..

eksempel:

$result = mysql_query("select Nummer, Fornavn, Efternavn, Email, Website, Profil from dk_designere ORDER BY Efternavn, Fornavn")or die(mysql_error());

Den vil sorterer efter navn, jeg har tilføjet

ORDER BY XXX, XXX. Hvor XXX repræsenterer kolonne navnene.. disse kan frit ændres.

endvidere kan man tilføje:

ORDER BY XXX ASC. (ascending) som er default, denne vil sorterer 4,2,3,1 til 1,2,3,4..

Skriver man derimod
ORDER BY XXX DESC. (descending) vil tidligere nævnte rækkefølge blive 4,3,2,1..


Med venlig hilsen
/Jokke Jensen
www.jj-multimediedesign.dk



Hej Jokke og venlige hjælpsomme sjæle

Jeg kan godt se, hvordan det resultat der kommer er sorteret.
Tak for tippet om at man kan kalde resultater med ASC og DESC.
Det jeg nu gerne vil, er at give brugeren mulighed for at sortere.
Hvis man nu kunne klikke på overskriften Efternavn, og så få resultatet sorteret efter dette.
Er det mon muligt?
Jeg kan selvfølgelig linke til en ny side, hvor jeg har sat sorteringen anderledes, men kan man ikke sortere uden at oprette nye sider?
Det vil da være smart.
Altså - kan man índsætte et link der "kalder" en anden sortering frem ?

Jeg bliver nok aldrig nogen ørn til at programmere større ting selv, men jeg klapper i mine små hænder, når jeg forstår noget og får det til at fungere. Hjælp er virkeligt påskønnet!

Gitte :)

[Redigeret d. 14/09-05 01:32:29 af Gitte]



Edit: kom for sent

[Redigeret d. 14/09-05 15:47:45 af Jesper Kristensen]



Hej

Det ser jo lovende ud, og jeg har også forsøgt, men jeg må have misforstået noget.
Kan I mon lige se hvad jeg gør galt?
(Jeg har udlade de første php og mysql linier)


$result = mysql_query("select Brand from dk_designere")or die(mysql_error());
if($_GET['sortering'] == "Brand");
{
echo "| <a class='db' href='?sortering='order by Brand.php'>A-Å</a>";
}
elseif($_GET['sortering'] == "Brand desc");
{
echo "| <a class='db' href='?sortering='order by Brand desc.php'>Å-A</a> |</span>";
}
echo "</h1>";
echo "<table border='0px' style='width: 260px; margin-left: 25px;' cellspacing='4px'>";
while ($row = mysql_fetch_array($result)) {
extract($row);
echo "<tr>";
echo "<td style='text-align:right;'> $Brand   » </td>";
echo "<td> <a class='fade' href='$Profil' title='Se profil for denne designer'>Profil</a></td>";
echo "</tr>";
}
echo "</table>";

mysql_close($conn);
?>


Jeg får denne fejl: unexpected T_ELSEIF

Gitte




1: Der skal ikke ; på if-sætninger



1: Der skal ikke ; på if-sætninger


[Ok - Jeg har fjernet dem, men det gør ingen forskel.]

Jo det gør en forskel, for nu kan jeg se siden. Bare ikke noget af det det står i koden. Der er altså ingen sorteringslinks.

Gitte

[Redigeret d. 18/09-05 20:03:21 af Gitte]

Nå, - jeg begynder vist at rode rundt i det, så jeg indsætte lige hele min kode, som den ser ud nu.

Fold kodeboks ind/udKode 


Det er skønt nogle gider at hjælpe!!

:) Gitte

[Redigeret d. 18/09-05 20:36:04 af Gitte]



Hejsa

Det gik lidt i stå her, så jeg prøvede på webcafe.dk

Jeg fik svar, og det er nu lykkedes for mig, at få det til at fungere.

Men uden jeres hjælp var jeg slet ikke nået til et kvalifiseret spørgsmål, og jeg føler mig godt hjulpet her.

Jeg ved ikke hvordan man indsætter kode her i forummet?

Så hele koden kommer ikke her. Hvis nogle skulle være interesserede så var den sidste hjælp jeg havde brug for dette:
Links skal se således ud:

<a href="side.php?sortering=az">Sortér fra A-Å</a>

<a href="side.php?sortering=za">Sortér fra Å-A</a>

Det var så to links. Du skal ændre "side.php" til dét, din side hedder.

så hedder det:

if ($_REQUEST["sortering"] == "az") {
$result = mysql_query("select Brand, Profil from dk_designere order by Brand ASC")or die(mysql_error());
} elseif ($_REQUEST["sortering"] == "za") {
$result = mysql_query("select Brand, Profil from dk_designere order by Brand DESC")or die(mysql_error());
}

Så vidt jeg har forstået skal dette stadig står der:
$result = mysql_query("select Brand, Profil from dk_designere order by Brand")or die(mysql_error());

(Tak til Molvins)



t