Avatar billede michaelgm Nybegynder
10. februar 2008 - 11:48 Der er 6 kommentarer og
1 løsning

Et alternativ til "die"

Kan man ikke på en eller anden måde få mysql til at teste om der er forbindelse til ens mysql server?

lige nu bruger jeg:

$mysqlconnection = mysql_connect("85.82.240.233", "carterbu", "hgn1109")or die("<center><br><br><br><br><span style=\"font-size:50pt;color:#3f3f3f;\">Ude af drift</span><br><img src=\"gfx/ikoner/ingenconnect.gif\"><br><span style=\"color:#3f3f3f;\">Vi beklager.</span></center>");

Mit problem er at min side skal opdatere efter de antal sekunder der kommer fra databasen. Men kan den ikke få forbindelse til mysql serveren vil den jo stoppe mit script allerede før den fortæller hvor mange sek ved die..

Hvordan kan jeg få fejlmeddelsen ud uden den skal stoppe mit script?
Avatar billede nielle Nybegynder
10. februar 2008 - 12:01 #1
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    // die('Could not connect: ' . mysql_error());
    i stedet for at kalde die() gør du bare niget andet.
}
Avatar billede nielle Nybegynder
10. februar 2008 - 12:04 #2
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    echo "Der kunne ikke forbindes til databasen: " . mysql_error();
    echo "Vi prøver ign om et øjeblik.
} else {
    echo "Forbundet til databasen...";
}
Avatar billede michaelgm Nybegynder
10. februar 2008 - 12:21 #3
session_start();
$link = mysql_connect('85.158.515.45', 'mysql_user', 'mysql_password');
if (!$link) {
    echo "<center><br><br><br><br><span style=\"font-size:50pt;color:#3f3f3f;\">Ude af drift</span><br><img src=\"gfx/ikoner/ingenconnect.gif\"><br><span style=\"color:#3f3f3f;\">Vi beklager.</span></center>";
    $varighed = 2;
}
else
{
    $mysqldb = mysql_select_db("c2");
    $periodenr = '19';   
}
if(!isset($_SESSION['nyhedsid'])){ $nyhedsid = 0; }else{ $nyhedsid = $_SESSION['nyhedsid']+1; }

$nyhedSQL ="
SELECT
(SELECT count(nyheder.id) FROM nyheder WHERE nyheder.start <  NOW() AND nyheder.slut > NOW()) AS antal,
nyheder.id,
nyheder.nyhed,
nyheder.gruppe,
nyheder.varighed,
DATE_FORMAT(nyheder.start,'%d-%m-%Y') AS dato
FROM
nyheder
WHERE
nyheder.start <  NOW() AND
nyheder.slut > NOW()
ORDER BY
nyheder.gruppe ASC,
nyheder.start DESC
LIMIT $nyhedsid,1
";
$resultat = mysql_query($nyhedSQL) or die( mysql_error() );
while ($db = mysql_fetch_array($resultat))
{       
    $nyhed = $db['nyhed'];
    $nyhed = stripslashes($nyhed);
    $gruppe = $db['gruppe'];
    $varighed = $db['varighed'];
    $dato = $db['dato'];
   
    $antal = $db['antal'];
    $antal = $antal-1;
   
    if($antal == $nyhedsid)
    {
        $_SESSION['nyhedsid'] = -1;
    }
    else
    {
        $_SESSION['nyhedsid'] = $nyhedsid;
    }
}
?>
<html>
<head>
<link rel="stylesheet" href="gfx/nyheder.css" type="text/css" media="screen">
<script type="text/JavaScript" language="JavaScript">
window.setTimeout("window.location.reload(true)", 1000 * <?php echo $varighed; ?>);
</script>
</head>
<body>
<?php
$nyhed = str_replace("/citytrafik","http://85.82.240.233/citytrafik",$nyhed);

echo $gruppe."<br>".$dato."<br><br>".$nyhed."<br>";

