Avatar billede cyberman29 Nybegynder
21. november 2010 - 02:53 Der er 26 kommentarer og
2 løsninger

Lille php kode, virker ikke?

Hej alle på experten, jeg er igang med at få genopfrisket lidt php:)
Og derfor er jeg begyndt på at lave lidt sjovt med php, og jeg har lige prøvet at lave et login system uden session, så det skal i ikke tage her af, og det er overhovedet ikke sikkert, men jeg vil bare lige prøve lidt af hvert, for at få det frem i hovedet igen:)... det skal ikke sige jeg har været expert, men jeg kunne da lidt engang:)

Nå nu til min kode:

<?php

$db = mysql_connect("localhost", "root", "");
mysql_select_db("123", $db);
$table = $_POST['login'];
$mysql_result = mysql_query ("SELECT joke FROM jokes WHERE joke_no=1", $db);
if ($mysql_result == "admin")
{
   
   
    echo "you are logged in";
    }
    else{
        echo "you are not logged in";
        }
?>

Kan nogen se fejlen her?, i min database er joke_no=1's verdi admin(eller hvad man nu siger)



Cyberman29:)
Avatar billede a2p-dk Nybegynder
21. november 2010 - 02:57 #1
$mysql_result kommer ud som en array..

noget ala

$mysql_result = array(
'joke_no' => 1,
'felt2' => værdi 2,
'et eller andet' => admin
)
Avatar billede a2p-dk Nybegynder
21. november 2010 - 02:58 #2
så for at tjekke om feltet 'et eller andet' faktisk er lig admin, skal du bruge $mysql_result[ 'et eller andet' ]
Avatar billede cyberman29 Nybegynder
21. november 2010 - 03:10 #3
Okay, men kan du ikke lige ændre det i koden?
Avatar billede a2p-dk Nybegynder
21. november 2010 - 03:12 #4
jeg ved ikkke hvad navnet på feltet hvor i der står admin hedder i din database...!
Avatar billede cyberman29 Nybegynder
21. november 2010 - 03:25 #5
Min sql data er sådan her:

CREATE TABLE jokes (
joke_no smallint(6) NOT NULL default '0',
joke text NOT NULL,
PRIMARY KEY (joke_no)
) TYPE=MyISAM;


# Data for table `jokes`

INSERT INTO jokes VALUES (1, 'admin');
Avatar billede a2p-dk Nybegynder
21. november 2010 - 06:15 #6
evt. $mysql_result[ 'joke text' ] i stedet for bare $mysql_result
21. november 2010 - 06:37 #7
Du husker funktionen mysql_result() fra gamle dage og mener, korrekt, at den kan bruges her.  Men du husker ikke hvordan.  Det skal jeg vise dig.  Foerst vil jeg foreslaa at du kalder variabelen noget andet end $mysql_result for ikke at forvirre.  Denne kode skulle virke:

$result = mysql_query ("SELECT joke FROM jokes WHERE joke_no=1", $db);
if (mysql_result($result, 0) == "admin")

  echo "you are logged in";
}
else
{
  echo "you are not logged in";
}
21. november 2010 - 06:39 #8
Det var meningen at det skulle have vaeret et svar.
Avatar billede cyberman29 Nybegynder
21. november 2010 - 12:34 #9
Det virker stadig ikke:/


Kan i måske ændre hele koden?...Så jeg ikke laver nogen fejl:)

Cyberman29
Avatar billede webweaver Praktikant
21. november 2010 - 15:17 #10
Hvad får du af fejl? En PHP fejl eller viser den bare "you are not logged in"?

Prøv at udskrive værdien, før din if sætning.

echo mysql_result($result, 0);

Indeholder den "admin"?
Avatar billede cyberman29 Nybegynder
21. november 2010 - 15:37 #11
Den siger bare "you are not logged in"

Og ja værdien indeholder admin - har nemlig udskrevet den:) og der indeholdte den "admin"



Cyberman29
Avatar billede webweaver Praktikant
21. november 2010 - 17:09 #12
Hvis mysql_result($result, 0); giver resultatet "admin", og ikke andet (mellemrum eller noget)

så skal din if sætning også virke!

if (mysql_result($result, 0) == "admin") { 
  echo "you are logged in";
} else {
  echo "you are not logged in";
}

