SQL Query: $sql = "SELECT linktitle,linkdescription.........

Ik ben bezig met een SQL zoekpagina voor me site, en ik gebruik de volgende Query:

$sql = “SELECT linktitle,linkdescription FROM links LIKE ‘%$HTTP_POST_VARS[searchword]%’”;
alles werkt met deze query,
searchword word in een search.php gePOST wat dus hierheen word gestuurd, nou was mijn vraag hoe kan ik WHERE linktitle in meerdere zoeken ? bijv. WHERE linktitle,linkdescription,linkurl ofzo, als ik WHERE weglaat dan krijg ik een error, wie o wie kan me helpen :expressionless:

je zal moeten dynamisch je query opbouwen.

Trouwens, een like is relatief zwaar voor je database, dus bekijk het goed vooraf.

'where linktitle like ‘%test%’ and linkdescription like ‘%test2%’

Redelijk simpel

"SELECT naam FROM leden WHERE leeftijd >= ‘20’ AND functie <> ‘Admin’ ";

Simpelweg met de AND, of OR … tussen…

PS: een goede tut vind u op http://www.semeleer.nl/tut_sql.html

Seriues, daar hat ik nou net niet aan gedacht, ga het glijk uit proberen !

[quote:32e68e1438=“klaus”]je zal moeten dynamisch je query opbouwen.

Trouwens, een like is relatief zwaar voor je database, dus bekijk het goed vooraf.

'where linktitle like ‘%test%’ and linkdescription like ‘%test2%’[/quote:32e68e1438]

ach, je moet mijn site maar is WC3 checken, alst werkt vink ut goed :slight_smile:

[quote:1166e650a5="DarkRaverNL"]Seriues, daar hat ik nou net niet aan gedacht, ga het glijk uit proberen !

[quote:1166e650a5=“klaus”]je zal moeten dynamisch je query opbouwen.

Trouwens, een like is relatief zwaar voor je database, dus bekijk het goed vooraf.

'where linktitle like ‘%test%’ and linkdescription like ‘%test2%’[/quote:1166e650a5]

ach, je moet mijn site maar is WC3 checken, alst werkt vink ut goed :)[/quote:1166e650a5]

http://validator.w3.org/check?uri=http%3A%2F%2Fdarkraver.net%2F , maar 18 error’s :wink:

Wat doek fout ?

$sql = “SELECT linktitle,linkdescription FROM links WHERE linkdescription AND linktitle AND linkurl LIKE ‘%$HTTP_POST_VARS[searchword]%’”;

levert niks meer op… :frowning:

[quote:a7e7b92373=“Jello”][quote:a7e7b92373=“DarkRaverNL”]Seriues, daar hat ik nou net niet aan gedacht, ga het glijk uit proberen !

[quote:a7e7b92373=“klaus”]je zal moeten dynamisch je query opbouwen.

Trouwens, een like is relatief zwaar voor je database, dus bekijk het goed vooraf.

'where linktitle like ‘%test%’ and linkdescription like ‘%test2%’[/quote:a7e7b92373]

ach, je moet mijn site maar is WC3 checken, alst werkt vink ut goed :)[/quote:a7e7b92373]

http://validator.w3.org/check?uri=http%3A%2F%2Fdarkraver.net%2F , maar 18 error’s ;)[/quote:a7e7b92373]

Hah!! hat je vanmorgen moeten zien man, 304 errors, en kijk me links paginas maar enzo, kmoet nog een hoop doen, maar GROEN zaldie nooit woorden :stuck_out_tongue: al dat ge <br> is niet goed, ALT vergeten, <HEAD begint verkeerd, DOCTYPE niet gevonden, BORDER='0 is neit goed, wat een gezeur, ut werkt op me Safari dus WC3 meot nie zo zeiken :stuck_out_tongue:

[code:1:846ef35791] $sql = "SELECT linktitle,linkdescription FROM links WHERE linkdescription LIKE '%$HTTP_POST_VARS[searchword]% AND linktitle LIKE '%$HTTP_POST_VARS[searchword]% AND linkurl LIKE '%$HTTP_POST_VARS[searchword]%'";

[/code:1:846ef35791]