?>
</body>
</html>
Avatar billede michaelgm Nybegynder
10. februar 2008 - 12:21 #4
her er mit script.. Den opdatere ikke når jeg ikke har forbindelse til serveren.
Avatar billede nielle Nybegynder
10. februar 2008 - 12:33 #5
Al den kode der kun skal udføres når der *ikke* er forbindelse til databasen skal i den første blok efter if-sætningen.

På samme måde skal al den kode der kun skal udføres når der *er* forbindelse i databasen placeres i den anden kodeblok efter else-leddet.

Lige nu har du en masse kode placeret på et sted hvor det vil fejle når der ikke er forbindelse. Da din refresh ligger efter denne del af koden, bliver denaldrig udført.
Avatar billede michaelgm Nybegynder
10. februar 2008 - 13:19 #6
Ja selvfølgelig. Ved slet ikke hvad jeg tænkte på.
Tror bare jeg fokuserede på:
window.setTimeout("window.location.reload(true)", 1000 * <?php echo $varighed; ?>);

Men har fået det til at virke.. Du må gerne smide et svar.
Sådan her blev scriptet:

session_start();
$link = mysql_connect('85.158.515.45', 'mysql_user', 'mysql_password');
if (!$link) {
    ?>
   
    <script type="text/JavaScript" language="JavaScript">
    window.setTimeout("window.location.reload(true)", 1000 * 2);
    </script>
   
    <?php
    echo "<center><br><br><br><br><span style=\"font-size:50pt;color:#3f3f3f;\">Ude af drift</span><br><img src=\"gfx/ikoner/ingenconnect.gif\"><br><span style=\"color:#3f3f3f;\">Vi beklager.</span></center>";
}
else
{
    $mysqldb = mysql_select_db("c2");
    $periodenr = '19';   
   
    if(!isset($_SESSION['nyhedsid'])){ $nyhedsid = 0; }else{ $nyhedsid = $_SESSION['nyhedsid']+1; }

    $nyhedSQL ="
    SELECT
    (SELECT count(nyheder.id) FROM nyheder WHERE nyheder.start <  NOW() AND nyheder.slut > NOW()) AS antal,
    nyheder.id,
    nyheder.nyhed,
    nyheder.gruppe,
    nyheder.varighed,
    DATE_FORMAT(nyheder.start,'%d-%m-%Y') AS dato
    FROM
    nyheder
    WHERE
    nyheder.start <  NOW() AND
    nyheder.slut > NOW()
    ORDER BY
    nyheder.gruppe ASC,
    nyheder.start DESC
    LIMIT $nyhedsid,1
    ";
    $resultat = mysql_query($nyhedSQL) or die( mysql_error() );
    while ($db = mysql_fetch_array($resultat))
    {       
        $nyhed = $db['nyhed'];
        $nyhed = stripslashes($nyhed);
        $gruppe = $db['gruppe'];
        $varighed = $db['varighed'];
        $dato = $db['dato'];
       
        $antal = $db['antal'];
        $antal = $antal-1;
       
        if($antal == $nyhedsid)
        {
            $_SESSION['nyhedsid'] = -1;
        }
        else
        {
            $_SESSION['nyhedsid'] = $nyhedsid;
        }
    }
    ?>
    <html>
    <head>
    <link rel="stylesheet" href="gfx/nyheder.css" type="text/css" media="screen">
    <script type="text/JavaScript" language="JavaScript">
    window.setTimeout("window.location.reload(true)", 1000 * <?php echo $varighed; ?>);
    </script>
    </head>
    <body>
    <?php
    $nyhed = str_replace("/citytrafik","http://85.82.240.233/citytrafik",$nyhed);

    echo $gruppe."<br>".$dato."<br><br>".$nyhed."<br>";

    //$mysqlconnection = mysql_connect("85.82.240.233", "carterbu", "hgn1109")or die("<center><br><br><br><br><span style=\"font-size:50pt;color:#3f3f3f;\">Ude af drift</span><br><img src=\"gfx/ikoner/ingenconnect.gif\"><br><span style=\"color:#3f3f3f;\">Vi beklager.</span></center>");
    ?>
    </body>
    </html>
<?php   
}
?>
Avatar billede nielle Nybegynder
10. februar 2008 - 15:51 #7
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
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