Avatar billede lesp Nybegynder
11. juli 2007 - 14:36 Der er 29 kommentarer og
1 løsning

Simpelt problem med at hive ud af database

Jeg får følgende fejl ved $data['navn']:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING




<?php
session_start();
include('access.php');

$user = $_GET['user'];



if ($_SESSION['status'] == "login")
{
$foresp = mysql_query("SELECT * FROM personlige WHERE USER='$user'");
while($data = mysql_fetch_array($foresp)){

echo"


$data['navn']


";


}

else

{
print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}
}
?>
Avatar billede michael_stim Ekspert
11. juli 2007 - 14:38 #1
echo $data['navn'];
Avatar billede lesp Nybegynder
11. juli 2007 - 14:40 #2
Hvad så hvis jeg fx. vil skrive echo " navn: $data['navn']?
Avatar billede pidgeot Nybegynder
11. juli 2007 - 14:40 #3
Du kan ikke bruge '' om dine array-indekses når du forlader dig på ""-strengens variabelparsing. Enten skal du sætte hele variablen i {}, afbryde din streng, eller (i dette tilfælde), droppe de blanke linjer og skrive variablen ud direkte.

Jeg er i øvrigt ikke helt sikker på din else er placeret korrekt - der skal nok lige flyttes en } ind inden.
Avatar billede michael_stim Ekspert
11. juli 2007 - 14:41 #4
echo "Navn: ".$data['navn'];
Avatar billede lesp Nybegynder
11. juli 2007 - 15:12 #5
Kommentar: pidgeot
11/07-2007 14:40:48 Du kan ikke bruge '' om dine array-indekses når du forlader dig på ""-strengens variabelparsing. Enten skal du sætte hele variablen i {}, afbryde din streng, eller (i dette tilfælde), droppe de blanke linjer og skrive variablen ud direkte.

Jeg er i øvrigt ikke helt sikker på din else er placeret korrekt - der skal nok lige flyttes en } ind inden.


Giv et eksempel.
Avatar billede lesp Nybegynder
11. juli 2007 - 15:13 #6
Kommentar: michael_stim
11/07-2007 14:41:06 echo "Navn: ".$data['navn'];

Virker heller ikke
Avatar billede michael_stim Ekspert
11. juli 2007 - 15:20 #7
Den virker fint, så er det et andet sted den fejler ;o)
Avatar billede michael_stim Ekspert
11. juli 2007 - 15:22 #8
Du skal have din tuborgklamme en tand op. Afslut din while og if, derefter kan du gå ned til din else.
Avatar billede lesp Nybegynder
11. juli 2007 - 15:25 #9
Hvad for en af tuborgklammerne?
Avatar billede lesp Nybegynder
11. juli 2007 - 15:27 #10
Prøv at give et eksempel. Min kode ser sådan ud nu:

<?php
session_start();
include('access.php');

$user = $_GET['user'];

  $foresp = mysql_query("SELECT * FROM personlige WHERE USER='$user'");
while($data = mysql_fetch_array($foresp)){

if ($_SESSION['status'] == "login")
{


echo" navn:". $data['navn'];


}
}
else

