Simpel hjälp? (mysql och php)

Permalänk
Medlem

Simpel hjälp? (mysql och php)

Hej, jag har nu börjat experimentera lite med php och mysql. Jag har hittills gjort en en form där man anger tre värden, som sedan kommer in i min databas. De värdena jag har är foretag, pengar, sort och såklart id. Låt oss säga att jag har 30 företag med tillhörande pengar och sort. Sen på min sida vill jag lista de som är senast registrerade. Det jag då har tänkt är att man listar de 10 med högst id. Men hur gör jag det?

All hjälp är välkommen!

Permalänk
Medlem

Något sådant här borde funka (inte 100% koll på syntaxen just nu):
SELECT * FROM tablename ORDER BY id DESC LIMIT 10

Visa signatur

Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Medlem

Eller,
SELECT TOP 10 * FROM tablename ORDER BY id DESC

Permalänk
Medlem
Skrivet av Skogga:

Eller,
SELECT TOP 10 * FROM tablename ORDER BY id DESC

Tror faktiskt inte det funkar inte i MySQL (om de nu inte implementerat detta sedan jag sist använde det och/eller glömt skriva det i sin manual).

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

Tack, nu har jag gjort ett script. Jag har tagit ett färdigt och lagt in raden jag fick i den här tråden.

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("test", $con);

$query = "SELECT * FROM foretag ORDER BY id DESC LIMIT 5 ";

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){
echo $row['namn']. " - ". $row['pengar'];
echo "<br />";
}

?>

Dock nu så skriver den bara ut namn och pengar. Jag skulle vilja att den skriver ut sort också, hur löser jag det?

Permalänk
Medlem

Nu har jag delvist löst det. Jag gjorde det i en tabell istället, men nu visas id, vilket jag inte vill. Kod: http://pastie.org/1508543

Permalänk
Medlem
Skrivet av csmannen:

Nu har jag delvist löst det. Jag gjorde det i en tabell istället, men nu visas id, vilket jag inte vill. Kod: http://pastie.org/1508543

Sättet du skriver ut data på är lite fel i sammanhanget. Ditt sätt är rätt om man exempelvis vill skriva ut en tabell i debug-syfte och man inte har full koll på vad den innehåller. Du kommer också få problem när du vill ändra ordningen som data ska visas.

För att få bort id i ditt senaste fall måste du ändra SQL-frågan från:
SELECT * FROM foretag ORDER BY id DESC LIMIT 5
till
SELECT namn, pengar, sort FROM foretag ORDER BY id DESC LIMIT 5

Jag skulle dock säga att du var inne på ett mer rätt spår innan. Sort skriver du i det fallet ut som $row['sort'].

Visa signatur

Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Medlem

Här är den nya rätta koden: http://pastie.org/1509094 Dock vilja ha den i en tabell, hur löser jag det? Jag kom nu på att mina föregående kod skriver ut allt i databasen, vilket inte är lämpligt. Tack på förhand!

Permalänk
Medlem
Skrivet av csmannen:

Här är den nya rätta koden: http://pastie.org/1509094 Dock vilja ha den i en tabell, hur löser jag det? Jag kom nu på att mina föregående kod skriver ut allt i databasen, vilket inte är lämpligt. Tack på förhand!

Du skulle kunna testa det här (har dock bara kört koden i huvudet)

<?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $query = "SELECT namn, pengar, sort FROM foretag ORDER BY id DESC LIMIT 5 "; $result = mysql_query($query) or die(mysql_error()); echo "<table><tr><td>Namn</td><td>Pengar</td><td>Sort</td></tr>"; //Rubriker while($row = mysql_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['namn'] . "</td><td>" . $row['pengar'] . "</td><td>" . $row['sort'] . "</td>"; echo "<tr/>"; } echo "</table>"; ?>

Visa signatur

Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Medlem

Tack Joppis, det fungerar grymt bra! Vet du hur jag sorterar på de äldsta, det vill säga motsatsen till desc? Någon annan som kanske vet?

Permalänk
Medlem
Skrivet av csmannen:

Tack Joppis, det fungerar grymt bra! Vet du hur jag sorterar på de äldsta, det vill säga motsatsen till desc? Någon annan som kanske vet?

Absolut. Byt ut DESC mot ASC.

Visa signatur

Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Medlem

Tack Joppis, igen! Ska nu styla tablen lite, så kommer kanske med lite fler frågor under kvällen/imorgon.

Permalänk
Medlem

Nu har jag lagt till ett fält i databasen som heter link. Det jag nu vill göra är att namn i tabellen ska bli "tryckbar", och ledas till länken som är "släkt" (vad heter det när? ) i databasen. Med släkt menar jag som är på samma rad, hur ska jag förklara?

EDIT: Måste bara säga tack för allt till joppis!

Permalänk
Medlem