Det gør vel ingen forskel hvis du prøver at lave det med en variabel?

$variabel = mysql_result($result, 0);

if ($variabel == "admin") { 
  echo "you are logged in";
} else {
  echo "you are not logged in";
}

Du kan evt. prøve at give $variabel "admin" som værdi, bare lige for at teste det statisk.

$variabel = "admin";
Avatar billede cyberman29 Nybegynder
21. november 2010 - 20:16 #13
Jeg har gjort alt, det du sagde, og det virker fint hvis jeg f. eks giver en variabel værdien "admin" og så siger i min if sætning at hvis værdien på den variabel er "admin", så skal den bla bla..... og det virker fint, men hvis jeg derimod, ændre min variabel, til at hente infomationen fra databasen, så siger den bare "you are not logged in"... min kode ser på nuværende tidspunkt således ud:


<?php
$admin = "admin";
$db = mysql_connect("localhost", "root", "");
mysql_select_db("123", $db);
$table = $_POST['login'];
$mysql_pass = mysql_result($result, 0);
$result = mysql_query ("SELECT joke FROM jokes WHERE joke_no=1", $db);
if ($mysql_pass == "admin") { 
  echo "you are logged in";
} else {
  echo "you are not logged in";
}
?>

Skal jeg prøve at lave en ny tabel i databasen?


Cyberman29
Avatar billede webweaver Praktikant
21. november 2010 - 21:01 #14
Det du har nu, vil ikke virke.

Du har din mysql_result før du henter noget ud af databasen?
Den skal rykkes nedenunder...
Avatar billede cyberman29 Nybegynder
21. november 2010 - 21:12 #15
så jeg skal skrive det sådan her istedet:

$result = mysql_query ("SELECT joke FROM jokes WHERE joke_no=1", $db);
$mysql_pass = mysql_result($result, 0);

eller.... men det virker stadig ikke, kan i ikke skrive en helt korrekt mysql data, som jeg bare skal indsætte via en mysql forspørgsel... og så rette hele koden til?


Cyberman29
21. november 2010 - 21:51 #16
Jeg har vaeret udenbys indtil nu, derfor har jeg ikke fulgt med i traaden.

Er det garanteret at din tabel er created og vaerdier indsat noejagtigt som du siger i #5?

I saafald skal det virke som sagt i #7.  Inden jeg svarede lavede jeg en mini-database og en mini-hjemmeside, og jeg fik resultatet 'you are logged in'.

Et paar hjaelpeforslag: 

(1) Brug i din query "...or die(mysql_error())";  Saa fortaeller mysql dig hvis noget gaar galt med queryen.

(2) Skriv resultatet af queryen ud (allerede naevnt i andre indlaeg): echo $mysql_pass;  Saa kan du se hvad resultatet er.  Det skulle gerne vaere 'admin'

Saa hele koden, med udgangspunkt i koden i dit oprindelige spoergsmaal og de ovennaevnte forslag:

<?php

$db = mysql_connect("localhost", "root", "");
mysql_select_db("123", $db);
//$table = $_POST['login'];
$result = mysql_query ("SELECT joke FROM jokes WHERE joke_no=1", $db) or die(mysql_error());
$mysql_pass = mysql_result($result, 0);
echo $mysql_pass;
if ($mysql_pass == "admin") echo "you are logged in";
else echo "you are not logged in";
?>

Og saa en kommentar.  Du siger:"Kan i ikke bare lave hele koden..."  Det skal ikke glemmes at Eksperten er hjaelp til selvhjaelp.
Avatar billede cyberman29 Nybegynder
21. november 2010 - 22:07 #17
He, det virker stadig ikke:(.... og ja jeg ved godt at Eksperten er hjælp til selvhjælp... men jeg tænkte at hvis i skrev koden, kunne jeg være sikker på at det ikke var koden der var noget galt med:)


Cyberman29
Avatar billede webweaver Praktikant
21. november 2010 - 22:48 #18
Jamen koden ser ud til at være i orden.
Man kan føre lidt flere or die's på.

<?php

mysql_connect("host", "user", "pass") or die("Der kunne ikke oprettes forbindelse til databasen lige nu. Prøv igen senere.");

mysql_select_db("123") or die("Databasen blev ikke fundet!");

