|
| vælg session i query Fra : Thomas H |
Dato : 03-04-06 08:11 |
|
Hej NG,
Jeg har sat en session ved navn sprog, der fx har værdien gb, dk eller se,
alt afhængigt af hvilket sprog brugeren har valgt. I min tabel 'sprog' har
jeg så rækker der svarer til det valgte sprog (gb, dk og se). Nu vil jeg
gerne vælge denne række i min query:
$conn = mysql_connect("localhost", "root", "root");
mysql_select_db("test");
$result = mysql_query("select $_SESSION["sprog"] from sprog");
while ($row = mysql_fetch_array($result))
{
extract($row);
echo "Her kommer så information på det forvalgte sprog: $row<br />";
}
mysql_close($conn);
Jeg kan se at det ikke virker - spørgsmålet er så hvordan jeg får lov til at
vælge min session?
Gode råd modtages gerne skåret ud i pap, da det hele stadig er lidt nyt.
Mvh. Thomas H.
| |
Per Christiansen (03-04-2006)
| Kommentar Fra : Per Christiansen |
Dato : 03-04-06 08:16 |
|
Hej Thomas.
> $result = mysql_query("select $_SESSION["sprog"] from sprog");
Prøv med:
$result = mysql_query("select * from sprog where feltnavn =
'$_SESSION["sprog"]' ");
Håber det hjælper!
/Per
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 08:23 |
|
> Prøv med:
>
> $result = mysql_query("select * from sprog where feltnavn =
> '$_SESSION["sprog"]' ");
Tak for det hurtige svar - men ingen cigar endnu. Jeg får:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE
or T_NUM_STRING in C:\Programmer\xampp\htdocs\phpsessions\index.php on line
59
Forslag?
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 08:27 |
|
> Prøv med:
>
> $result = mysql_query("select * from sprog where feltnavn =
> '$_SESSION["sprog"]' ");
Tak for det hurtige svar - men ingen cigar endnu. Jeg får:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE
or T_NUM_STRING in C:\Programmer\xampp\htdocs\phpsessions\index.php on line
59
Forslag?
| |
Leonard (03-04-2006)
| Kommentar Fra : Leonard |
Dato : 03-04-06 08:37 |
|
"Thomas H" <retardmonkeyFJERNDETTE@gmail.com> wrote:
>> $result = mysql_query("select * from sprog where feltnavn =
>> '$_SESSION["sprog"]' ");
$result = mysql_query("select * from sprog where feltnavn =
'".$_SESSION["sprog"]."' ");
--
Leonard
http:/leonard.dk/hjemmeside/
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 08:42 |
|
> $result = mysql_query("select * from sprog where feltnavn =
> '".$_SESSION["sprog"]."' ");
Tak - men igen en fejl :(
----------------------------
$conn = mysql_connect("localhost", "root", "root");
mysql_select_db("korsgaardtest");
$result = mysql_query("select * from sprog where feltnavn =
'".$_SESSION["sprog"]."' ");
while ($row = mysql_fetch_array($result))
{
extract($row);
echo "Her kommer så information på det forvalgte sprog: $row<br />";
}
mysql_close($conn);
----------------------------
giver fejlmeddelelsen:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
resource in C:\Programmer\xampp\htdocs\phpsessions\index.php on line 61
Linie 61 er while-sætningen.
Forslag? Bønner?
| |
Leonard (03-04-2006)
| Kommentar Fra : Leonard |
Dato : 03-04-06 09:22 |
|
"Thomas H" <retardmonkeyFJERNDETTE@gmail.com> wrote:
>Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
>resource in C:\Programmer\xampp\htdocs\phpsessions\index.php on line 61
Hvordan ser din tabel ud?
Findes der et felt med det rigtige navn?
og hvilken type er feltet?
--
Leonard
http:/leonard.dk/hjemmeside/
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 10:06 |
|
> Hvordan ser din tabel ud?
Tja - det ved jeg godt nok ikke hvad jeg skal svare til. Jeg har lagt et
screenshot her: www.autopilot.dk/screenshot01.png
> Findes der et felt med det rigtige navn?
det skulle jeg mene
> og hvilken type er feltet?
text
?
| |
Leonard (03-04-2006)
| Kommentar Fra : Leonard |
Dato : 03-04-06 10:29 |
|
"Thomas H" <retardmonkeyFJERNDETTE@gmail.com> wrote:
>> Hvordan ser din tabel ud?
>Tja - det ved jeg godt nok ikke hvad jeg skal svare til. Jeg har lagt et
>screenshot her: www.autopilot.dk/screenshot01.png
>
>> Findes der et felt med det rigtige navn?
>det skulle jeg mene
Nej, der har du et felt der hedder dk og et der hedder gb osv.
Hvis du havde et felt der hedder sprog og så indholdet i dette felt
afspejler om det er dk, gb eller osv så ville du kunne styre det som
foreslået.
Det du gør nu er ikke god skik i brug af databaser, da du nu skal
tilføje et nyt felt til tabellen, hvis der dukker et nyt sprog op.
--
Leonard
http:/leonard.dk/hjemmeside/
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 10:42 |
|
> Nej, der har du et felt der hedder dk og et der hedder gb osv.
Okay, så er der jo ikke så meget at sige til at det ikke fungerer. Tak!
> Det du gør nu er ikke god skik i brug af databaser, da du nu skal
> tilføje et nyt felt til tabellen, hvis der dukker et nyt sprog op.
Aha... faktisk ville jeg helst heller ikke lave det på denne måde -
beslutning er blevet taget højere oppe i hierarkiet. Jeg gik ud fra at det
nok var min fejl, da jeg ikke har arbejdet med databaser (eller php) før.
Det jeg oprindeligt prøvede på var jo nok noget lignende:
$result = mysql_query("select * from '".$_SESSION["sprog"]."' where
feltnavn = velkomst");
så sproget blev defineret og feltet med en velkomst, copyright, navigation
osv. blev valgt og vist. Det giver dog blot den fejl vi så ovenfor
(mysql_fetch_array(): supplied argument is not a valid MySQL result
resource) Jeg går ud fra at det betyder "det du prøver at hente findes ikke
i tabellen". Betyder det så at jeg ikke kan vise det jeg har i mit $result?
| |
Leonard (03-04-2006)
| Kommentar Fra : Leonard |
Dato : 03-04-06 10:54 |
|
"Thomas H" <retardmonkeyFJERNDETTE@gmail.com> wrote:
>Det jeg oprindeligt prøvede på var jo nok noget lignende:
>
>$result = mysql_query("select * from '".$_SESSION["sprog"]."' where
>feltnavn = velkomst");
Øh, hvad har du i felterne dk, gb, se, no og de?
Er det der du har velkomst-teksten?
Hvilken variabel har du sproget i?
Hvis du har sproget i $_SESSION['sprog'] og du er sikker på at det
står rigtigt med 2 bogstaver der, så kan måske lave noget som dette:
$result = mysql_query("SELECT ".$_SESSION['sprog']." FROM sprog LIMIT
1");
if ($array=mysql_fetch_array($result)) {
print $array[1];
}
Men dem der oppe på højere sted, har de noget begreb om hvordan en
database opbygges, for det ligner godt nok ikke noget jeg har set i
nogen lærebog?
--
Leonard
http:/leonard.dk/hjemmeside/
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 11:14 |
|
> Øh, hvad har du i felterne dk, gb, se, no og de?
> Er det der du har velkomst-teksten?
> Jep... måske. Se evt. www.autopilot.dk/screenshot02.png
> Hvilken variabel har du sproget i?
> sprogvariablen bliver sat på den foregående side med:
session_start();
$_SESSION['sprog'] = "gb";
> Hvis du har sproget i $_SESSION['sprog'] og du er sikker på at det
> står rigtigt med 2 bogstaver der, så kan måske lave noget som dette:
> $result = mysql_query("SELECT ".$_SESSION['sprog']." FROM sprog LIMIT
> 1");
> if ($array=mysql_fetch_array($result)) {
> print $array[1];
> }
Den giver ingen fejl, men der bliver heller ikke printet noget.
> Men dem der oppe på højere sted, har de noget begreb om hvordan en
> database opbygges, for det ligner godt nok ikke noget jeg har set i
> nogen lærebog?
He he... jeg havde håbet du ikke ville spørge... min chef laver en hel del
access-arbejde og har gjort det i mange år. Han er vist ret skrap til
databaser, men har aldrig brugt mysql. Det har jeg jo heller ikke, så vi er
ca. lige dårlige. Jeg fik lavet en sprogvalgsfunktion der fungerede smukt -
den loadede fx siden forside eller kontakt og føjede så _dk eller _gb til
alt afhængigt af sprogvalget. Så skrev man i forside_dk en dansk velkomst og
i forside_gb en engelsk... gode tider. Men vi skal også have den anden
metode til at fungere. Jeg aner ikke hvorfor.
| |
Leonard (03-04-2006)
| Kommentar Fra : Leonard |
Dato : 03-04-06 12:31 |
|
"Thomas H" <retardmonkeyFJERNDETTE@gmail.com> wrote:
>> $result = mysql_query("SELECT ".$_SESSION['sprog']." FROM sprog LIMIT
>> 1");
>> if ($array=mysql_fetch_array($result)) {
var_dump($array);
>> }
>
>Den giver ingen fejl, men der bliver heller ikke printet noget.
Prøv med var_dump som vist ovenfor, så kan du se hvad der er i arrayet
og vælge det du vil udskrive, det kan også være at:
print $array[$_SESSION['sprog']];
vil virke, men det ved jeg godt nok ikke.
--
Leonard
http:/leonard.dk/hjemmeside/
| |
Per Christiansen (03-04-2006)
| Kommentar Fra : Per Christiansen |
Dato : 03-04-06 08:16 |
|
Hej Thomas.
> $result = mysql_query("select $_SESSION["sprog"] from sprog");
Prøv med:
$result = mysql_query("select * from sprog where feltnavn =
'$_SESSION["sprog"]' ");
Håber det hjælper!
/Per
--
----------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 143 spam-mails.
Betalende brugere får ikke denne besked i deres e-mails.
Hent gratis SPAMfighter her: www.spamfighter.dk
| |
Martin (03-04-2006)
| Kommentar Fra : Martin |
Dato : 03-04-06 11:58 |
|
Thomas H wrote:
> Hej NG,
>
> Jeg har sat en session ved navn sprog, der fx har værdien gb, dk eller se,
> alt afhængigt af hvilket sprog brugeren har valgt. I min tabel 'sprog' har
> jeg så rækker der svarer til det valgte sprog (gb, dk og se). Nu vil jeg
> gerne vælge denne række i min query:
>
> $conn = mysql_connect("localhost", "root", "root");
En god skik er at bruge mysql_error() hver eneste sted du leger med mysql.
mysql_connect(...) OR DIE (mysql_error());
> mysql_select_db("test");
mysql_select_db(...) OR DIE (mysql_error());
>
> $result = mysql_query("select $_SESSION["sprog"] from sprog");
mysql_query(....) OR DIE (mysql_error());
så finder du meget nemmere ud af om det er i den query eller om det er i
selve php'en at problemet ligger :)
jeg mistænker lidt til at det er $_SESSION["sprog"] der ikke indeholder
noget?
prøv at lave en var_dump($_SESSION["sprog"]); ... og du har husket
session_start(); oppe i toppen af dokumentet ikk?
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 12:28 |
|
OR DIE er hermed tilføjet overalt.
>prøv at lave en var_dump($_SESSION["sprog"]);
altså sådan her: echo "var_dump($_SESSION["sprog"]); " ? Det giver blot
følgende fejl: Parse error: syntax error, unexpected '"', expecting T_STRING
or T_VARIABLE or T_NUM_STRING in
C:\Programmer\xampp\htdocs\phpsessions\index.php on line 83
> session_start(); oppe i toppen af dokumentet ikk?
session er startet
Hvis jeg fjerner var_dump får jeg at vide at den ikke kan finde den kolonne
jeg søger:
Unknown column 'feltnavn' in 'where clause'
| |
Johan Holst Nielsen (03-04-2006)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 03-04-06 13:56 |
|
Thomas H wrote:
> OR DIE er hermed tilføjet overalt.
>
>
>>prøv at lave en var_dump($_SESSION["sprog"]);
>
>
> altså sådan her: echo "var_dump($_SESSION["sprog"]); " ? Det giver blot
> følgende fejl: Parse error: syntax error, unexpected '"', expecting T_STRING
> or T_VARIABLE or T_NUM_STRING in
> C:\Programmer\xampp\htdocs\phpsessions\index.php on line 83
Du skal ikke echo et var_dump - den smider det selv ud til skærmen... så
linjen skal blot være:
<?php
var_dump($_SESSION["sprog"]);
?>
http://dk.php.net/var_dump
mvh
johan
| |
Thomas H (03-04-2006)
| Kommentar Fra : Thomas H |
Dato : 03-04-06 14:52 |
|
> Du skal ikke echo et var_dump - den smider det selv ud til skærmen...
så klog man bliver :)
var_dump giver:
string(2) "gb"
hvilket virker rigtigt nok. Jeg tror problemet ligger i min tabel. Den er
lavet så den ligner den chefen er vant til i access - men efter den smule
jeg har fatte mht. mysql er det bare ikke sådan det virker.
Det kan være jeg skal give ham den klassiske "teknisk umulighed" og håbe han
kan nøjes med den løsning jeg allerede har lavet :(
> http://dk.php.net/var_dump
>
> mvh
> johan
| |
|
|