{
print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

?>
Avatar billede michael_stim Ekspert
11. juli 2007 - 15:34 #11
Først og fremmest er det idiotisk at hive hele rækken ud fra basen når du kun skal bruge navn. For det andet behøver du vel ikke at smide den i en while (formoder at det kun er ét navn).

$foresp = mysql_query("SELECT navn FROM personlige WHERE `USER`='". $user ."'") or die(mysql_error());
$data = mysql_fetch_array($foresp);
echo "Navn: ".$data['navn'];
Avatar billede lesp Nybegynder
11. juli 2007 - 16:04 #12
Jeg skal bruge alle felter i databasen, men indtil videre har jeg kun brugt 1.

Sådan her ser min kode ud nu, men den udskriver nu ikke navn....

<?php
session_start();
include('access.php');

$user = $_GET['user'];

  $foresp = mysql_query("SELECT * FROM personlige WHERE USER='$user'");
$data = mysql_fetch_array($foresp);

if ($_SESSION['status'] == "login")
{


echo "Navn: ".$data['navn'];


}
else

{
print("    <script language='javascript'>
        location.href='login.php';
        </script>");
}

?>
Avatar billede benzon Praktikant
11. juli 2007 - 17:58 #13
husker du og åbne en database forbindelse?

en ting jeg ikke fatter er du har session_start(); burde den ikke være i access.php? går ud fra det er det script der tjekker om brugeren har adgang til siden?

der ud over $user = $_GET['user']

Er din url adresse side.php?user=Brugernavn  ???? du kan jo ikke lave en get på noget som ikke findes i adresse baren og er du HELT sikkert på du ikke skal have fat i Session i stedet for eks
$_SESSION['user']?
Avatar billede lesp Nybegynder
11. juli 2007 - 18:40 #14
Jeg sender 'user' i adressebaren fra et tidligere script.

Mit brugersystem er bygget op således, at jeg laver en $_SESSION['status'] = "login";

Så jeg sender 'user' i adressebaren, og derved henter jeg informationer fra databasen vha. af dette.
Avatar billede michael_stim Ekspert
11. juli 2007 - 18:44 #15
Lav nu din forespørgsel som jeg skrev den.
$foresp = mysql_query("SELECT navn FROM personlige WHERE `USER`='". $user ."'") or die(mysql_error());

Og fungerer det ikke så prøv at udskrive den istedet for at eksekvere.

//$data = mysql_fetch_array($foresp);
echo $foresp;
if ($_SESSION['status'] == "login")
{
echo "Her kom jeg ind i IF.";
echo "Navn: ".$data['navn'];
}
Avatar billede lesp Nybegynder
11. juli 2007 - 19:43 #16
Det har jeg så gjort. Her er mit output:

Her kom jeg ind i IF.Navn:
Avatar billede michael_stim Ekspert
11. juli 2007 - 19:57 #17
$query="SELECT navn FROM personlige WHERE `USER`='". $user ."'";
echo $query;
//$foresp = mysql_query($query) or die(mysql_error());
Hvad siger den?
Avatar billede michael_stim Ekspert
11. juli 2007 - 20:01 #18
$query="SELECT navn FROM personlige WHERE `USER`='". $user ."'";
echo $query;
$foresp = mysql_query($query) or die(mysql_error());
if ($_SESSION['status'] == "login")
{
echo "Her kom jeg ind i IF.<br>";
echo "Navn: ".$data['navn'];
}
Avatar billede lesp Nybegynder
11. juli 2007 - 20:19 #19
Nu får jeg følgende output:

SELECT navn FROM personlige WHERE `USER`='Adam95'Her kom jeg ind i IF.
Navn:
Avatar billede michael_stim Ekspert
11. juli 2007 - 21:27 #20
$query="SELECT navn FROM personlige WHERE `USER`='". $user ."'";
$foresp = mysql_query($query) or die(mysql_error());
$data = mysql_fetch_array($foresp);
if ($_SESSION['status'] == "login")
{
echo "Navn: ".$data['navn'];
}

Så burde alt også fungere.
Avatar billede michael_stim Ekspert
11. juli 2007 - 21:28 #21
Og får du ikke noget output, er det fordi der ikke er en bruger ved navn Adam95.
Avatar billede lesp Nybegynder
11. juli 2007 - 22:15 #22
Okay... Der er åbenbart forskel på, om man bruger ` eller '. Det var der hele fejlen lå.
Avatar billede michael_stim Ekspert
11. juli 2007 - 22:23 #23
` bruger du til reserverede ord i dine kolonner og tabeller. ' bruger du til at starte og afslutte en string i dine felter.
Avatar billede lesp Nybegynder
11. juli 2007 - 22:30 #24
Nu ser mit script sådan ud:

$query="SELECT navn FROM personlige WHERE `USER`='". $user ."'";
$foresp = mysql_query($query) or die(mysql_error());
$data = mysql_fetch_array($foresp);
if ($_SESSION['status'] == "login")
{
echo "Navn: ".$data['navn'];
echo "<br>Efternavn: ".$data['Efternavn'];

}
else


Det udskriver nu ikke efternavn :S
Avatar billede michael_stim Ekspert
12. juli 2007 - 09:39 #25
Spørger du om det i din SQL?
Avatar billede benzon Praktikant
12. juli 2007 - 13:38 #26
prøv lige og rette Efternavn til efternavn i lowcase...

echo "<br>Efternavn: ".$data['efternavn'];
Avatar billede michael_stim Ekspert
12. juli 2007 - 20:50 #27
benzon>>Det hjælper jo ligesom ikke, når der ikke bliver spurgt efter efternavn i sql'en ;o)
Avatar billede lesp Nybegynder
12. juli 2007 - 20:56 #28
Nej det er rigtigt michael. Jeg testede lige med SELECT * FROM... Og det virker SLET ikke...
Avatar billede michael_stim Ekspert
12. juli 2007 - 21:42 #29
$query="SELECT * FROM personlige WHERE `USER`='". $user ."'";

Burde tage det hele jo.
Avatar billede lesp Nybegynder
05. december 2007 - 17:55 #30
Michael. Skriv et svar.
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