webForumDet fria alternativet

array?

PHP

10 svar · 491 visningar · startad av AndreasC

Medlem sedan mars 20011 964 inlägg
Frågan#1

Jag försöker hämta en radserie från mySQL och få den som en array på en websida men vet inte riktigt hur jag ska lösa det.

Jag har en db tabell som innehåller ett antal rader. Varje rad består av en url. Vad jag vill göra är att hämta dessa rader och göra någon typ av array som jag sedan lägger i en variabel. På websidan vill jag sedan hämta in denna variabel för en serie med <a href="">-taggar så varje länk får en url tilldelad från databasen. URL'erna ska tilldelas i den ordning som de står i databasen.

Har suttit i flera timmar med detta men kan inte få någon kod att fungera. Vet inte vad jag gör fel. Hur kan jag skriva? Jag vet att det inte krävs mycket kod för att detta ska fungera men jag lyckas ändå inte.

EDIT: Ska tilläggas att jag har två kolumner i databasen. En kolumn med ID och en kolumn med URL.

Medlem sedan aug. 201035 inlägg
#2

en loop med mysql_fetch_array borde fixa biffen =)

t.ex.

$urls = array();
$result_set = mysql_query("SELECT id, url FROM links ");

while($fetched_row = mysql_fetch_array($result_set))
{
  $urls[$fetched_row['id']] = $fetched_row['url'];
}

foreach ($urls as $id => $url)
{
  echo "<a href='".$url."'>".$id."</a>";
}

Nu lagras data:t i en array innan det printas ut, alternativt kan du ju printa ut allt direkt.

Medlem sedan mars 20011 964 inlägg
#3

Jag har nu satt upp koden såhär

<?php

    /**
     * Return an Array of URLS's in the Database
     */

    $urls = array();
    $sql = "SELECT * FROM ".TBL_NAV_URLs_0."";
    $result = mysql_query($sql);
    while($row = mysql_fetch_array($result))
    {
      $urls[$row['urlid']] = $row['url'];
    }

    foreach ($urls as $id => $url)
    {
    }
?>

På websidan där jag vill ha länkarna inkluderar jag ovanstående kod och anger för länkarna

<a href=\"$url\">

Om jag anger det i första koden som du gjorde så fungerar det men inte om jag lägger länkarna utanför första koden så fungerar det inte längre. Istället för url visas Array i webläsaren när jag för muspekaren över länkarna. Det står bara array som URL för alla länkarna.

Hur kan jag få med mig url'erna till mina länkar?

Medlem sedan aug. 201035 inlägg
#4

$urls är en array, så du måste loopa igenom den för att få ut nåt.

$urls[0], $urls[1], $urls[2] etc. etc. fungerar om du vill skriva ut det manuellt

Vill du förresten inte använda dig utav ID:t så kan du ju göra loppen ovan lite kortare.

while($row = mysql_fetch_array($result))
{
      array_push($urls, $row['url']);
}

och då

foreach ($urls as $url)
{
  echo "<a href='".$url."'>";
}
Medlem sedan mars 20011 964 inlägg
#5

Vill du visa bara hur jag skriver? vart skriver jag urls[0], urls[1] osv? I länkarna?

Medlem sedan aug. 201035 inlägg
#6

Det gör du i länkarna :)

<a href=\"".$urls[0]."\">
<a href=\"".$urls[1]."\">
<a href=\"".$urls[2]."\">

Men är det inte smidigare att loopa igenom arrayen?

Medlem sedan mars 20011 964 inlägg
#7

Vet inte vad jag gör för fel. Jag gör som du säger men istället för rätt url så står bara $urls[0], $urls[1] osv för länkarna.

Medlem sedan aug. 201035 inlägg
#8

skriver du det innanför php-taggarna då?

<?php echo "<a href=\"".$urls[0]."\">"; ?>

alt.

<a href="<?php echo $urls[0]; ?>">
Medlem sedan mars 20011 964 inlägg
#9

Hade inte inom php-taggar :/ Nu för jag dock "undefined offset"

Ska det stå något i foreach?

Medlem sedan aug. 201035 inlägg
#10

Om du inte tänker skapa länkarna dynamiskt så behövs inte foreach-loopen.

Ändrade du till nedanstående, så borde det fungera med $urls[0], 1,2,3,etc.

while($row = mysql_fetch_array($result))
{
      array_push($urls, $row['url']);
}
Medlem sedan mars 20011 964 inlägg
#11

Super. Tack :) Nu funkar det perfekt.

249 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)