Database maken website
Ik ben ondertussen al een paar dagen aan het surfen en vind heel veel informatie maar eerlijk gezegd snap ik er niet veel van...
Mijn webhosting ondersteund php en sql.
Vraag 1:
Mijn database gegevens staan in excel.
Kolom1 bevat serienummers onderdelen
kolom2 bouwjaar
kolom3 korte typebeschrijving
Ik dacht eraan om deze om te zetten naar acces
Vervolgens van acces naar .txt
daarna van.txt importeren via mysql van de webhosting.
Het is de bedoeling dat men gaat zoeken in kolom 1 (serienummers) en daarna de volledige rij te zien krijgt (bouwjaar en een korte beschrijving).
(kan dit?)
Mijn website ziet er qua structuur zo uit:
index.html
zoekpagina.html
links.html
Vraag2: (klopt dit)
Natuurlijk wil ik nu de zoekfunctie in zoekpagina.html inplanten...
Wat ik reeds heb gevonden is het volgende:
<form name="Zoekrecepten" method="post" action="Zoeken.php">
Trefwoord<br />
<input name="trefwoord" type="text" maxlength="50" style="width:97%;" />
<input type="image" src="images/zoeknormal.jpg" style="margin-top:5px;float:right;" alt="Zoeken" width="80px" height="19px" />
Vraag 3:
Nu zou ik ook een zoeken.php moeten aanmaken maar welke codes moeten hierin komen?
Is het systeem nu volledig om te functioneren of ontbreekt er nog vanalles?
Mvg,
Patrick
Vraag 2:
Zoeken kan je beter met GET doen. Anders moet als iemand op vorige drukt weer het POST-formulier voor zoekopdracht opnieuw verzenden.
Vraag 3: Verdiep je in formulierafhandeling en MySQL en SQL. met LIKE zou je vervolgens kunnen zoeken.
Vraag 1 is duidelijk voor me! Ga ik zeker proberen...
Vraag 2 begrijp ik wat je wil zeggen, maar ik ken niets van codes wijzigen...
Is het mogelijk om een voorbeeld script te geven?
Bij vraag 3 klopt het dat ik dan nog een extra formulier moet maken waar dan het resultaat in komt te staan? Is dit dan een php of html?
Ik ga wat googelen naar formulierafhandeling...
De hele afhandeling van het formulier en het zoeken wat erbij hoort moet je in PHP regelen.
Je zoekformulier ken je het best met GET laten werken i.p.v. POST.
Dan kan je in je PHP-script met $_GET['trefwoorden'] vervolgens de zoekopdrachten in uit de URL-balk halen.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
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
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
# 1: Als er op verzenden is gedrukt
if( $_SERVER['REQUEST_METHOD'] == 'GET' )
{
# 2: Als er een zoek woord meegegeven is
if( !empty( $_GET['search'] ) )
{
$qry = "";
# 3: Als query goed gelukt is
if( $sql = mysql_query( $qry ) )
{
# 4: Als er items zijn gevonden
if( mysql_num_rows( $sql ) > 0 )
{
/*
*
*
******* Hier je items weergeven, dit kan in een while loop, google er maar op!
*
*
*/
}
# 4: Anders; melding, geen resultaten gevonden
else
{
echo 'Er zijn geen zoek resultaten gevonden.';
}
}
# 3: Anders; foutmelding, fout in query
else
{
echo 'Er is een fout in de query opgetreden.';
}
}
# 2: Anders; Geen zoekwoord error
else
{
echo 'U heeft geen zoekwoord ingevult. Dit moet u dus wel doen!';
}
}
# 1: Anders, formulier weergeven
else
{
echo '
<form action="" method="get">
<label>Zoekwoord:</label>
<input name="search" type="text" />
<input type="submit" value="Zoeken" />
</form>
';
}
?>
# 1: Als er op verzenden is gedrukt
if( $_SERVER['REQUEST_METHOD'] == 'GET' )
{
# 2: Als er een zoek woord meegegeven is
if( !empty( $_GET['search'] ) )
{
$qry = "";
# 3: Als query goed gelukt is
if( $sql = mysql_query( $qry ) )
{
# 4: Als er items zijn gevonden
if( mysql_num_rows( $sql ) > 0 )
{
/*
*
*
******* Hier je items weergeven, dit kan in een while loop, google er maar op!
*
*
*/
}
# 4: Anders; melding, geen resultaten gevonden
else
{
echo 'Er zijn geen zoek resultaten gevonden.';
}
}
# 3: Anders; foutmelding, fout in query
else
{
echo 'Er is een fout in de query opgetreden.';
}
}
# 2: Anders; Geen zoekwoord error
else
{
echo 'U heeft geen zoekwoord ingevult. Dit moet u dus wel doen!';
}
}
# 1: Anders, formulier weergeven
else
{
echo '
<form action="" method="get">
<label>Zoekwoord:</label>
<input name="search" type="text" />
<input type="submit" value="Zoeken" />
</form>
';
}
?>
Het praktisch nut van een voorbeeld... leuk een voorbeeld jammer dat je nu nog niet weet wat het precies doet...
google maar gewoon op alles wat je tegenkomt... zeg wat je denkt dat het doet, dan geven wij aan of het klopt.
Deze heb je nodig voor je query:
Klikerdeklik
Klikerdeklik
Het meeste kan je vinden op php.net/HIERDEFUNCTIENAAM daar is de meest volledige uitleg naar mijn idee.
Gewijzigd op 04/11/2010 15:07:58 door Milo S
Ik ben op dit moment aan't prutsen met het cvs bestand in mysql te krijgen... Van de webhosting krijg ik hierover maar weinig info maar dat komt wel in orde...
Nu vervolgens moet ik met die php codes gaan werken. Ik zet even alles terug op een rijtje... Verbeter me waar nodig...
1)In het html bestand waar mijn zoekbalkje inkomt moet ik de code die ik had opgegeven invoegen (weliswaar aanpassen met "GET"). Als ik het goed begrepen heb dient die html enkel om weer te geven en php om acties uit te voeren...
Toch komt die php-code in het html blad?
2)Nu moet ik een zoeken.php bestand maken met bovenstaande code erin. Deze gaat dus bewerkingen uitvoeren met de db.
Dus de zoekactie en weergeef-actie uitvoeren.
Okay Hopelijk zit ik er niet helemaal naast... Moet ik nu nog een apart html blad maken waar het resultaat inkomt?
www.phptuts.nl aan een beginners cursus over PHP.
Ik zou zeggen, begin anders eens op Mijn code is gewoon een search bestand,,, het html formulier zit er al ingebakken. Je zit er wat mijn script betreft naast maar wat je zegt kan wel...
PHP code kan niet in een html blad, dan werkt het niet, je zult het op moeten slaan als .php dus een php blad.
En wat aar zegt is misschien ook wel handig :P
Gewijzigd op 04/11/2010 15:08:46 door Milo S
De uitleg die erin staat is vrij duidelijk. (maar voor een leek als ik toch soms moeilijk)
Ik heb op aanraden van het boek wampserver gedownloaded om wat te oefenen...
Verbeter me als ik fout ben...
Wat ik eerst moet doen is mijn database maken via mijn webhost. myadmin
(ik doe dat eerst via wampserver en exporteer deze dan naar pc zodat ik deze bij host kan importeren) Op deze manier omdat ik dan wat kan Oefenen.
Vervolgens php scripten schrijven.
Wat me nog niet duidelijk is:
-Volgens wampserver moet ik een index.php op de server plaatsen
Als ik het goed begrijp maakt deze connectie met sql db?
-een database.php maken???? (ergens op een website gelezen maar begrijp niet waarom)
-een search.php om de zoekopdracht en weergeefopdracht weer te geven.
Misschien is het beter als ik dit alles laat uitbesteden ???
Enig idee wat de kostprijs hiervoor kan zijn?
Gewijzigd op 05/11/2010 14:10:11 door Teun Hesseling
De db heet: oem
tabel heet: nummers
velden: oem, type, link
(oem is een code uit cijfers en soms een / teken)
(type is een korte tekst max 50 tekens)
(link is hyperlink)
mijn resultaat.php volgt hieronder:
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
44
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
44
<?php
$database="a";
$mysql_user = "a";
$mysql_password = "b";
$mysql_host = "c";
$mysql_table_prefix = "";
$success = mysql_pconnect ($mysql_host, $mysql_user, $mysql_password);
if (!$success)
die ("<b>Cannot connect to database, check if username, password and host are correct.</b>");
$success = mysql_select_db ($database);
if (!$success) {
print "<b>Cannot choose database, check if database name is correct.";
die();
}
$sql = "SELECT id,tekst FROM nummer WHERE oem LIKE '%$HTTP_POST_VARS[oem]%'";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo "<p>Resultaat id: <b>$row[id]</b><br>";
echo "Resultaat tekst: <b>$row[tekst]</b></p>";
}
echo "<a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
else
{
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
$database="a";
$mysql_user = "a";
$mysql_password = "b";
$mysql_host = "c";
$mysql_table_prefix = "";
$success = mysql_pconnect ($mysql_host, $mysql_user, $mysql_password);
if (!$success)
die ("<b>Cannot connect to database, check if username, password and host are correct.</b>");
$success = mysql_select_db ($database);
if (!$success) {
print "<b>Cannot choose database, check if database name is correct.";
die();
}
$sql = "SELECT id,tekst FROM nummer WHERE oem LIKE '%$HTTP_POST_VARS[oem]%'";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo "<p>Resultaat id: <b>$row[id]</b><br>";
echo "Resultaat tekst: <b>$row[tekst]</b></p>";
}
echo "<a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
else
{
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
Wat moet er nog veranderen?
maar op deze manier:
ook is je script gevoelig voor sql-injection (google maar even) dit kan je verhelpen door mysql_real_escape_string()
Gewijzigd op 08/11/2010 19:31:23 door Vincent Huisman
die mysql_real_escape_string daar begrijp ik niet veel van... Daar zal ik me op moeten verdiepen denk ik... BEstaat daar een eenvoudige oplossing voor?
Ik vermoed dat mijn sql code eveneens fout is...
$sql = "SELECT id,tekst FROM nummer WHERE oem LIKE '%$HTTP_POST_VARS[oem]%'";
Maak daar $_POST['oem'] van.
Nou heb je bij de eerste twee query's foutafhandeling en bij de SELECT query niet. Waarom niet?
Hou $vars buiten de quotes. Gebruik quotes om de keys in een array. Gebruik bij echo enkele quotes, dan hoef je de html-dubbele quotes niet te escapen.
Persistent connections, daar staat geen enkele shared host op te wachten.
Is onderstaande veilig tegen een sql-injection? Volstaat dit of moet ik nog maatregelen nemen?
$query = mysql_query("SELECT * FROM aaaa WHERE naam = '".mysql_real_escape_string($_POST['zoekwoord'])."'";
Alvast bedankt voor de leerrijke tips aan allen!
Naar mijn weten volstaat dit.
Dit is inderdaad goed tegen SQL injection.
Ik ben een tevreden man!
Kan je de code weergeven die dit voor elkaar heeft gekregen? :-)
Is misschien niet echt overzichtelijk...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$dbhost = 'HOSTNAAM';
$dbuser = 'GEBRNAAM';
$dbpass = 'PASW';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'DATABANKNAAM WAARTABELINSTAAT';
mysql_select_db($dbname);
if(isset($_POST['submit'])) {
?>
$dbhost = 'HOSTNAAM';
$dbuser = 'GEBRNAAM';
$dbpass = 'PASW';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'DATABANKNAAM WAARTABELINSTAAT';
mysql_select_db($dbname);
if(isset($_POST['submit'])) {
?>
<table border="1">
<tr>
<td><strong>KOLOM1</strong>
</td>
<td><strong>KOLOM2</strong>
<td><strong>KOLOM3</strong>
<td><strong>KOLOM4</strong>
<td><strong>KOLOM5</strong>
</tr>
</table>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$query = mysql_query("SELECT * FROM TABELNAAM WHERE KOLOMNAAMWAARINZOEKEN = '".mysql_real_escape_string($_POST['zoekwoord'])."'";
$resultaat = mysql_query($query) or die(mysql_error()); //Query uitvoeren
if(mysql_num_rows($resultaat)== 0) { //Mysql_num_rows geeft 0 als er geen resultaten zijn, of als de zoekterm in meer dan 50% van de resultaten voorkomt.
echo "<tr>
<td>Geen of te veel resultaten, maak je zoekopdracht specifieker.</td>
</tr>
";
} else {
while($zoek = mysql_fetch_assoc($resultaat)) {
?>
$query = mysql_query("SELECT * FROM TABELNAAM WHERE KOLOMNAAMWAARINZOEKEN = '".mysql_real_escape_string($_POST['zoekwoord'])."'";
$resultaat = mysql_query($query) or die(mysql_error()); //Query uitvoeren
if(mysql_num_rows($resultaat)== 0) { //Mysql_num_rows geeft 0 als er geen resultaten zijn, of als de zoekterm in meer dan 50% van de resultaten voorkomt.
echo "<tr>
<td>Geen of te veel resultaten, maak je zoekopdracht specifieker.</td>
</tr>
";
} else {
while($zoek = mysql_fetch_assoc($resultaat)) {
?>
<table border="1">
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<form method="post" action="">
OEM search: <input type="text" name="zoekwoord"/><br/><input type="submit" name="submit" value="Search"/>
</form>
Toevoeging op 15/11/2010 21:29:56:
Alles onder elkaar zetten in één .php bestand en de gegevens aanpassen aan jou gegevens...