Avatar billede snigeren Nybegynder
23. januar 2006 - 16:14 Der er 20 kommentarer og
1 løsning

test af connection?

hmm forbindelsen til min database volder mig lidt problemer...

db.php ser således ud:

<?php
    $dbServer = "XXXXXX";
    $dbUser = "XXXXXX";
    $dbPass = "XXXXXX";
    $dbName = "XXXXXX";

    function ConnectToDb($server, $user, $pass, $database)
    {
        $s = @mysql_connect($server, $user, $pass);
        $d = @mysql_select_db($database, $s);
       
        if(!$s || !$d)
            return false;
            echo "lort!";
        else
            return true;
            echo "FEDT! det virker!";
    }
?>

Og connection dertil ser således ud:

<?php
    include("Connections/db.php");

    $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
?>


db.php ligger i Connections/db.php
og filen der kaldes fra ligger ved siden af Connections mappen.

Når jeg så starter .php filen der linker til db.php kommer der bare en helt hvid skærm selvom der er grafik og en fomular...

Hvad gør jeg forkert?

/Snig
Avatar billede jaw Nybegynder
23. januar 2006 - 16:18 #1
Du skal egentlig:
if(ConnectToDb($dbServer, $dbUser, $dbPass, $dbName)) {
  echo "Connected";
} else {
  echo "fejl";
}

i stedet for
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

Og derudover, så fjern dine @'er mens du fejlsøger, da de fjerner php's fejlmeddelelser. Desuden er det også altid en god ide at smide or die() på din forespørgsel hvis den volder problemer.
Avatar billede snigeren Nybegynder
23. januar 2006 - 16:27 #2
skal det se sådanne ud:

<?php
    $dbServer = "XXXXX";
    $dbUser = "XXXXX";
    $dbPass = "XXXXX";
    $dbName = "XXXXX";

    function ConnectToDb($server, $user, $pass, $database)
    {
        $s = mysql_connect($server, $user, $pass);
        $d = mysql_select_db($database, $s);
       
        if(!$s || !$d)
            return false;
            echo "lort!";
        else
            return true;
            echo "FEDT! det virker!";
    }
?>


siden der kalder:

<?php
    include("Connections/db.php");

    if(ConnectToDb($dbServer, $dbUser, $dbPass, $dbName)) {
  echo "Connected";
} else {
  echo "fejl";
}
?>


Hvis dette er helt som det skal være,.. gør den stadig det samme,.. viser kun en hvid skærm uden nogen form for fejl meddelelser eller noget =|
Avatar billede jaw Nybegynder
23. januar 2006 - 16:31 #3
function ConnectToDb($server, $user, $pass, $database) <- Det hedder dine variabler jo ikke - de hedder $dbServer, $dbUser etc.

Og så smid or die() på:
        $s = mysql_connect($server, $user, $pass) or die(mysql_error());
        $d = mysql_select_db($database, $s) or die(mysql_error());
Avatar billede jaw Nybegynder
23. januar 2006 - 16:32 #4
Hov nej, der blev jeg forvirret af mig selv. Det med variablerne gør du jo rigtig nok, beklager :) !
Avatar billede snigeren Nybegynder
23. januar 2006 - 16:37 #5
uhm, stadig intet nyt under solen,.. øhm kan det skyldes:

1. et eller andet der ikke lige er sat rigtigt op/mangler hos udbyderen (tdc)?
2. forkerte data: username, pass, host adresse...?
Avatar billede jacob_m Nybegynder
23. januar 2006 - 16:40 #6
Jeg vil menne at du skal sætte endnu en funktion ude om dit udtryk, for ikke at definere $dbServer etc. igen.

Ved at kalde

$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

Skriver du jo $dbServer til $dbServer igen... Altså:

$dbServer = $dbServer; i det du kalder funktionen.. Det er unødvendig og kan skabe en konflikt. Så jeg ville gøre sådan:
---------------------- Eksempel --------------------------

