Avatar billede warberg Juniormester
12. marts 2003 - 13:03 Der er 24 kommentarer og
2 løsninger

Extract fejl

Følgende giver fejl:

require("db_ind.inc");
$get_data = mysql_query("SELECT * FROM profiler WHERE username = '$username'");

$row = mysql_fetch_array($get_data);
extract($row);


First argument should be an array.
??
Avatar billede avminarm Juniormester
12. marts 2003 - 13:38 #1
har du prøvet med:
while($row = mysql_fetch_array($get_data)){
extract($row);
}
Avatar billede warberg Juniormester
12. marts 2003 - 14:45 #2
Det hjælper, men ikke nok!

Måske jeg skal uddybe...
Min php er blevet opgraderet, og det giver lidt kage.

username kommer fra et login-felt:
<input type="text" name="username">

når jeg senere vil udskrive fra $row fx.
<? print $row[username] ?>

kommer der ingenting.
Avatar billede avminarm Juniormester
12. marts 2003 - 15:03 #3
når du bruger extract udskriver du bare variablen <? print $username; ?>
Avatar billede avminarm Juniormester
12. marts 2003 - 15:04 #4
altså sådan her - det er det der er fidusen ved extract
while($row = mysql_fetch_array($get_data)){
extract($row);
print $username;
}
Avatar billede thomashove Nybegynder
12. marts 2003 - 15:20 #5
det er altid en god idé at skrive evt. fejl ud fra en mysql query f.eks.

$get_data = mysql_query("SELECT * FROM profiler WHERE username = '$username'");
if (!($get_data))
{
  echo(mysql_error());
}
else
{
    while($row = mysql_fetch_array($get_data)){
      extract($row);
    }
}

dermed kan du se hvis der går noget galt i din query...
Avatar billede thomashove Nybegynder
12. marts 2003 - 15:30 #6
du skal også huske at i de nye versioner af php er register globals sat til off i php.ini. Dvs at du ikke kan tilgå dine variable direkte med f.eks.

$username

men er nødt til at bruge enten

$_GET['username']

eller

$_POST['username']

alt efter om du bruger GET eller POST

du kan læse mere her :