Wat dacht je hiervan?

syntax lijkt inderdaad (ook taalkundig) niet je ding nee :P

Error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/darkrave/public_html/result.php on line 15

uhg uhg, hmmmmzzors

PS: hij staat hier: http://darkraver.net/?p=search

Ja ne ja hoowww, was nog komaatjes vergeten, dowh :P ***Edit: nee toch niet, dan zoekt weer aleen in de eerste...hmmm***

En nou vintie ook niks meer op dingen die wer wel staat, BF1942 etc etc…uhg

Ik denk dat ze van het "W3C" ook niet zo blij zullen zijn met zo'n hollander die heel de tijd "WC3" op z'n site zet ... :P

[quote:e1ba2279fc="DarkRaverNL"]Wat doek fout ?

$sql = “SELECT linktitle,linkdescription FROM links WHERE linkdescription AND linktitle AND linkurl LIKE ‘%$HTTP_POST_VARS[searchword]%’”;

levert niks meer op… :frowning:
[/quote:e1ba2279fc]

Dit is een onzin query. Ik neem aan dat je een woord zoekt en dat het woord of in linkdescription, of in linktitle of linkurl moet voorkomen:

[code:1:e1ba2279fc]
$sql = “SELECT
linktitle,linkdescription
FROM links
WHERE
linkdescription LIKE ‘%$HTTP_POST_VARS[searchword]%’
OR linktitle LIKE '%$HTTP_POST_VARS[searchword]%
OR linkurl LIKE ‘%$HTTP_POST_VARS[searchword]%’”;
[/code:1:e1ba2279fc]

Ik heb hem gisterenavond nog via aim zitten helpen, en het werkt. Dus wat mij betreft is deze zaak [Opgelost].

Ja euhm kben ook maar een amatuertje :P kzal de volledige code vandaag nog ff posten voor de mense die er mischien wel wat aan hebbe :)

Oh en tennappel nog iets, als ik naar jou site ga nu naar die contact dinges, dan kirjg ik allemaal errors, was je er mee bezig ? khep dat REFERRER probleem waarschijnlijk opgelost :slight_smile:

[quote:49ecfaf9cb="DarkRaverNL"] Oh en tennappel nog iets, als ik naar jou site ga nu naar die contact dinges, dan kirjg ik allemaal errors, was je er mee bezig ? khep dat REFERRER probleem waarschijnlijk opgelost :)[/quote:49ecfaf9cb]

Ik krijg geen errors, dus kan ik ook niets testen. Screenshotje?

Neen, gisteren, nadat ik je die PM had gestuurd, maar nu ist weer normaal.

De code die nu werkt, maar nog ge optimaliseerd word is:

[code:1:17f72a30c9]

if (!@mysql_select_db(“darkrave_drcms”, @mysql_connect(“localhost”, “darkrave_drcms”, “dbpass”)))
{
echo “Error connecting Database.”;
exit();
}
$search=$HTTP_POST_VARS[searchword];
$search="%".$search."%";
$sql = “SELECT linktitle,linkdescription FROM links WHERE linkdescription LIKE '”.$search."’ OR linktitle LIKE ‘".$search."’ OR linkurl LIKE ‘".$search."’ ";

$res = mysql_query&#40;$sql&#41;;
$aantal = mysql_num_rows&#40;$res&#41;;


