na submit pagina niet goed.
De vraag over wijzigen is niet een bewuste variabele, want ik heb het nu zo aangepast dat ik ze niet meer heb. Maar ik kan me voorstellen dat ik het later wel wil. Hoe kan dat dan.
Ik dacht even dat ik er was, maar ik krijg
Quote:
HTTP 500-fout
index.php ziet er nu zo uit:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<title>Basisbestand Geldboom</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="200" class="vak1">
<img src="images/logo.jpg" width="200"><BR>alpha.5
</td>
<td class="programmadeel">
<?php
header('Location: createdb.php');
exit;
?>
</td>
</tr>
</table>
</body>
</html>
<html>
<head>
<title>Basisbestand Geldboom</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="200" class="vak1">
<img src="images/logo.jpg" width="200"><BR>alpha.5
</td>
<td class="programmadeel">
<?php
header('Location: createdb.php');
exit;
?>
</td>
</tr>
</table>
</body>
</html>
createdb.php ziet er zo uit:
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
34
35
36
37
38
39
40
41
42
43
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
34
35
36
37
38
39
40
41
42
43
<!DOCTYPE html>
<html>
<head>
<title>Create DB Geldboom</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<h2>Eerste voorbereiding</h2>
<p>Vul daarom op deze pagina de gevraagde gegevens in.</p>
<form action="createdb.php" method="post">
<table>
<tr class="form1"><td>
<div class="pf">Database-naam</div></td><td><input type="text" id="Inp_Database" name="Inp_Database" tabindex="1">
<tr class="form1"><td>
<div class="pf">Gebruiker </div></td><td><input type="text" id="Inp_User" name="Inp_User" tabindex="2">
<tr class="form1"><td>
<div class="pf">Wachtwoord </div></td><td><input type="password" id="Inp_Password" name="Inp_Password" tabindex="3">
<tr class="form1"><td>
<div class="pf">Host-adres </div></td><td><input type="text" id="Inp_Host" name="Inp_Host" tabindex="4">
<tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden legen" tabindex="5">
</td><td>
<input type="submit" value="Installeren" id="knop_install" name="knop_install" alt="Installatie starten" tabindex="6">
<?php
if($_POST['knop_install'])
{
$db = $_POST['Inp_Database'];
$username = $_POST['Inp_User'];
$password = $_POST['Inp_Password'];
$hostname = $_POST['Inp_Host'];
$global_dbh = "mysql_connect(" . $hostname . ", " . $username . ", " . $password . ")";
echo "<p>mysql_select_db($db, $global_dbh);</p>";
}
?>
</table>
</form>
</body>
</html>
<html>
<head>
<title>Create DB Geldboom</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<h2>Eerste voorbereiding</h2>
<p>Vul daarom op deze pagina de gevraagde gegevens in.</p>
<form action="createdb.php" method="post">
<table>
<tr class="form1"><td>
<div class="pf">Database-naam</div></td><td><input type="text" id="Inp_Database" name="Inp_Database" tabindex="1">
<tr class="form1"><td>
<div class="pf">Gebruiker </div></td><td><input type="text" id="Inp_User" name="Inp_User" tabindex="2">
<tr class="form1"><td>
<div class="pf">Wachtwoord </div></td><td><input type="password" id="Inp_Password" name="Inp_Password" tabindex="3">
<tr class="form1"><td>
<div class="pf">Host-adres </div></td><td><input type="text" id="Inp_Host" name="Inp_Host" tabindex="4">
<tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden legen" tabindex="5">
</td><td>
<input type="submit" value="Installeren" id="knop_install" name="knop_install" alt="Installatie starten" tabindex="6">
<?php
if($_POST['knop_install'])
{
$db = $_POST['Inp_Database'];
$username = $_POST['Inp_User'];
$password = $_POST['Inp_Password'];
$hostname = $_POST['Inp_Host'];
$global_dbh = "mysql_connect(" . $hostname . ", " . $username . ", " . $password . ")";
echo "<p>mysql_select_db($db, $global_dbh);</p>";
}
?>
</table>
</form>
</body>
</html>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 27/07/2017 00:37:34 door - Ariën -
Mijn grote vermoeden gaat ervan uit dat je HTML voor je header() uitvoert, en dat mag juist niet.
Die header() je vóór je HTML en e.v.t. zichtbare witruimte uitvoeren.
Verder zie ik in je code een string met mysql_connect, en ik wou je toch graag even attenderen dat deze functies in PHP 7 ter ziele zijn gegaan. De betere vervanger zijn de functies uit de mysqli-driver (mysqli_*) of PDO.
Gewijzigd op 27/07/2017 00:42:22 door - Ariën -
Ook is nog steeds niet duidelijk welk mysterieus bestand al dan niet aanwezig moet zijn, of wat hier precies de betekenis van is. Of dat dit uberhaupt een goed idee is.
En tot slot, iets wat al eerder is aangehaald, wordt het nu misschien tijd om eens na te gaan denken over hoe je je pagina's indeelt en opdeelt. In bovenstaand fragment stop je midden in het weergeven van een pagina het verwerken van een formulier.
Zoals al eerder aangegeven, deel dit eens op in stappen. Een verwerkstap van een formulier zou eigenlijk, voor de goede orde, nooit direct output moeten produceren. Het is een verwerkstap. Direct na uitvoer van de stap zou je doorverwezen moeten worden naar een andere pagina. Ofwel een "OK" pagina, ofwel een "not OK" pagina, wat meestal neerkomt op het opnieuw tonen van het formulier met de reeds ingevulde informatie + indicaties hoe deze te verbeteren.
PS ben je hier niet opnieuw het wiel aan het uitvinden? Ik ben er persoonlijk geen fan van, maar ken je tools zoals phpMyAdmin? Die doen de klus van webbased databasebeheer waarschijnlijk beter/uitgebreider dan iets wat je zelf rolt.
Gewijzigd op 27/07/2017 10:42:33 door Thomas van den Heuvel
inc.php.
De queries uitvoeren wil je niet door gebruikers in phpMyAdmin laten doen. ;-)
Ikzelf heb ooit eens een installatiescript gebouwd die *.sql-files uitlas en uitvoerde. Dat scheelt weer een hoop queries in je createdb.php. Onthoud wel dat niet iedereen zomaar rechten heeft om een database aan te maken via SQL. Vaak gaat dat via controlpanels met hogere rechten.
Gewijzigd op 27/07/2017 11:24:59 door - Ariën -
Dit is zoiets als continu controleren of je je veters gestrikt hebt, maar dat zou een vast onderdeel moeten zijn van het aantrekken van je schoenen.
(bespaar me grappen dat veters los kunnen gaan en er ook schoenen met klitteband bestaan enzo lol)
Toegegeven, misschien kan zoiets handig zijn, maar dan toch alleen in een geavanceerd systeem, bijvoorbeeld voor modulebeheer waarbij je code- en database-wijzigingen versioned ofzo. Maar het lijkt mij dat als je zo'n permanente controle achterwege kunt laten als je dit gewoon onderdeel maakt van een vaste installatieroutine dat dat de voorkeur heeft boven deze constructie.
Ik wil dan weten of dat er een database is geïnstalleerd of niet. Als dit niet zo is, wil ik dat eenmalig uitvoeren. Maar ik maak het niet alleen voor me zelf, maar ook voor een nog onbekend aantal andere mensen. Dus die moeten dat ook eenmalig kunnen doen.
Maar is de database eenmaal geïnstalleerd, dan wil ik pas echt van start met het programma waar het mij om gaat. Ook die moet ik dan natuurlijk vanuit index.php aansturen.
Het geen wat hier boven beschreven staat is het geen ik eerst aan de praat wil hebben, Maar tegelijk hoop ik er ook een hoop van te leren. Maar bestanden nesten of juist niet, tsja dat blijven keuzes. Maar ik denk dat mijn eerste opzet niet goed was. Nu ben ik beter op weg, maar omdat ik de code die ik voorgedragen kreeg niet helemaal begrijp, heb ik die over de eerder bedachte code heen gezet in de verwachting dat dat zou werken.
Waar kan ik de error_log vinden Ariën?
Met een voortschrijdend inzicht, bedenk ik nu dat het handiger is om gewoon voor de installatie te staten met een bestand install.php
Dan wil ik natuurlijk wel kijken of dat er een database actief is.
Gewijzigd op 27/07/2017 22:53:27 door Frits van Leeuwen
Klinkt wel leuk, maar dat is niet praktisch. Want het feit dat de configuratie bestaat zegt niets over de database. En om een hoop overhead te gaan veroorzaken voor iets dat voor zichzelf zou moeten spreken (het aanwezig zijn van de database) is een stap te ver.
Ik wil nu dat er eerst met install.php gestart wordt. Als iemand toch index.php start is er geen database en werkt het niet. Dan wil ik aangeven dat install.php gestart moet worden, of dat er naartoe gesprongen kan worden. Deze combinatie zou helemaal mooi zijn.
Dat lijkt mij onderdeel van een installatie. Voor mensen die wat minder tech savvy zijn is dat allemaal technische mumbo jumbo waar ze niets mee kunnen, te meer als er iets misgaat.
1 woord: handleiding.
Het laatste dat je wil is dat je met een race condition komt te zitten als "oh installatie is nog niet voltooid" en een willekeurige bezoeker komt op je pagina. Geef hooguit foutmeldingen, maar start geen configuratieproces zonder dat iemand precies weet hoe en wat.
Gewijzigd op 28/07/2017 00:36:20 door Ben van Velzen
Zorg eigenlijk gewoon dat je in de eerste installatiestap je databaseconnectie controleert aan de hand van de invoer ervan. En houd goed bij welke stap er is uitgevoerd.