http://www.php.net/manual/en/language.variables.predefined.php
Avatar billede warberg Juniormester
12. marts 2003 - 15:33 #7
Okay, jeg har indsat if (!($get_data)) {echo(mysql_error());
Det giver ingen fejl.

Men print $username; giver stadig ingenting?
Avatar billede thomashove Nybegynder
12. marts 2003 - 15:38 #8
hvad med

echo ($_GET['username']);
Avatar billede warberg Juniormester
12. marts 2003 - 15:38 #9
Jeg bruger GET

Dvs. når jeg vil udskrive username skal jeg bruge

print $_GET['username'];

Skal det sættes andre steder?
Avatar billede warberg Juniormester
12. marts 2003 - 15:40 #10
Det bliver fuldstændig ignoreret
Avatar billede avminarm Juniormester
12. marts 2003 - 15:43 #11
du skal rette:
WHERE username = '$username'");

til
WHERE username = '".$_GET['username']."'");
Avatar billede avminarm Juniormester
12. marts 2003 - 15:45 #12
men det er jo kuhn hvis du bruger method=GET hvis du bruger post skal du rette til:
til
WHERE username = '".$_POST['username']."'");

Læs evt. på www.wagners.dk/php
Avatar billede warberg Juniormester
12. marts 2003 - 15:59 #13
Jeg har nu følgende:

$get_data = mysql_query("SELECT * FROM profiler WHERE username = '".$_GET['username']."'");


if (!($get_data))
{
  echo(mysql_error());
}

else
{
    while($row = mysql_fetch_array($get_data)){
      extract($row);
    }
}

echo ($_GET['username']);

if (!($_GET['get_data']))
{
  echo(mysql_error());
}
else
{
    while($row = mysql_fetch_array($get_data)){
      extract($row);
    }
}

echo ($_GET['username']);
Avatar billede warberg Juniormester
12. marts 2003 - 16:00 #14
Hov, ignorer lige den... Her:

$get_data = mysql_query("SELECT * FROM profiler WHERE username = '".$_GET['username']."'");


if (!($get_data))
{
  echo(mysql_error());
}

else
{
    while($row = mysql_fetch_array($get_data)){
      extract($row);
    }
}

echo ($_GET['username']);
Avatar billede thomashove Nybegynder
12. marts 2003 - 16:08 #15
denne linie

echo ($_GET['username']);

er kun interessant før din query - da du her tester om du overhovedet har et $username med i din query

når du har sagt
  extract($row);

burde du have alle variablerne fra din profiler-tabel til rådighed

prøv at kigge på dette lille eksempel script

<?

$array = array('Felt1'=>'Test1','Felt2'=>'Test2','Felt3'=>'Test3');

$multi_array[]=$array;

extract($multi_array[0]);

echo($Felt1);
echo("<BR>");
echo($Felt2);
echo("<BR>");
echo($Felt3);
echo("<BR>");
?>
Avatar billede warberg Juniormester
12. marts 2003 - 18:06 #16
Mit problem har helt sikkert noget at gøre med en nyere version af php, hvor register globals sat til off. Koden har virket, men kan simpelthen ikke greje hvorfor jeg ikke får variablerne med...?
Avatar billede warberg Juniormester
12. marts 2003 - 18:10 #17
Hvis jeg spoler processen en tak tilbage, kan det være her problemet opstår. Ved login kører jeg dette igennem:

    session_start();
  addslashes($username);
  addslashes($passcode);
  $password = md5($passcode);
  require("db_ind.inc");
  $passquery = mysql_query("SELECT password, id FROM profiler WHERE username = '$username'");
  if (!mysql_num_rows($passquery))
  {
  header("Location: login_fejl.php");
    exit();
  }
  else
  {
  if($row = mysql_fetch_array($passquery))
    {
      $dbpassword = $row["password"];
      $profilid = $row["id"];
    }
  if($dbpassword == $password)
  {
    $login = (true);
  }
  if ($dbpassword != $password)
  {
  header("Location: login_fejl.php");


    exit();
  }
    session_register(username);
    session_register(password);
    session_register(profilid);
  $today = date("d-m-Y");
  require("db_ind.inc");
  mysql_query("UPDATE profiler set lastlogin = '$today' WHERE username = '$username'");
  header("Location: profil.php");
  }
Avatar billede thomashove Nybegynder
12. marts 2003 - 18:40 #18
prøv at sige

$username=$_GET['username'];
$passcode=$_GET['passcode'];

lige efter din session_start();

hvis det ikke virker kan du prøve :

$username=$_REQUEST['username'];
$passcode=$_REQUEST['passcode'];
Avatar billede warberg Juniormester
12. marts 2003 - 18:46 #19
Sorry, ingen virkning...
Avatar billede thomashove Nybegynder
12. marts 2003 - 19:00 #20
hvad så med

$username=$HTTP_GET_VARS['username'];
Avatar billede warberg Juniormester
12. marts 2003 - 19:05 #21
Tør snart ikke sige nej.... men nej :o)
Avatar billede thomashove Nybegynder
12. marts 2003 - 19:13 #22
hmmm...nu giver jeg snart op :-)

hvilken php version er der tale om ?
og har du selv mulighed for at ændre i php.ini ?
Avatar billede warberg Juniormester
12. marts 2003 - 19:22 #23
Kører Version 4.3.1
Det har virket med Version 4.1.2
Avatar billede warberg Juniormester
12. marts 2003 - 19:30 #24
...og php.ini kan jeg ikke pille i...
Avatar billede thomashove Nybegynder
12. marts 2003 - 19:41 #25
du kan altså overhovedet ikke få indtastede værdier med over som variable fra side 1 til side 2...???

Jeg har nu lavet en clean install af php 4.3.1 samt jeg har to scripts

Script nr. 1

<html>


<form action="test2.php">

<input type="text" name="test">

<input type="submit">

</form>

</html>


script nr. 2

<?
$test=$_GET['test'];

echo($test);

?>


og det virker glimrende....
Avatar billede warberg Juniormester
12. marts 2003 - 21:08 #26
ja, jeg kan godt se, at det nok ikke er her, problemet ligger.
Jeg arbejder lidt videre med det...
1000 tak for gode idéer
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