Hur du ska förklara är en bra fråga, uppfattade inte riktigt vad du försökte säga. Men om du bara vill ha en länk så kan ju med php istället för att bara skriva ut $row['namn'] istället skriva '<a href="index.php?blabla='.$row['namn'].'">Blabla</a>'. Men eftersom jag inte helt förstod till vad länkarna skall leda så kommer antagligen inte det där att uppfylla alla kriterier

Vill också påpeka att något av det viktigaste att lära sig när det gäller allt inom datortekniken, datatekniken o.s.v. är att kunna söka (t.ex. Googla) efter information. Sjävklart ät det okej att fråga, men t.ex. en sån sak som att ordna ASC istället för DESC (vilket också börde gå att lösa genom att lämna bort DESC helt och inte ersätta något, då ASC är standard) är något som går mycket snabbt och enkelt att hitta svar på!

Permalänk
Medlem

Tack för hjälpen Tazavoo, jo jag vet. Jag kom på det sekunder efter jag skrev det, att desc och asc är simpel information som finns på google). Jag har faktiskt googlat på det mesta andra, men det är svårt att googla, då min engelska är halvdan. Sen har jag svårt att förklara en del saker, vilket du förmodligen märkte!

Permalänk
Medlem

Testa din lösning, och den funkade. Men om jag vill byta ut Blabla mot namn hur gör jag då? Nu ersatte jag blabla med .$row['namn'], men det funkar inte. Jag har även googlat, men utan framgång.

Permalänk
Medlem
Skrivet av csmannen:

Testa din lösning, och den funkade. Men om jag vill byta ut Blabla mot namn hur gör jag då? Nu ersatte jag blabla med .$row['namn'], men det funkar inte. Jag har även googlat, men utan framgång.

Edit, fick det att fungera, jag bytte ut blabla mot '.$row['namn']'.

Permalänk
Medlem

Om jag vill att länken ska bli namnet+.php, hur gör jag då? Jag har testat '<a href="'.$row['namn'].'">'.$row['namn'].' '.php'</a>' , och även att göra en . "". men det fungerar ej. Hur löser vi detta?

Permalänk
Inaktiv

<a href="<?php echo($row['namn'].'.php'); ?>"><?php echo($row['namn']); ?></a>

Borde funka. Du måste använda <?php ?> för att kunna skriva PHP kod

EDIT: Om du skriver ut hela raden med echo kan du testa:

echo('<a href="'.$row['namn'].'.php">'.$row['namn'].'</a>');

Permalänk
Medlem
Skrivet av anon150287:

<a href="<?php echo($row['namn'].'.php'); ?>"><?php echo($row['namn']); ?></a>

Borde funka. Du måste använda <?php ?> för att kunna skriva PHP kod

EDIT: Om du skriver ut hela raden med echo kan du testa:

echo('<a href="'.$row['namn'].'.php">'.$row['namn'].'</a>');

Fungerade tyvärr inte, jag har heller inte lyckats lösa det.

Permalänk
Medlem

Och sen, om jag länkar vidare dem till en sida med mer information som jag hämtar ur samma databas: hur sköter jag sidorna? Jag vill inte göra en ny sida åt varje företag, utan skulle snarare vilja att det sker automatiskt. Jag kom då och tänka på Sessions, men kom inte längre? Kan någon skriva, utan kod, hur jag kan lösa det?

Oj, det här lilla läro-projektet blev ju riktigt kul!

Permalänk
Medlem
Skrivet av csmannen:

Och sen, om jag länkar vidare dem till en sida med mer information som jag hämtar ur samma databas: hur sköter jag sidorna? Jag vill inte göra en ny sida åt varje företag, utan skulle snarare vilja att det sker automatiskt. Jag kom då och tänka på Sessions, men kom inte längre? Kan någon skriva, utan kod, hur jag kan lösa det?

Oj, det här lilla läro-projektet blev ju riktigt kul!

sida.php?id=<företagsid>

Så får du göra länkarna, och sedan får du skapa en sida.php där du gör något vettigt med idt. Exempelvis hämtar mer info om företaget med det idt.

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem

echo('<a href="'.$row['namn'].'.php">'.$row['namn'].'</a>');

Den här som skrevs tidigare borde fungera, fungerade i alla fall för mig. Ifall du fick den att fungera så är allt okej, om inte, posta en del av din kod så kan vi se vad som är fel.

Om du hämtar informationen ur en databas gör du som ToJa92 skrev. Något i stil med:

echo('<a href="foretag.php?name='.$row['namn'].'.php">'.$row['namn'].'</a>'); //Om företaget t.ex. heter inet så leder länken till foretag.php?name=inet //Din foretag.php gör du sedan som du vill, men något i stil med if(isset($_GET['namn'])) { //Kollar om ett namn är angivet echo "Välkommen till ".$_GET['namn']."s företagssida!"; /*Här kan du skriva ut mera information som du fått från din databas, där du selectar de fields du vill använda och "WHERE `namn` = ".$_GET['namn']" */ }

Har inte testat något av koden, men hoppas den ger dej ett hum om hur du skall fortsätta

