Avatar billede nardus Nybegynder
08. april 2005 - 15:31 Der er 5 kommentarer og
1 løsning

Array vises i stedet for et tal

Hej!

Jeg er ret ny til PHP og mySQL.

Jeg sidder med nedenstående stump kode:

---------------------
<?
  require("../config.php");
  connect();
  $nyeste = mysql_query("SELECT * FROM redir ORDER BY id DESC LIMIT 1") or die(mysql_error());
  $resultat = mysql_fetch_array($nyeste);
  echo "<a href=\"http://url/go.php?id=$resultat\">Nyt link</a>";
    mysql_close();
?>
---------------------
Probemet er, at den URL, der dannes, når scriptet kørers ikke fungerer. $resultat bliver erstattet af 'Array'. Hvordan kan jeg få den til at vise det ene resultat (der er tale om et tal), som jeg kunne tænke mig at få ud?
Avatar billede bromer Nybegynder
08. april 2005 - 15:33 #1
<?
  require("../config.php");
  connect();
  $nyeste = mysql_query("SELECT * FROM redir ORDER BY id DESC LIMIT 1") or die(mysql_error());
  $resultat = mysql_fetch_array($nyeste);
  echo "<a href=\"http://url/go.php?id=" . $resultat['id'] . "\">Nyt link</a>";
    mysql_close();
?>
Avatar billede bromer Nybegynder
08. april 2005 - 15:35 #2
Forklaringen er at når du henter data med mysql_fetch_array() får du som navnet antyder et array. For at bruge kolonnen id skal du tilgå array'et på plads 'id'. Det gør du med $resultat['id'].
Avatar billede bromer Nybegynder
08. april 2005 - 15:35 #3
Den printer "Array", fordi den ikke aner, hvordan den ellers skulle printe den idet det jo er en mere kompliceret struktur en et tal eller en streng. Og så ikke lige flere indlæg fra min side :)
Avatar billede bromer Nybegynder
08. april 2005 - 15:39 #4
Der er flere punkter hvor man kunne lave din kode om. Du laver en order by id desc limit 1. Det er altså fordi du vil have den højeste værdi i id-kolonnen. Det kan man bruge MAX() funktionen til. Dertil udvælger du kun eet felt så der er ingen grund til at benytte mysql_fetch_array når man har mysql_fetch_result. Det vil ændre din kode til:

<?
  require("../config.php");
  connect();
  $nyeste = mysql_query("SELECT MAX(id) from redir") or die(mysql_error());
  $resultat = mysql_result($nyeste,0);
  echo "<a href=\"http://url/go.php?id=$resultat\">Nyt link</a>";
    mysql_close();
?>

Det er kortere og pænere :)
Avatar billede nardus Nybegynder
08. april 2005 - 15:49 #5
Mange tak for det. Hvorfor er det $nyeste,0 og ikke bare $nyeste?
Avatar billede bromer Nybegynder
08. april 2005 - 15:53 #6
Det synes jeg du skal læse på manualsiden: http://dk2.php.net/mysql_result
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester