Avatar billede microjet Nybegynder
07. maj 2009 - 01:12 Der er 14 kommentarer og
2 løsninger

Hvordan sender man interne variabler mellem php-sider

Hejsa

Jeg har bikset et par dage med at sende interne variabler mellem 2 php-sider

Er der en eller anden venlig sjæl der gider lave et mini eks. på hvordan man definere en intern variabel som kan postes til en anden php-side

Ved intern variabel skal forstås, at det er data, som ikke kan ses på siden, men som også skal bruges internt på en anden PHP-side.
Avatar billede arne_v Ekspert
07. maj 2009 - 03:46 #1
Hvis den ikke skal gemmes client side (URL, cookie, hidden field) så er du nødt til at gemme den server side (session).
Avatar billede microjet Nybegynder
07. maj 2009 - 08:20 #2
Hej Arne

Veg var ikke klar over at man kunne gemme den på serveren!.. men det er nu klient side, som URL eller hidden field jeg skal bruge lige nu.

Altså hvis man nu har en variabel der ikke vises i et eller andet felt, hvordan sender man den så videre?

Jeg har et lille php script der åbner en database og indlæser en tabel i en listbox

øverst har jeg defineret en $var1

... men hvordan overføre jeg den til næste side?




KODE:
<html>
<body>
<?

$var1 = "Denne variabel skal sendes videre som URL og hidden";

if(isset($_POST["lbID"]))
{
echo "You have selected ";
echo $_POST["lbID"];
}

else
{
$con = mysql_connect("www.xxxxx.dk","xxxx","xxxx");//åbner database

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

  mysql_select_db("xxxx", $con);
  $sql="SELECT DISTINCT ID FROM Devices";
  $result = mysql_query($sql);

  while ($row=mysql_fetch_array($result))
  {
    $ID=$row["ID"];
    $options.="<option value=\"$ID\">$ID</option>";
    }
   
  mysql_free_result($result);
  mysql_close($con);
?>


<form method=post action=select_iv.php>
<SELECT name ="lbID" size = "10">
<?=$options?>
</select> <br>
<input type=submit value="Select">
</form>

<?
}
?>


</body>
</html>
Avatar billede nemlig Professor
07. maj 2009 - 09:31 #3
Jeg tror det arne_v foreslår med serverside (Session) er en god og nem løsning:

Du starter din php-kode med:

<?php
session_start();
?>
<html>
<body>
<?

$_SESSION['var1'] = "Denne variabel skal sendes videre som SESSION";

.......

Så kan du i din php-fil nr. 2 hente variablen ind.

<?php
session_start();
echo $_SESSION['var1'];

Husk at "session_start()" skal sættes øverst i dit script;
Avatar billede microjet Nybegynder
07. maj 2009 - 13:56 #4
Ja det ville da være ret smart... så vil alle variabler vel egentlig kunne tilgås fra alle script's inden for samme session.

Vil det så sige at hver klient får sit eget sæt variabler lagt på severen hver gang der startes en "session" af script'et.

Er det korrekt forstået?

Jeg afprøver det lidt senere i dag, men tusind tak for jeres input indtil vidre

m.v.h

Tue
Avatar billede nemlig Professor
07. maj 2009 - 14:13 #5
Hej igen.
Jeg kan ikke give dig den tekniske forklaring på Session, men Arne_v plejer at værre god for en forklaring eller en henvisning.
Uanset den tekniske forklaring, så får browseren tildelt et unikt id, hvorfor serveren kan holde variablerne adskilt.
Avatar billede microjet Nybegynder
07. maj 2009 - 22:38 #6
Kanon!... det virker bare perfekt!... super med et simpelt eksempel

jeg har yderlige 2 spørgsmål....

1) hvordan gemmer man et valg i en listbox som session... skal man fange $_POST på den side man sender til og så gemme variablen som sesssion... eller kan man gøre det før man "poster". dvs i det script man udføre valget?

2) Kan man i ren PHP lave en "onClick event", således at man blot behøver at klikke på teksten i listboxen for at hoppe videre til næste side?... altså uden en submit knap
Avatar billede microjet Nybegynder
07. maj 2009 - 22:55 #7
Spørgsmål 1 har jeg fundet ud af

script1.php:
$_SESSION['ListBox1'];

//definere blot en variabel med samme navn som min listbox = 'ListBox1'


script2.php:
echo $_SESSION['ListBox1'];
//henter værdien med $_session..

men spørgsmål 2 har jeg rodet en del med.. syntes hele tiden jeg havner i noget java, ajax o.lign.

Håber du har et godt forslag ;-)
Avatar billede microjet Nybegynder
07. maj 2009 - 23:27 #8
Jeg har lige teset lidt mere på spørgsmål 1, og der er lidt problemer med isset... jeg kan godt få ListBox værdien med echo, men isset er "false"????
Avatar billede simtex Nybegynder
08. maj 2009 - 02:17 #9
<select name="bla" size="3" id="bla">
    <option value="item1">item1</option>
    <option value="item2" onclick="document.location.href='http://google.com'">item2</option>
</select>
Simple kode der kan videresende dig til en anden side når du klikker på en item i en listbox.
Avatar billede webweaver Praktikant
09. maj 2009 - 11:19 #10
Når du har en select, så har den et navn.

Så det er bare ligesom med alle andre input felter.

$_SESSION['listbox'] = $_POST['listbox'];

echo $_SESSION['listbox]; vil så vise det valgte punkt.
Avatar billede arne_v Ekspert
11. maj 2009 - 02:56 #11
Generelt virker session ved at:
* ved session start generereres der på server et meget stort tilfældigt id (typisk 128, 160 eller lignende antal bit)
* dette tal sendes tilbage til browseren (typisk i form af en cookie, men det kan også embeddes i URL)
* serveren har så en data struktur server side identificeret ved det id (data strukturen gemmes tyoisk i memory, men kan også gemmes på disk)
* alle nye requests fra browser i samme session sender så det id med og serveren bruger det til at finde den pågældende sessions data struktur
Avatar billede nemlig Professor
11. maj 2009 - 07:53 #12
Så blev den ged vist barberet!
Har du fået styr på tingene, og er det OK, at vi sender et svar, så du kan tildele point?
Avatar billede nemlig Professor
23. maj 2009 - 10:46 #13
Hejsa.
Du mangler at afslutte spørgsmålet og tildele point.
Avatar billede microjet Nybegynder
26. maj 2009 - 11:59 #14
Ok men jeg kan jo ikke tildele dig nogle point, hvis du ikek poster et svar! :-)
Avatar billede nemlig Professor
26. maj 2009 - 12:39 #15
Det plejer at være sådan, at når man har fået den hjælp, som man efterlyste, at man lige skriver, at udfordringen er løst og at der må svares. Dette er ikke sket endnu....:)
Derfor har arne_v givet vis heller ikke svaret.
Når dem, som du vil tildele point har svaret, kan du tildele point.
Så du får hermed mit svar.
Avatar billede microjet Nybegynder
26. maj 2009 - 12:42 #16
Jeps! Jeg har vist ikke rigtig fået meldt tilbage, men jeg fik svar på alle mine spørgsmål..

Så tak for hjælpen!
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