$result = mysql_query("SELECT joke FROM jokes WHERE joke_no = 1") or die(mysql_error());
$mysql_pass = mysql_result($result, 0);
echo $mysql_pass;

if ($mysql_pass == "admin") {
echo "you are logged in";
} else {
echo "you are not logged in";
}
?>


Udskriver $mysql_pass værdien "admin", før den udfører if sætningen?
22. november 2010 - 19:55 #19
cyberman29, hvis du har kopieret den kode jeg gav i #16 eller den udvidede version webweaver gav i #18 og det saa ikke virker, saa er det ikke koden det er galt med.  Jeg har testet koden, og webweaver som har stoerre erfaring end jeg bekraefter koden.  Saa det maa vaere noget andet der er galt.  Lad os se den kode du koerer og som ikke virker.  Enten kopier det her rub og stub eller giv os et link hvor vi kan se den.  Samtidig bekraeft at tabel og data du bruger er noejagtig som angivet i #5 eller giv os den reviderede tabel og data.
Avatar billede cyberman29 Nybegynder
22. november 2010 - 21:49 #20
Okay, Jeg har nu kopiret den rub og stup.... men kan i ikke give mig noget data som jeg bare skal lave i en mysql forespørgsel... så vi er sikre på at min mysql data er korrekt:)


Cyberman29
22. november 2010 - 22:19 #21
Hvor kan vi se koden som du har kopieret rub og stub?
24. november 2010 - 20:27 #22
cyberman29, du kom ikke tilbage.  Misforstod jeg dit indlaeg #20, at du havde kopieret din kode 'rub og stup' saa vi kan se den?  I saa fald glemte du at inkludere koden, eller et link til koden, og det bad jeg om i #21.  Hvis det er forkert, hvordan kommer vi saa videre?

Jeg lavede som sagt for test en mini-hjemmeside med tilhoerende mysql tabel som virker efter hensigt.  Jeg kaldte tabellen cyberman og den sidder paa mit eget mysql (som jeg i koden har xxx'et ud.) Her er hjemmesiden der siger "you are logged in" http://christianjorgensen.be/cyberman.php .  Koden og tabellen er vist herunder. Hvis du har brug for yderligere hjaelp kommer du nok til at vise din egen kode.

Koden for cyberman.php

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>cyberman</title>
</head>

<body>
<?
$link = mysql_connect ('christianjorgensen.be.mysql', 'christianjoygen', 'dnyBKKbe') or die(mysql_error());
mysql_select_db('christianjoygen') or die('Could not select database');
$table = $_POST['login'];
$result = mysql_query("SELECT text FROM cyberman WHERE id = 1")or die(mysql_error());
//echo "aaaaa <br/>";
//echo mysql_result($result, 0, 1);
if(mysql_result($result,0) == 'admin') echo "you are logged in";
else echo "you are not logged in";
mysql_close($link); 
?>
</body>
</html>

tabellen cyberman

id  text 
1 admin
Avatar billede webweaver Praktikant
24. november 2010 - 20:48 #23
Der er ikke mange x'er i koden. Det er vel ikke dine login oplysninger til din MySQL du lige har postet Christian_Belgien? I såfald må du hellere lige hive fat i en co admin og få rettet indlægget.
Avatar billede webweaver Praktikant
24. november 2010 - 20:56 #24
Helt sikkert en fejl hos dig cyberman29. Har lige testet det eksempel jeg postede også, og det virker også fint. Vidste jeg næsten godt i forvejen.
Avatar billede cyberman29 Nybegynder
25. november 2010 - 21:31 #25
Okay, men hvem er co admin, og ja det var det vidst:/..... men undskyld jeg ikke lige har været aktiv for tiden... men jeg kigger på min mail, og ser om der kommer nye indlæg, og jeg har ikke modtaget nogle mail, at der var kommet noget nyt her, så undskyld:/

Men bare rolig, login oplysninger var bare fra min localserver, som jeg kørte på min computer

Cristian_Belgien og webweaver læg gerne et svar:)



Cyberman29
25. november 2010 - 22:32 #26
Svar (igen) fra mig.
Avatar billede webweaver Praktikant
26. november 2010 - 21:41 #27
Svar herfra også da så.

God weekend :-)
Avatar billede cyberman29 Nybegynder
26. november 2010 - 22:09 #28
i lige måde:-)
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