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. ??
Annonceindlæg fra Admin By Request
12. marts 2003 - 13:38
#1
har du prøvet med: while($row = mysql_fetch_array($get_data)){ extract($row); }
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.
12. marts 2003 - 15:03
#3
når du bruger extract udskriver du bare variablen <? print $username; ?>
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; }
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...
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
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?
12. marts 2003 - 15:38
#8
hvad med echo ($_GET['username']);
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?
12. marts 2003 - 15:40
#10
Det bliver fuldstændig ignoreret
12. marts 2003 - 15:43
#11
du skal rette: WHERE username = '$username'"); til WHERE username = '".$_GET['username']."'");
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
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']);
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']);
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>"); ?>
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...?
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"); }
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'];
12. marts 2003 - 18:46
#19
Sorry, ingen virkning...
12. marts 2003 - 19:00
#20
hvad så med $username=$HTTP_GET_VARS['username'];
12. marts 2003 - 19:05
#21
Tør snart ikke sige nej.... men nej :o)
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 ?
12. marts 2003 - 19:22
#23
Kører Version 4.3.1 Det har virket med Version 4.1.2
12. marts 2003 - 19:30
#24
...og php.ini kan jeg ikke pille i...
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....
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
Vi tilbyder markedets bedste kurser inden for webudvikling