join databases
Tot op heden heb ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql = "SELECT id,titel,verhaal_google,url_trailer_wmv FROM episodes WHERE verhaal_google LIKE '%$HTTP_POST_VARS[zoekterm]%' LEFT JOIN episode_thumbs AS id ON id = id";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo "<p>Titel: <b>$row[titel]</b><br>";
echo "<b>$row[verhaal_google]</b><br>";
echo "<b><a href=\"$row[url_trailer_wmv]\">";
echo "<b><img src=\"$row[thumb]\" height=\"150\" width=\"200\" border=\"0\"></a></b></p>";
}
echo "<a href=\"index.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo "<p>Titel: <b>$row[titel]</b><br>";
echo "<b>$row[verhaal_google]</b><br>";
echo "<b><a href=\"$row[url_trailer_wmv]\">";
echo "<b><img src=\"$row[thumb]\" height=\"150\" width=\"200\" border=\"0\"></a></b></p>";
}
echo "<a href=\"index.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
Enkel krijg ik dus een giga foutmelding:
Code (php)
1
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /blabla/zoeken/resultaat.php on line 9
Weet iemand hier een passende oplossing voor?
Gewijzigd op 01/01/1970 01:00:00 door Sam Koster
Bouw fatsoenlijke foutafhandeling in.
Hou $vars buiten quotes.
http://www.phphulp.nl/php/tutorials/3/100/, lichtelijk aangepast, maar werkt zonder de join perfect.
de zoekfunctie komt van Die JOIN hoort voor de WHERE te staan.
Code (php)
1
$sql = "SELECT id,titel,verhaal_google,url_trailer_wmv FROM episodes LEFT JOIN episode_thumbs AS id ON id = id WHERE verhaal_google LIKE '%$HTTP_POST_VARS[zoekterm]%'";
zoiets?
nou, ik weet het echt niet meer:(.. de sql quiry klopt van geen kant. Nogmaals, zonder de join werkt het prima, kan iemand me plz de juiste quiry geven??
mijn excuus:( ik word hier gwoon gefrustreerd van. De site wil ik vanavond gewoon klaar hebben, zat eerst te prutsen met een xml naar database connectie, dat onderdeel af, nu dit probleem:(
En wat doet ie nu? Errors?
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT id,titel,verhaal_google,url_trailer_wmv FROM episodes AS epi LEFT JOIN episode_thumbs AS thu ON thu.id = epi.id WHERE verhaal_google LIKE '%".mysql_real_escape_string($_POST['zoekterm'])."%'";
?>
$sql = "SELECT id,titel,verhaal_google,url_trailer_wmv FROM episodes AS epi LEFT JOIN episode_thumbs AS thu ON thu.id = epi.id WHERE verhaal_google LIKE '%".mysql_real_escape_string($_POST['zoekterm'])."%'";
?>
Dank je robert, jij ook santhe, ik had de error meldingen erop gezet, en kwam idd iets raars tegen, colum epi.id bestond niet, ik database even nagecheckt, liep idd niet echt synchroon. Probleem is nu opgelost:) thnx:)
Waar heb je dit script opgegraven? Dit stamt nog uit de prehistorie! Al sinds jaar en dag gebruik je voor POST-variabelen $_POST en dan wordt het dus $_POST['zoekterm'].
En waarom je niets aan beveiliging doet, is mij ook een raadsel. Userinput mag helemaal nooit zonder beveiliging in een query terecht komen. Gebruik mysql_real_escape_string() en zet eventuele magic_quotes uit (in .htaccess of php.ini)
Code (php)
1
2
3
4
2
3
4
<form method="post" action="resultaat.php">
<input id="zoekboxveld" type="text" name="zoekterm" /><br>
<input type="submit" value="Zoeken" />
</form>
<input id="zoekboxveld" type="text" name="zoekterm" /><br>
<input type="submit" value="Zoeken" />
</form>
Linkje van dit script kwam ik tegen op het phphulp forum, http://www.phphulp.nl/php/tutorials/3/100/
De pagination zelf werkt prima, geen klachten over, maar de hoeveelheid records zorgen ervoor dat er soms wel 280 pagina's zijn, alle records die beginnen met een d bijv zorgen daar bijv. voor. Deze records bestaan ook allemaal, dus daar ligt het niet aan. Ook geen duplicaten, k heb het nagecheckt.
iig, het probleem ligt dus in de hoeveelheid pagina's die hij weergeeft. Nu kwam ik (via een andere website) met het briljante idee om maximaal 10 pagina's tegelijk als optie te geven. Hoe krijg ik dit voor elkaar?
Hieronder mijn pagination stukje:
Bovenin:
Code (php)
1
2
3
4
2
3
4
$Limit = 15; //Number of results per page
$SearchString=$_POST["zoekterm"]; // Get the search tearm
If($SearchString == "") $SearchString=$_GET["zoekterm"]; // Get the search tearm
If($SearchString == "") {
$SearchString=$_POST["zoekterm"]; // Get the search tearm
If($SearchString == "") $SearchString=$_GET["zoekterm"]; // Get the search tearm
If($SearchString == "") {
Onderin:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$Nav="";
If($page > 1) {
$Nav .= "<A HREF=\"resultaat.php?page=" . ($page-1) . "&zoekterm=" .urlencode($SearchString) . "\">«</A> ";
}
For($i = 1 ; $i <= $NumberOfPages ; $i++) {
If($i == $page) {
$Nav .= "<B>$i</B> ";
}Else{
$Nav .= "<A HREF=\"resultaat.php?page=" . $i . "&zoekterm=" .urlencode($SearchString) . "\">$i</A> ";
}
}
If($page < $NumberOfPages) {
$Nav .= "<A HREF=\"resultaat.php?page=" . ($page+1) . "&zoekterm=" .urlencode($SearchString) . "\">»</A>";
}
Echo "" . $Nav;
If($page > 1) {
$Nav .= "<A HREF=\"resultaat.php?page=" . ($page-1) . "&zoekterm=" .urlencode($SearchString) . "\">«</A> ";
}
For($i = 1 ; $i <= $NumberOfPages ; $i++) {
If($i == $page) {
$Nav .= "<B>$i</B> ";
}Else{
$Nav .= "<A HREF=\"resultaat.php?page=" . $i . "&zoekterm=" .urlencode($SearchString) . "\">$i</A> ";
}
}
If($page < $NumberOfPages) {
$Nav .= "<A HREF=\"resultaat.php?page=" . ($page+1) . "&zoekterm=" .urlencode($SearchString) . "\">»</A>";
}
Echo "" . $Nav;
Heeft iemand een idee?
Code (php)
Je krijgt nu per pagina 10 resultaten.
Let er wel op dat je $_GET['page'] (of $start) altijd gevuld is. Dus met een 1 of etc.
Even voor de duidelijkheid, daar staat dus dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
//Get the number of pages
$NumberOfPages=ceil($NumberOfResults/$Limit);
$start = 0;
if(isset($_GET['page'])
{
$start = intval($_GET['page']);
}
$SearchResult=mysql_query("SELECT epi.id,thumb,titel,verhaal_google,url_trailer_wmv FROM episodes AS epi LEFT JOIN episode_thumbs AS thu ON thu.episode_id = epi.id AND height= 200 WHERE verhaal_google LIKE '%$zoekterm%' LIMIT " . ($page-1)*$Limit . ", ".$start.") or die(mysql_error());
While($row = mysql_fetch_object($SearchResult)) {
[/code]
//Get the number of pages
$NumberOfPages=ceil($NumberOfResults/$Limit);
$start = 0;
if(isset($_GET['page'])
{
$start = intval($_GET['page']);
}
$SearchResult=mysql_query("SELECT epi.id,thumb,titel,verhaal_google,url_trailer_wmv FROM episodes AS epi LEFT JOIN episode_thumbs AS thu ON thu.episode_id = epi.id AND height= 200 WHERE verhaal_google LIKE '%$zoekterm%' LIMIT " . ($page-1)*$Limit . ", ".$start.") or die(mysql_error());
While($row = mysql_fetch_object($SearchResult)) {
[/code]
Kijk eens goed naar de kleurtjes.... er gaat iets fout aan het eind...
Wijzig naar .
Ik was gewoon een ) vergeten na de isset.
Tevens zal daarna de fout komen die Crispijn (Dordtenaar?) aanwijst.
Na die $start." moet nog een " komen.
Eddy Erkelens schreef op 18.09.2008 09:03:
Na die $start." moet nog een " komen.
Nee, die ene " is daar helemaal overbodig. Dus na $start komt niks.
Beetje afhankelijk of er nog wat na komt of niet. In dit geval dus niet.