if &#40;mysql_num_rows&#40;$res&#41; &gt;= 1&#41;
&#123;	
echo &quot;&lt;b&gt; $aantal &lt;/b&gt; Search results for &lt;b&gt;$HTTP_POST_VARS&#91;searchword&#93;&lt;/b&gt;&#58;&lt;br /&gt;&lt;br /&gt;&quot;;
echo &quot;&lt;table width=100%  border=1 bordercolor='#C0C0C0' cellspacing=0 cellpadding=0&gt;&quot;;
    while &#40;$row = mysql_fetch_array&#40;$res&#41;&#41;
    &#123; 
       echo &quot;&lt;tr bgcolor='#cccccc'&gt;&lt;td border='0' background='images/bar.gif'&gt;&lt;b&gt;$row&#91;linktitle&#93;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;
       echo &quot;&lt;tr&gt;&lt;td colspan='2'&gt;&lt;p&gt;$row&#91;linkdescription&#93;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;

}
echo "</table>";
echo "<br /><a href="?p=search" title="search again">Search again</a>";
}
else
{
echo "<p>There where no results matching <b> $HTTP_POST_VARS[searchword]</b>.</p>";

    echo &quot;&lt;p&gt;&lt;a href=&quot;?p=search&quot; title=&quot;search again&quot;&gt;Search again&lt;/a&gt;&lt;/p&gt;&quot;;
&#125;

[/code:1:17f72a30c9]

Any comments r welcome :slight_smile:

@darkraver: je vroeg me in een PB of ik een geode methode wist voor het opslaan van wachtwoorden e.d.:

http://phpsec.org/articles/2005/password-hashing.html

Verder kan je dan iedere PHP pagina beginnen op de volgende manier:

[code:1:56b99f89e1]
<?php require_once(init.php); ?>
[/code:1:56b99f89e1]

In init.php zet je dan de volgende code:

[code:1:56b99f89e1]
session_start();
require_once("functies.php");

$password = GetPassword($_SESSION[‘user’]);

if($_SESSION[‘password’] != $password) {
header(“Location: login.php”);
exit;
}
[/code:1:56b99f89e1]

Eerst wordt het wachtwoord opgehaald via een functie. Die functie staat in functies.php. Het is de functie uit het artikel, waarmee je een wachtwoord ophaalt uit de database, op basis van een gebruikersnaam.

Wanneer er geen sessie is wordt je automatisch doorgelinkt naar een login pagina. Wanneer er wel een sessie is wordt gecontroleerd op het opgegeven wachtwoord wel en gelijk is aan het wachtwoord in de database.

Hoe worden die sessie variabelen ‘user’ en wachtwoord gevuld?

Dat doe je door in login.php een formulier te zetten waar je een gebruikersnaam en wachwoord opvraagt:

[code:1:56b99f89e1]
session_start();
require_once("functies.php");

$password = GetPassword($_POST[‘user’]);

if(!$_POST[submit] or $_POST[password] != $password) {
$s .= ‘<form method=“post” action=“login.php”>’.“n”;
$s .= ‘<p>’.“n”;
$s .= ‘Gebruiker: <input type=“text” name=“user” /><br />’.“n”;
$s .= ‘Wachtwoord: <input type=“text” name=“password” /><br />’.“n”;
$s .= ‘<input type=“submit” name=“submit” />’.“n”;
$s .= ‘<p>’.“n”;
$s .= ‘</form>’.“nn”;

echo $s;
&#125;

elseif ($_POST[wachtwoord] == $password) {
$_SESSION[‘password’] = $password;
$_SESSION[‘user’] = $_POST[‘user’];
header(“Location: index.php”);
exit;
}
[/code:1:56b99f89e1]

Wanneer de correcte combinatie van wwachtwoord en gebruikersnaam is ingevoerd wordt doorgelinkt naar index.php.

Index.php begint zelf weer met de eerste regel waarin init.php wordt opgevraagd. Wachtwoord wordt gecontroleerd en dit is nu correct en de rest van de pagina wordt uitgevoerd.

Ik gerbuikte nu:

[code:1:5e56d8e8c8]

<?php

session_start();

if (!isset($_SESSION[‘db_is_logged_in’]) || $_SESSION[‘db_is_logged_in’] !== true) {
// not logged in, move to login page
header(‘Location: login.php’);
exit;
} ?>

[/code:1:5e56d8e8c8]

Zal is naar de jouwe kijken :slight_smile:

Dit bedoel je:

[code:1:ece5d8fe96]

<?php

/* Check user details */

$passwordHash = sha1($_POST[‘password’]);

$sql = ‘SELECT username FROM user WHERE username = ? AND passwordHash = ?’;
$result = $db->query($sql, array($_POST[‘username’], $passwordHash));
if ($result->numRows() < 1)
{
/* Access denied /
echo ‘Sorry, your username or password was incorrect!’;
}
else
{
/
Log user in */
printf(‘Welcome back %s!’, $_POST[‘username’]);
}

?>

[/code:1:ece5d8fe96]
?