<?php
function dbConnect(){

    $server = "XXXXXX";
    $user = "XXXXXX";
    $pass = "XXXXXX";
    $name = "XXXXXX";

    function ConnectToDb($server, $user, $pass, $database)
    {
        $s = @mysql_connect($server, $user, $pass) or die(mysql_error());
        $d = @mysql_select_db($database, $s) or die(mysql_error();
       
        if(!$s || !$d)
            return false;
            echo "lort!";
        else
            return true;
            echo "FEDT! det virker!";
    };
};
?>

Og connection dertil ser således ud:

<?php
    include("Connections/db.php");

    dbConnect();
?>

------------------ Slut -----------------------------------
Avatar billede jaw Nybegynder
23. januar 2006 - 16:40 #7
Din if-else skal du have klammer omkring når du har flere linier:
      if(!$s || !$d) {
            return false;
            echo "lort!";
        }else{
            return true;
            echo "FEDT! det virker!";
        }
Avatar billede snigeren Nybegynder
23. januar 2006 - 16:54 #8
hmm hvis jeg nu gør således: og så kun includer db.php sådanne --> include("Connections/db.php");

db.php ser således ud nu:

asdf
<?php
echo "halløj!";

function dbConnect(){
    $dbServer = "www.salsabananas.dk";
    $dbUser = "salsaban_myuser";
    $dbPass = "RNf74cTH";
    $dbName = "salsaban";

    function ConnectToDb($server, $user, $pass, $database)
    {
        $s = mysql_connect($server, $user, $pass) or die(mysql_error());
        $d = mysql_select_db($database, $s) or die(mysql_error());
       
        if(!$s || !$d)
            return false;
            echo "lort!";
        else
            return true;
            echo "FEDT! det virker!";
    };
};
?>


Burde de to følgende sætninger så ikke komme frem?
1. asdf
2. echo "halløj!";
Avatar billede jaw Nybegynder
23. januar 2006 - 16:57 #9
Nej, for du har en "parse error" ved din if-else som jeg skrev 16.40.43. Den skal du lige rette først, ellers vil du aldrig komme videre...
Avatar billede jacob_m Nybegynder
23. januar 2006 - 16:58 #10
jov, det burde den.. aller den vil nok komme ud sådan

asdfhalløj!
Avatar billede snigeren Nybegynder
23. januar 2006 - 17:00 #11
den har jeg også rettet,.. du mener det med {} omkring:

if(!$s || !$d){
            return false;
            echo "lort!";
        else
            return true;
            echo "FEDT! det virker!";
};
Avatar billede snigeren Nybegynder
23. januar 2006 - 17:12 #12
hmm hvis jeg fjerne alt i db.php så der kun står:

asdf
<?php
echo "halløj!";
?>

Kommer der til at stå følgende på en hvid skærm, dvs. den går stadig ikke viddere og viser tabeller og grafik:

asdfhalløj!


Kaldet her kommer som det aller første på siden før <html> osv. Kan det have noget at sige?  <?php
    include("Connections/db.php");
?>
Avatar billede snigeren Nybegynder
23. januar 2006 - 17:37 #13
ja ok,.. jeg havde åbenbart ikke rettet den der parse error,.. }else{

Jeg smed lige filerne over på en anden server og der meldte den fejlen,.. hvad kan det skyldes at den ikke melder fejlen på TDC serveren? Er der noget de mangler at sætte op?
Avatar billede jaw Nybegynder
23. januar 2006 - 18:06 #14
Nok nærmere noget de har gjort med vilje. Der er nogle, der vælger at fjerne fejlmeddelelser, ofte af sikkerhedsgrunde.
Avatar billede snigeren Nybegynder
23. januar 2006 - 18:28 #15
ok,.. tak for det =)

Lige et hurtigt dumt spørgsmål, jeg skal lige teste databasen om jeg kan hente fra den:
Der kører jeg det her kald: 
$q = mysql_query("select * from hold") or die(mysql_error());

Og bruger nedenstående til at hente det ønskede fra db´en:
<?php echo $row["overskrift"]; ?>

Er det rigtigt? i så fald har jeg et forkert password, jeg får nemlig følgende fejl:
Access denied for user: 'wwwserv@php05.serv.crusade.dk' (Using password: NO)
Avatar billede jaw Nybegynder
23. januar 2006 - 19:49 #16
Som jeg ser det, er der slet ikke noget password på. Altså "" (blank).
Avatar billede snigeren Nybegynder
23. januar 2006 - 20:06 #17
Dvs. intet password på serveren? Det lydder skørt... jeg må lige ringe til dem igen.
Avatar billede jaw Nybegynder
23. januar 2006 - 20:27 #18
Først kan du jo afprøve om det passer.
Avatar billede snigeren Nybegynder
25. januar 2006 - 12:31 #19
oh well,.. nu virker det,.. helt sikkert mig der har lavet en fejl et eller andet sted =)

smider du ikke lige et svar jaw? du har brugt masser af tid på mig =)

lige et sidste spørgsmål for bedre at forstå =)

scriptet tidligere omtalt har altså før virket, er der forskellige versioner af mysql/php der ikke behøver }{ til start, før og efter else?

    function ConnectToDb($server, $user, $pass, $database)
    {
        $s = @mysql_connect($server, $user, $pass);
        $d = @mysql_select_db($database, $s);
       
        if(!$s || !$d){
            return false;
        }else{
            return true;
        }
    }

For TDC kører med en ældre udgave af begge som de siger er mere sikker,.. what do I know =)
Avatar billede jaw Nybegynder
25. januar 2006 - 15:20 #20
Nah, tror nærmere det var fordi du havde 2 linier før og ikke kun 1. Som du har i din aller sidste kommentar (25/1 12.31.36) det vil virke uden { }. Men har du 2 linier eller flere mellem din if og else, så vil den give fejl, da det så bliver en syntaxfejl.

Altså, for at slippe for {} må det kun være 1 linie :)
Avatar billede snigeren Nybegynder
25. januar 2006 - 21:06 #21
Ok,.. well tak for hjælpen =)

Det er godt nok lidt underligt,.. den her fejl jeg skrev tidligere:
Access denied for user: 'wwwserv@php05.serv.crusade.dk' (Using password: NO)

Kommer stadig engang imellem andre gange gør den ikke,.. det er lidt mærkeligt, jeg ved søreme ikke om det er TDC der laver ballade eller hvad. Nogen gange når jeg åbner siden kommer den andre gange ikke, samme script der ikke er blevet ændret eller noget... mystisk!
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
Computerworld tilbyder specialiserede kurser i database-management

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