Avatar billede ullers Nybegynder
10. september 2002 - 21:17 Der er 15 kommentarer og
1 løsning

variabel sjov

Henter udtræk fra mysqldb.
while (list ($linknavn) = mysql_fetch_row($result)){

$count = $i++;
$linknavn
}

Jeg vil gerne have at efterhånden som min løkke kører bliver der sat en variabel link1, link2.....osv.

Således at f.eks første gang løkken kører får jeg

link1 = $linknavn

næste gang

link2 = $linknavn osv.

Hvordan kommer jeg videre ?
Avatar billede coderdk Praktikant
10. september 2002 - 21:24 #1
Hvad med arrays:

$link[1] = $linknavn;

generelt putter du bare mere på arrayet sådan:

$link[] = $linknavn;

Så kan du se hvor mange der er med count($link); Og tilgå dem ved $link[X] hvor X er 0 til antallet-1
Avatar billede ullers Nybegynder
10. september 2002 - 21:30 #2
Jeg fatter det ikke 100% kunne du vise lidt?
Avatar billede ullers Nybegynder
10. september 2002 - 21:38 #3
Mit problem er måske mere hvordan jeg sætter en variabel = en helmasse variabler
F.eks:
$linknavn = $kategori$count hvis nu $kategori = aktuelt og $count=1 og jeg echo'ede $linknavn så vil jeg gerne have -> aktuelt1
Avatar billede yaief Nybegynder
10. september 2002 - 22:34 #4
Sådan laver du en bunke variabler:
for ($i = 0; $i < 100; $i++)
${"test".$i} = $whatever;

Så i dit tilfælde ville det vel være noget i stil med:
${"link".$count} = hvad du henter fra db

Mere om det her -http://www.php.net/manual/en/language.variables.variable.php - hvis det altså var det du mente =)
Avatar billede yaief Nybegynder
10. september 2002 - 22:35 #5
Forøvrigt ... så kommer variablerne jo til at hedde $link0, $link1 osv
Avatar billede Slettet bruger
11. september 2002 - 08:30 #6
eller den mere gammeldags løsning
for ($i = 0; $i < 100; $i++){
  $tempVar = 'link'.$i;
  $$tempVar = $linknavn;
}
Det giver samme resultat: variablerne link0, link1 ... link99
Avatar billede ullers Nybegynder
11. september 2002 - 11:57 #7
Tak til jer alle!!
Nu har jeg forsøgt med yaief svar og jenspo svar, det bliver nogle mærkelige output jeg får, når jeg echo'er:
Nu har jeg selv fundet en løsning der virker, men den er vist meget omstændelig (overkill):
Kan en af jer omsætte den til jeres forslag vil jeg blive meget glad:
NB: jeg ved at der højest kommer fem records ud af DB.
include "connect.inc";
$query = "SELECT linknavn,refnr,kat,status FROM main WHERE status = 'on' AND kat = 'aktuelt' ORDER BY id desc";
$result = mysql_query($query) or exit ("Fejl: kunne ikke køre");
$aktuelt_antal_underlinks = mysql_num_rows($result);
while (list ($linknavn) = mysql_fetch_row($result)){
            $count = $i++;
            if ($count == 1){
            $aktuel_link1_linkheader = $linknavn;
            $aktuel_link1_refnr = $refnr;
            ${"link".$count} = hvad du henter fra db   
            }
            else if ($count == 2){
            $aktuel_link2_linkheader = $linknavn;
            $aktuel_link2_refnr = $refnr;
               
            }
            else if ($count == 3){
            $aktuel_link3_linkheader = $linknavn;
            }
            else if ($count == 4){
            $aktuel_link3_linkheader = $linknavn;
            }
            else if ($count == 5){
            $aktuel_link3_linkheader = $linknavn;
            }
            }
Avatar billede ullers Nybegynder
11. september 2002 - 11:59 #8
ups lige en tilføjelse:
$aktuel_link1_refnr = $refnr; -> de steder hvor det står skal i bare ignorere!!!
Avatar billede ullers Nybegynder
11. september 2002 - 12:02 #9
I får lige det rigtige:
if ($count == 1){
            $aktuel_link1_linkheader = $linknavn;
            }
            else if ($count == 2){
            $aktuel_link2_linkheader = $linknavn;
            }
            else if ($count == 3){
            $aktuel_link3_linkheader = $linknavn;
            }
            else if ($count == 4){
            $aktuel_link4_linkheader = $linknavn;
            }
            else if ($count == 5){
            $aktuel_link5_linkheader = $linknavn;
            }
            }
Avatar billede yaief Nybegynder
11. september 2002 - 12:10 #10
LOL - og det var så det der skulle se sådan her ud =)

${"aktuel_link".$count."_linkheader"} = $linknavn;
Avatar billede ullers Nybegynder
11. september 2002 - 14:39 #11
Hej yaief
Du må bære over med mig er lidt grøn...!!
Hvis jeg kører dette script:
while (list ($linknavn) = mysql_fetch_row($result)){
            $count = $i++;
            ${"aktuel_link".$count."_linkheader"} = $linknavn;
            echo $aktuel_link1_linkheader;
           
            }
Så får jeg rigtig nok min første record ud, MEN tre gange?
Avatar billede yaief Nybegynder
11. september 2002 - 15:41 #12
Det er nok fordi, $count har samme værdi hver gang.

Gør det her:

$count = 1;
while (list ($linknavn) = mysql_fetch_row($result))
      {
      ${"aktuel_link".$count."_linkheader"} = $linknavn;
      echo $aktuel_link1_linkheader;
      $count++;
      }
Avatar billede ullers Nybegynder
11. september 2002 - 21:02 #13
Hej yaief-> point til dig for din ihærdige indsats, og tak til alle!!!
Så kører det!!: Der skal echo'es uden for løkken(logisk nok)
while (list ($linknavn) = mysql_fetch_row($result))
{
$count = 1+$i++;
${"aktuel_link".$count."_linkheader"} = $linknavn;
     
}
echo $aktuel_link1_linkheader;
Avatar billede yaief Nybegynder
11. september 2002 - 22:55 #14
Heh - det var da så lidt =) Fandt selv ud af det med variable variabler ved at spørge på eksperten.

Men dit script giver altså stadig ikke alt for meget mening - hvor fanden får du $i fra? :-)
Avatar billede Slettet bruger
12. september 2002 - 08:07 #15
Ja Yaief har ret. Du bør initialisere $i før du starter løkken.
$i = 0; er standard
eller $i = 1; hvis du har brug for at starte med 1 istedet for 0.

Hvis den ikke initialeseres kan du komme til at give den en anden værdi tidligere i koden, og så fungere intet.

Den pæne version af den kode du har fået til at virke er:

for ($i = 0;
  list ($linknavn) = mysql_fetch_row(result);
  $i++)
{
  ${"aktuel_link".$count."_linkheader"} = $linknavn;
}

echo $aktuel_link0_linkheader;

Det forvirre dig måske mere end det hjælper!?
Avatar billede Slettet bruger
12. september 2002 - 08:08 #16
ups.
koden inde i lykken skal være:

${"aktuel_link".$i."_linkheader"} = $linknavn;
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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