mysql_connect met sessions
Ik heb een klein stukje script gemaakt om mijzelf te kunnen laten kiezen tussen verschillende databases van een cms systeem. Dit is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
// Gegevens voor inloggen in database
$host = 'localhost';
//Verbinding met de database maken
$ConnectDatabase = mysql_connect($host, $_SESSION['username'], $_SESSION['password']);
//
$DatabaseLijst = mysql_list_dbs($ConnectDatabase);
$Databases = mysql_num_rows($DatabaseLijst);
$Teller = 0;
while($Teller<$Databases){
$row = mysql_fetch_row($DatabaseLijst);
$DatabaseKeuze.= "<option value=\"".$row[0]."\">".$row[0]."</option>";
$Teller++;
}
if(!isset($_SESSION['DB'])){
$_SESSION['DB'] = "cms";
}
else if(isset($_POST['SubmitDB'])){
$_SESSION['DB'] = $_POST['Database_lijst'];
}
//
print_r($_SESSION);
$SelectDatabase = mysql_select_db($_SESSION['DB']);
if($ConnectDatabase){
if(!$SelectDatabase){
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}else{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
// Gegevens voor inloggen in database
$host = 'localhost';
//Verbinding met de database maken
$ConnectDatabase = mysql_connect($host, $_SESSION['username'], $_SESSION['password']);
//
$DatabaseLijst = mysql_list_dbs($ConnectDatabase);
$Databases = mysql_num_rows($DatabaseLijst);
$Teller = 0;
while($Teller<$Databases){
$row = mysql_fetch_row($DatabaseLijst);
$DatabaseKeuze.= "<option value=\"".$row[0]."\">".$row[0]."</option>";
$Teller++;
}
if(!isset($_SESSION['DB'])){
$_SESSION['DB'] = "cms";
}
else if(isset($_POST['SubmitDB'])){
$_SESSION['DB'] = $_POST['Database_lijst'];
}
//
print_r($_SESSION);
$SelectDatabase = mysql_select_db($_SESSION['DB']);
if($ConnectDatabase){
if(!$SelectDatabase){
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}else{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
Dit werkt wel naar behoren, alleen het probleem is dat het laden van de pagina's in het cms ineens heel erg traag gaan. Heeft iemand van jullie daar een antwoord op, waarom dat gebeurt of hoe het op te lossen is?
Gewijzigd op 01/01/1970 01:00:00 door Michel de Groot
Hm, waarom zou je laten switchen? Waarom niet alles in één database?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$DatabaseLijst = mysql_list_dbs($ConnectDatabase);
while($row = mysql_fetch_row($DatabaseLijst)) {
$DatabaseKeuze.= "<option value=\"".$row[0]."\">".$row[0]."</option>";
}
?>
$DatabaseLijst = mysql_list_dbs($ConnectDatabase);
while($row = mysql_fetch_row($DatabaseLijst)) {
$DatabaseKeuze.= "<option value=\"".$row[0]."\">".$row[0]."</option>";
}
?>
Hoe bedoel je alles in één database? Ik maak graag nieuwe databases voor verschillende klanten aan, en ik wilde graag maar 1 centrale versie van het cms laten draaien.
Daarop wordt dan ingelogd door de klant en via die inloggegevens worden dan de databases van die klant opgesomt.
@Martijn Versluis
Je hebt helemaal gelijk en heb het meteen aangepast!
Maar weten jullie toevallig ook waarom het laden van de pagina's ineens zo langzaam gaat als ik die sessions gebruik voor de database gegevens?
Maar hoe groot is je database lijst?
=> $_SESSION['DB'] = $_POST['Database_lijst'];
Moet die session niet 1 bepaalde database zijn inplaats van een hele lijst?
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Mijn database lijst is op dit moment niet zo groot, 5 in totaal.
Dit hoort er eigenlijk nog bij en sit staat in de header van elke pagina:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<form name="DBFormulier" id="DBFormulier" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>Gebruiker: <strong><?php echo $naam; ?>/strong> | Website: <strong><a href="<?php echo $Siteurl; ?>" target="_blank" title="<?php echo $Sitenaam; ?>"><?php echo $Siteurl; ?></a></strong> | </td>
<td><select name="Database_lijst" id="Database_lijst">
<?php echo $DatabaseKeuze; ?>
</select></td>
<td><input type="submit" name="SubmitDB" id="SubmitDB" value="Selecteer" /></td>
</tr>
</table>
</form>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>Gebruiker: <strong><?php echo $naam; ?>/strong> | Website: <strong><a href="<?php echo $Siteurl; ?>" target="_blank" title="<?php echo $Sitenaam; ?>"><?php echo $Siteurl; ?></a></strong> | </td>
<td><select name="Database_lijst" id="Database_lijst">
<?php echo $DatabaseKeuze; ?>
</select></td>
<td><input type="submit" name="SubmitDB" id="SubmitDB" value="Selecteer" /></td>
</tr>
</table>
</form>
Gewijzigd op 01/01/1970 01:00:00 door Michel de Groot
Wat je zou kunnen doen is even die code je hebt gepost stukje voor stukje uitvoeren. Dan zal je snel zien waarom het zolang duurt.
Ik heb net even snel alles stap voor stap doorgelopen en hij gaat langzaam laden op het moment dat ik de lijst van databases ga opvragen met:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$DatabaseLijst = mysql_list_dbs($ConnectDatabase);
while($row = mysql_fetch_row($DatabaseLijst)) {
$DatabaseKeuze.= "<option value=\"".$row[0]."\">".str_replace("miezznl_", "", $row[0])."</option>";
}
?>
$DatabaseLijst = mysql_list_dbs($ConnectDatabase);
while($row = mysql_fetch_row($DatabaseLijst)) {
$DatabaseKeuze.= "<option value=\"".$row[0]."\">".str_replace("miezznl_", "", $row[0])."</option>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Michel de Groot