[PHP] Include werkt niet goed ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
/*  db.php:
    Script to make the (MySQL)-DataBase connection */
    
$db_host = "**";
$db_user = "**";
$db_passwd = "**";
$db_database = "**";

function connect2db() {
    global $db_host, $db_user, $db_passwd, $db_database;
        
    mysql_connect($db_host,$db_user,$db_passwd) or die("CANNOT CONNECT TO DATABASE !!");
    mysql_select_db($db_database) or die("CANNOT SELECT DATABASE !!");
}

?>


Dit bestandje include ik in al m'n scripts die een DB connectie maken. Alleen krijg ik dus elke keer de melding CANNOT SELECT DATABASE !!. Maar als ik dit er handmatig ingooi werkt het wel.
Waarom werkt deze include/function niet naar behoren ? :/

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 29 april 2003 @ 02:27:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
/*  db.php:
    Script to make the (MySQL)-DataBase connection */
    
$db_host = "**";
$db_user = "**";
$db_passwd = "**";
$db_database = "**";

function connect2db() {
    global $db_host, $db_user, $db_passwd, $db_database;
        
    mysql_connect($db_host,$db_user,$db_passwd) or die("CANNOT CONNECT TO DATABASE !!");
    mysql_select_db($db_database) or die("CANNOT SELECT DATABASE !!");
}

?>


Dit bestandje include ik in al m'n scripts die een DB connectie maken. Alleen krijg ik dus elke keer de melding CANNOT SELECT DATABASE !!. Maar als ik dit er handmatig ingooi werkt het wel.
Waarom werkt deze include/function niet naar behoren ? :/
Roep je de functie dan wel aan?

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Uiteraard :) :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
include "_includes/db.php";

connect2db();

$query = "SELECT id, date, time, user, title, content FROM clan_news ORDER BY id DESC";

$result = mysql_query($query);

while ($obj = mysql_fetch_object($result)){
    echo "<tr>\n";
    echo " <td valign=\"top\"><span class=\"NewsBarsL\">$obj->date</span><span class=\"NewsBarsM\">&nbsp;</span><span class=\"NewsBarsR\">by: $obj->user&nbsp;</span>";
    echo "  <br>\n";
    echo "  <span class=\"NewsSpace\"><br>$obj->content<br><br></span>"; 
    echo " </td>\n";
    echo "</tr>\n"; 
}
?>

[ Voor 96% gewijzigd door Verwijderd op 29-04-2003 02:34 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Volgens mij is je probleem onmogelijk en omschrijf je het dus niet goed. Er moet iets anders aan de hand zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zien dan ? http://www.exsilium.com/clan/index.php

Volgens mij is het wel duidelijk dacht ik zo ?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zal wel met scope te maken hebben denk ik. Probeer dit eens:

db.php:
PHP:
1
2
3
4
5
6
7
8
9
10
function connect2db() { 

    global $db_host, $db_user, $db_passwd, $db_database; 
         
    $conn_id = mysql_connect($db_host,$db_user,$db_passwd) or die("CANNOT CONNECT TO DATABASE !!"); 
    mysql_select_db($db_database, $conn_id) or die("CANNOT SELECT DATABASE !!"); 

  return $conn_id;

}


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

include "_includes/db.php"; 

$conn_id = connect2db(); 

$query = "SELECT id, date, time, user, title, content FROM clan_news ORDER BY id DESC"; 

$result = mysql_query($query, $conn_id); 

// etcetera

?>

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat haalt ook nix uit Crisp :) Nog steeds hetzelfde :)

't rare is echter wel dat ie de connectie wel maakt, en pas bij het selecteren van de DB de mist in gaat :S

[ Voor 51% gewijzigd door Verwijderd op 29-04-2003 02:42 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 29 April 2003 @ 02:41:
Dat haalt ook nix uit Crisp :) Nog steeds hetzelfde :)

't rare is echter wel dat ie de connectie wel maakt, en pas bij het selecteren van de DB de mist in gaat :S
Dan bestaat de database dus waarschijnlijk niet. Weet je zeker dat het geen typo ergens is, en dat je er wel rechten toe hebt?

[ Voor 6% gewijzigd door crisp op 29-04-2003 02:46 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Verwijderd schreef op 29 april 2003 @ 02:38:
Zien dan ? http://www.exsilium.com/clan/index.php

Volgens mij is het wel duidelijk dacht ik zo ?
Ik begrijp je probleemomschrijving wel (die is goed), maar ik geloof niet dat het probleem dat jij omschrijft op kan treden. Aangezien je het probleem niet zomaar uit je duim zuigt, bestaat het wel, maar het is anders dan je doet voorkomen.

Ik kan aan die URL ook niet zien of de pagina gegenereerd wordt met een include en een function call of direct vanuit de PHP code. Daar heb ik dus niets aan.

Acties:
  • 0 Henk 'm!

  • sebas
  • Registratie: April 2000
  • Laatst online: 03-09 12:51
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function connect2db() { 

    global $db_host, $db_user, $db_passwd, $db_database; 
    
    $db_host = $_GLOBALS['db_host'];
    $db_user = $_GLOBALS['db_user'];
    $db_passwd = $_GLOBALS['db_passwd'];
    $db_db_database = $_GLOBALS['db_database'];
         
    $conn_id = mysql_connect($db_host,$db_user,$db_passwd) or die(mysql_error()); 
    print mysql_errno() . ": " . mysql_error(). "\n";
    
    mysql_select_db($db_database, $conn_id) or die("CANNOT SELECT DATABASE !!"); 
    print mysql_errno() . ": " . mysql_error(). "\n";
    return $conn_id;

}


Probeer deze code eens, misschien dat je een probleem met globals hebt, maar in ieder geval zie je op die manier wat duidelijker wat er u:berhaupt misgaat met de database. Gewoon "CANNOT CONNECT" uitdraaien verdekt alleen een mogelijk duidelijkere errormessage.

Everyone complains of his memory, no one of his judgement.


Acties:
  • 0 Henk 'm!

Verwijderd

Soms is een database beveiligd waardoor dit wel werkt:
PHP:
1
2
3
<?
mysql_connect("www.lala.com", "username", "passwd");
?>
Maar dit niet:
PHP:
1
2
3
4
$host = "www.lala.com";
$username = "username";
$password = "psswd";
mysql_connect($host, $username, $password);
Het global maken van variabelen is trouwens 'vies'. Geef de waardes in je functie als parameters meer:
PHP:
1
2
3
4
5
<?
function dbconnect($host, $username, $password) {
  // functie-body
}
dbconnect("ww.lala.com","username", "passwd");

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
sKiLL4:
Soms is een database beveiligd waardoor dit wel werkt

Gelieve een bron hiervoor te plaatsen :+

[ Voor 6% gewijzigd door Grum op 29-04-2003 21:00 ]


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
@1337_jR -> Waarom gebruik je überhaubt een functie in je include? De db username en pass definieer je in hetzelfde bestand als waarin je de connect-functie definieert. Waarschijnlijk zul je altijd meteen je connect-functie aanroepen de regel nadat je de include uitvoert. Waarom dan die functie? Zeker aangezien je geen parameters kan invoeren. In dit geval zou ik de functie in je include vervangen door een directe mysql_connect. Heb je ook geen ellende met je scope.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.

Pagina: 1