Avatar billede farhang Nybegynder
06. august 2007 - 22:27 Der er 5 kommentarer

Gemme session udefra data fra mysql!

Min kode ser sådan ud:

<?php

  $regionsql = "SELECT * FROM region";
 
  $result = mysql_query($regionsql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $region[$row['regionID']] = $row['regionNavn'];
  }

  switch ($_GET['action']) {
    case "edit":
      $usersql = "SELECT * FROM user";
      $result = mysql_query($usersql)
        or die("Invalid query: " . mysql_error());
      $row = mysql_fetch_array($result);
      $regionID = $row['regionNavn'];
      break;
     
    default:
      $regionID = "";
      break;
  }
?>
<select name="region">
  <option value="<?php echo $regionID; ?>" selected>Vælg en region</option>
  <?php
  foreach ($region as $regionID => $regionNavn) {
    if ($regionID == $regionNavn) {
      $selected = "$regionID";
    } else {
      $selected = "";
    }
?>
  <option value="<?php echo $regionID; ?>"<?php
        echo $selected; ?>><?php echo $regionNavn; ?></option>
  <?php
  }
?>
</select>

Hvad gør man?
Avatar billede mstorgaard Praktikant
06. august 2007 - 23:30 #1
Vil du have gemt $regionID som session?
Avatar billede mstorgaard Praktikant
06. august 2007 - 23:32 #2
For så er det vel bare at sætte session_start(); i starten af filen og så sætte $_SESSION['regionID'] = $regionID; der hvor du køber din form gennem php'en.
Avatar billede farhang Nybegynder
07. august 2007 - 13:52 #3
Jeg har gjort følgende:

Side1:
<?php

  $regionsql = "SELECT * FROM region";
 
  $result = mysql_query($regionsql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $region[$row['regionID']] = $row['regionNavn'];
  }

  switch ($_GET['action']) {
    case "edit":
      $usersql = "SELECT * FROM user";
      $result = mysql_query($usersql)
        or die("Invalid query: " . mysql_error());
      $row = mysql_fetch_array($result);
      $regionID = $row['regionNavn'];
      break;
     
    default:
      $regionID = "";
      break;
  }
?>
<select name="region">
  <option value="<?php echo $regionID; ?>" selected>Vælg en region</option>
  <?php
  foreach ($region as $regionID => $regionNavn) {
    if ($regionID == $regionNavn) {
      $selected = "$regionID";
    } else {
      $selected = "";
    }
?>
  <option value="<?php echo $regionID; ?>"<?php
        echo $selected; ?>><?php echo $regionNavn; ?></option>
  <?php
  }
?>
</select>

Side2:
<?
session_start();
$_SESSION['region'] = $region;
?>

Side3:
<?php
session_start();
?>
<?php

  $regionsql = "SELECT * FROM region";
 
  $result = mysql_query($regionsql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $region[$row['regionID']] = $row['regionNavn'];
  }

  switch ($_GET['action']) {
    case "edit":
      $usersql = "SELECT * FROM user";
      $result = mysql_query($usersql)
        or die("Invalid query: " . mysql_error());
      $row = mysql_fetch_array($result);
      $regionID = $row['regionNavn'];
      break;
     
    default:
      $regionID = "";
      break;
  }
?>
<select name="region">
  <option value="<?php echo $_SESSION['region']; ?>" selected><?php echo $_SESSION['region']; ?></option>
  <?php
  foreach ($region as $regionID => $regionNavn) {
    if ($regionID == $regionNavn) {
      $selected = "$regionID";
    } else {
      $selected = "";
    }
?>
  <option value="<?php echo $regionID; ?>"<?php
        echo $selected; ?>><?php echo $regionNavn; ?></option>
  <?php
  }
?>
</select>

Det fungerer ok, men jeg får udskrevet regionID, som bliver gemt i databasen senere. Brugerne skal dog kun får udskrevet reginNavn til den tilhørende regionID.

Hvordan gør man det?
Avatar billede mstorgaard Praktikant
07. august 2007 - 14:47 #4
Så er det bare at connecte til databasen igen og hente navnet ud, hvor id'et er regionID.
Avatar billede farhang Nybegynder
11. august 2007 - 14:29 #5
Ja, det virker nu, men jeg skal også bruge hjælp til update function, hvilke sletter det gemte data:

redigerprofil.php:
<?php
$field=explode(',','userID,brugernavn,email,kodeord,sex,usergroupID,fornavn,efternavn,birthday,birthmonth,birthyear,coadresse,adresse,cityID,regionID,country,telefon,mobil,statusID');

foreach ($_REQUEST as $key=>$value)
{
    if (in_array($key,$field))
    {
        mysql_query( "UPDATE user SET `$key`='$value' where `userID`='$_SESSION[suid]';");       
        //print( "UPDATE user SET `$key`='$value' where `userID`='$_SESSION[suid]';\n");       
    }
   
}
?>
<?php

$sql = "SELECT * FROM user WHERE userID = '$_SESSION[suid]'";
//echo $sql;
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($q);
//echo "<pre>";
//print_r($row);
?>
<form action="redigerprofil.php" method="post">
<input type="hidden" value="<?php echo $row['userID']; ?>" name="userID" size="1" />
<?php
  $usergroupsql = "SELECT * FROM usergroup";
 
  $result = mysql_query($usergroupsql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $usergroup[$row['usergroupID']] = $row['usergroupNavn'];
  }

  switch ($_GET['action']) {
    case "edit":
      $usersql = "SELECT * FROM user";
      $result = mysql_query($usersql)
        or die("Invalid query: " . mysql_error());
      $row = mysql_fetch_array($result);
      $usergroupID = $row['usergroupNavn'];
      break;
     
    default:
      $usergroupID = "";
      break;
  }
?>
<?
$sql = "SELECT * FROM user WHERE userID = '$_SESSION[suid]'";
//echo $sql;
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($q);
//echo "<pre>";
//print_r($row);
?>
<select name="usergroupID">
<?
$usergroupID = $row['usergroupID'];
$queryusergroup = "SELECT usergroupNavn FROM usergroup WHERE usergroupID = $usergroupID";
$results = mysql_query($queryusergroup)
  or die(mysql_error());
$row = mysql_fetch_array($results);  ?>
<option value="<?php echo $row['usergroupID']; ?>" selected>
<?
$queryusergroup = "SELECT usergroupNavn FROM usergroup WHERE usergroupID = '$usergroupID'";
$results = mysql_query($queryusergroup)
  or die(mysql_error());
$row = mysql_fetch_array($results); 
echo $row['usergroupNavn'] . "";
echo '</option>';
?> 
  <?php
  foreach ($usergroup as $usergroupID => $usergroupNavn) {
    if ($usergroupID == $usergroupNavn) {
      $selected = "$usergroupID";
    } else {
      $selected = "";
    }
?>
  <option value="<?php echo $usergroupID; ?>"<?php
        echo $selected; ?>><?php echo $usergroupNavn; ?></option>
  <?php
  }
?>
</select>

Hvad gør jeg forkert?
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