Permalänk
Medlem

Tack killar, nu har jag börjat få hum om hur det fungerar. Det ända som jag inte riktigt förstår mig på är följande: låt oss säga att någon har tryckt på ica, och pekas där till foretag.php.php?id=ica. Den sidan personen kommer till, måste jag skapa den själv, eller "görs den själv"? Dörmodligen inte va?

Och sen, när jag sen leds till ica:s sida, kommer namn fortfarande vara ica? Kanske du fråga?

Ska experimentera mer ikväll, men funderade lite under frukosten.

Permalänk
Medlem

Sidan foretag.php får du laga själv. $row['namn'] kommer inte mera att vara 'ica', däremot står ju 'ica' i länkadressen. I det här fallet är namnet sparat i variabeln 'id' (?id=ica), och du kommer åt värdet på 'id' med funktionen $_GET['id'].

Jag vet inte hur insatt du är i variabler i adressfältet, men efter t.ex. foretag.php vilket är filnamnet på sidan som visas så inleder du variabler med ?, därefter variabelnamn, =-tecken och värde. T.ex. foretag.php?id=ica. Namnet 'id' kan lika gärna vara t.ex. 'namn'. Ska du ha flera variabler har du ett &-tecken emellan, typ: www.minsida.com/foretag.php?namn=ica&kund=henrik_karlsson&tem....

När du väl vidarebefodrats till din foretag.php kan du med hjälp av variabeln i adressfältet välja den informationen ur din databas som hör till det företaget, och presentera den på sidan på valfritt sätt.

Permalänk
Medlem

Nu har jag testat lite med id, men kört fast. Som grädde på moset raderade jag även min kod :(. Dock är den nästan återställd, dock heter länkarna fortfarande blabla, och inte företagets namn. Det här löste jag innan, men inte nu. Kod: http://pastie.org/1512006

Sen, id. Jag har körfast och kommer ingen vart. Har förstått att man hämtar id från url via:

if(isset($_GET['namn']))

stämmer det?

Nu när jag testar tazavvo's lösning kommer jag till en blank sida. Hur kan jag fixa det? Enligt mig, iofs gröning inom php, ser det bra ut. Hur fixar vi det här?

Tack Tazavoo för att du hjälper mig!

Nu har jag lagt in det:

<? echo $_GET['id']; ?>

i foretag1.php, men när jag klickar så skrivs inte t.ex. inet om jag klickade på inet i tabellen, vad göra jag för fel?

EDIT2: Skrev:

<?php
if(isset($_GET['id'])){

echo $_GET['id'] . " välkomnar dig!";

}

?>

Och nu funkar det, nu ska jag bara göra en table med alla information i databasen!

Permalänk
Medlem

Nu har jag gjort en query som utnyttjar id:t i URL:n. Dock fungerar inte det.

Kod:

$query = "SELECT namn, maxpengar, minpengar, sort FROM foretag WHERE 'namn' = ".$_GET['namn']" ORDER BY id DESC LIMIT 5 ";

Permalänk
Medlem
Skrivet av csmannen:

Nu har jag gjort en query som utnyttjar id:t i URL:n. Dock fungerar inte det.

Kod:

$query = "SELECT namn, maxpengar, minpengar, sort FROM foretag WHERE 'namn' = ".$_GET['namn']" ORDER BY id DESC LIMIT 5 ";

bör nog vara

$query = "SELECT namn, maxpengar, minpengar, sort FROM foretag WHERE namn = '".$_GET['namn']."'";

EDIT: hade glömt att lägga till en saknad punkt.

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

Kul att se att du gör framsteg medan du väntar på svar!

if(isset($_GET['id'])

Kollar ifall variabeln id har ett värde (if the variable is set). Genom att ha denna if-sats eliminerar du eventuella problem med att man går till foretag.php, men att variabeln inte har något värde.

Angående din query - jag ser inget direkt fel i den - tanken är i alla fall rätt! Det som kan vara felet är avsaknad av enkla citattecken/för många enkla citattecken/fel sorts enkla citattecken. I vissa fall har jag varit tvungen att använda ` istället för ' (knappen till vänster om backspace). Annars kan du testa att lägga till enkla citattecken runt $_GET['namn'] så att det istället för ('namn' = ".$_GET['namn']." ORDER...) står ('namn' = '".$_GET['namn']."' ORDER...). Leta upp något exempel på internet och jämför med detta!

Permalänk
Medlem

Får inte queryn att fungera. Har jämfört mot flera exempel på internet, men hittar dock inte något exempel som använder $_GET. Kan någon vänliga själ kolla igenom min query? KOD: http://pastie.org/1512672

Sen vill jag byta ut "blabla" (se kod), mot .$row['namn']. , när jag byter ut blabla mot det funkar det inte. Det är alltså en länk som jag vill byta namn på.

Tack för all hjälp alla! Verkligen bra för mig som är ny inom php/mysql.