Avatar billede jens117 Nybegynder
17. august 2009 - 21:37 Der er 5 kommentarer

Gemme variabler til brug til i ny foresp. hvor foresp. der er i "iframe". Uden brug af session.

Hej alle.
Jeg har det problem, at jeg skal gemme en variabel fra et db-udtræk til senere brug, som jeg ønsker at bruge i iframe.
Koden er:
elseif($id ==50)
    {
   
    $id = $_GET['id'];
   
    $statement = "select * FROM timby WHERE id='$id'";
            $result = mysql_query($statement);
            $timby = mysql_fetch_array($result);
           
            $dbnavn = $timby['dbnavn']; //Denne variabel skal gemmes og bruges i en ny MySQL-foresp. i nyheder, der laves som: "<iframe src=\"nyheder.php\" width=\"100%\" height=\"390\" frameborder=\"0\" allowtransparency=\"true\"></iframe>
           
Ingen problemer hertil:

Kode på foresp. i nyheder er:
      include "serverconnect.php";
      $id = $_GET['id'];
      $dbnavn = $_GET['dbnavn'];
      $nyheder = mysql_query("SELECT * FROM $dbnavn ORDER BY id DESC LIMIT 0,3") OR die(mysql_error());
      while($data_nyheder=mysql_fetch_array($nyheder))
     
Hvorfor kan scriptet ikke finde $dbnavn?

Laver jeg det som include virker det perfekt.
Skriver jeg navnet på databasen som ex: $dbnavn="nyheder50"; virker det også perfekt
Jeg har forsøgt med session og det virker også, men det skal ikke være en session løsning pga. andre "problemer"
   

Håber der er en der kan hjælpe mig.
Avatar billede keysersoze Guru
17. august 2009 - 22:47 #1
hvis jeg forstår dit setup korrekt, du er nødt til at videreføre variablen på en eller anden måde og det gør du ikke i ovenstående kode. Din hovedside og din iframe er i bund og grund to selvstændige vinduer - modsat hvis du bruger include hvor alt samles i ét - og det kræver altså parameteroverførsel, hvor en session som du selv siger er én af dem og en anden mulighed er en querystring (nyheder.php?id=50).

En helt anden diskution er så om hvorvidt en iframe i det hele taget er nødvendig - som udgangspunkt er iframes i hvert fald sjældent et optimalt valg medmindre der skal vises indhold fra et andet domain.
Avatar billede Slettet bruger
17. august 2009 - 23:05 #2
Du skal som sagt kun bruge iframes hvis du skal vise ting fra andre sider.

Du kan nemt opnå samme effekt som en iframe har ved almindelig css. Et div-tag og følgende linje CSS does the trick:

overflow: auto;

Du skal bare huske at definere højde og bredde på div tagget også...
Avatar billede jens117 Nybegynder
20. august 2009 - 11:06 #3
Hej igen.

Det er korrekt som keysersoze skriver, at jeg har brug for at videreføre variablen på en eller anden måde og det gør jeg ikke med den kode jeg har.
Jeg har tænkt, at jeg kan lave  $dbnavn = $_GET['dbnavn']; om til et GLOBAL var, men jeg ved ikke hvordan jeg skal gøre det. Hjælp ønskes. TAK.
Jeg er 'gået væk fra' at lave det i iframe, men har stadig brug for at kunne hente værdien af $dbnavn til en ny popup-side.
Desuden har alle brugerne en table der hedder: nyheder efterfuldt af deres id. Denne oplysning kan måske bruges?
Håber disse oplysninger kan bruges.

Hej igen
Avatar billede keysersoze Guru
20. august 2009 - 18:07 #4
iframe eller popup - problematikken er den samme. Variabler er til brug internt på en kørsel og det er ikke det du gør med iframe/popup så de muligheder du reelt har er sessions og querystrings - andre muligheder, fx applications variabler, kan enten ikke bruges da variablen fx ikke føres videre eller deles blandt samtlige brugere.

forskellige scopes for variabler kan du læse om her; http://dk2.php.net/manual/en/language.variables.scope.php

Så kan du selvfølgelig gemme informationerne i en database - altså i stedet for i en session så en kolonne specifikt for den bruger men det er betydeligt tungere og stiller også krav til oprydning i databasen.

Hvad er problematikken forbundet med at bruge querystrings/sessions?
Avatar billede keysersoze Guru
29. december 2009 - 11:19 #5
lukketid?
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