Anoniem2 Geplaatst: 4 november 2009 Delen Geplaatst: 4 november 2009 Het is een aardige tijd geleden maar ik ben inmidels weer bezig met me website.\r\nMomenteel ben ik nogsteeds bezig met het photo album.\r\nNou wil ik bezoekers de mogenlijkheid geven om naar photos te zoeken aan de hand van informatie die ik heb opgeslagen in mijn MySQL database.\r\n\r\nNou is mijn vraag hoe kan ik zo\'n zoek script maaken die aan de hand van een trefwoord in mijn database de bijbehoorende photo ophaald?\r\n\r\nOp [url]http://www.sjoukito.com/galerie2.php[/url] heb ik een begin gemaakt van mijn album pagina, op en aanmerkingen zijn uiteraard altijd welkom :-p Quote Link naar reactie
Anoniem2 Geplaatst: 4 november 2009 Auteur Delen Geplaatst: 4 november 2009 Het makkelijkst is, mits je tabel type MyIsam is, om LIKE te gebruiken. Bijvoorbeeld zo:\n[code]\nSELECT id, titel, beschrijving FROM tabel WHERE titel LIKE \'%zoekwoord%\'\n[/code]Je kan ook iets doen met FULLTEXT search:\n[code]SELECT id, titel, beschrijving FROM tabel WHERE MATCH(titel, beschrijving) AGAINST (\'zoekwoord\')[/code] Quote Link naar reactie
Anoniem2 Geplaatst: 6 november 2009 Auteur Delen Geplaatst: 6 november 2009 Bestaan hier ook gedeeltenlijke of kant en klaare scripts voor? Quote Link naar reactie
Anoniem2 Geplaatst: 6 november 2009 Auteur Delen Geplaatst: 6 november 2009 Er zullen ongetwijfeld kant en klare scripts zijn, maar die ken ik verder niet. Het is redelijk simpel om zoiets te maken, het volgende zou in principe al kunnen werken:\n[php]\n\';\n while($row = mysql_fetch_assoc($result))\n {\n echo $row[\'titel\'].\'\'.$row[\'beschrijving\'];\n }\n }\n else\n {\n echo \'Er is iets fout gegaan bij het zoeken in de database.\';\n }\n}\nelse\n{\n ?>\n \n Zoeken op titel: \n \n \n \n[/php]Je zult een aantal waarden moeten aanpassen, want ik weet niet hoe jouw datamodel er uit ziet. Daarnaast zul je waarschijnlijk de HTML ook wat willen opmaken.\nIk ben er hier vanuit gegaan dat er al een database connectie is, je moet dus nog wel je databaseconnectie aan het begin van het script maken. Bijv. door gewoon de code uit een ander script te kopiëren of door een config.php bestand te includen.\n\nMocht je wat uitleg nodig hebben bij het stukje code hier boven dan hoor ik het wel. Quote Link naar reactie
Anoniem2 Geplaatst: 9 november 2009 Auteur Delen Geplaatst: 9 november 2009 Ok dit is op zich een reddenlijk simpel scriptje en werkt netjes.\r\nNou is het de bedoeling dat men in het MySQL database kan zoeken aan de hand van verschilende zoek mogenlijkheden namenlijk op bijvoorbeeld een plaatsnaam, datum, onderwerp etc. \r\nin het database staat dus de naam van een afbeelding, de datum, de locatie het onderwerp en veel meer.\r\nUiteindelijk moet er de bijbehoorende fotos in de tabel op de website geplaatst worden op deze pagina [url]http://www.sjoukito.com/galerie2.php[/url] (de layout is uiteraard nog lang niet af)\r\n\r\nDus bijvoorbeeld als mensen zoeken naar een foto uit Indonesie dan krijgt men de 16 meest recente fotos te zien die gemaakt zijn in Indonesie met er onder de bijbehoorende titel en kan men de overige resultaten zien door verder te bladeren. \r\n\r\nHoe kan ik dit het beste maken?\r\nIk neem aan dat ik het betrefende script aandig moet uitbreiden maar wat zijn nou de echte kern punten? Quote Link naar reactie
Anoniem2 Geplaatst: 9 november 2009 Auteur Delen Geplaatst: 9 november 2009 Het kernpunt is de SQL query. De layout moet dusdanig zijn dat deze altijd gebruikt kan worden ongeacht de gebruikte query.\n\nWat betreft die query heb je twee opties: een AND of een OR query. Bij de AND query worden alleen de resultaten getoond die aan alle opgegeven eisen voldoen. Bij de OR query worden alle resultaten getoond die aan minimaal één van de opgegeven eisen voldoen.\n\nQuery wordt dan zoiets:\n[php]$qryAND = \"SELECT * FROM `tabelnaam` WHERE (`naam` LIKE \'%\".$naam.\"%\' AND `locatie` LIKE \'%\".$locatie.\"%\' AND `datum` < \'\".$maxdatum.\"\' AND `datum` > \'\".$mindatum.\"\') ORDER BY `id` DESC LIMIT 16\";[/php]\n\nDesgewenst kun je AND door OR vervangen:\n[php]$qryOR = \"SELECT * FROM `tabelnaam` WHERE (`naam` LIKE \'%\".$naam.\"%\' OR `locatie` LIKE \'%\".$locatie.\"%\' OR (`datum` < \'\".$maxdatum.\"\' AND `datum` > \'\".$mindatum.\"\')) ORDER BY `id` DESC LIMIT 16\";[/php]\n\nDe LIMIT 16 zorgt ervoor dat alleen de 16 eerstgevonden record worden getoond. Quote Link naar reactie
Anoniem2 Geplaatst: 9 januari 2010 Auteur Delen Geplaatst: 9 januari 2010 Ik heb een zoek script formulier gemaakt welke uiteindelijk het \"uitgebreid zoeken\"script moet worden voor de foto\'s in het database. [url]http://www.sjoukito.com/search.php[/url]\n\nuiteindelijk moeten de resultaten hier van dus getoond worden op deze site met een limiet van 16 foto\'s per scherm en als men dus op de onderste groene pijl klikt moeten de volgende 16 foto\'s getoond worden. \n\nhoe zouden jullie dat aanpakken en waar zouden jullie beginnen?\n[url]http://www.sjoukito.com/galerie2.php[/url] Quote Link naar reactie
Anoniem2 Geplaatst: 9 januari 2010 Auteur Delen Geplaatst: 9 januari 2010 Voor het weergeven van de foto\'s bij de resultaten kun je bijna dezelfde query gebruiken als bij galerie2.php. Het makkelijkst kun je de gegevens tussen SELECT en FROM in galerie2.php kopieeren naar de gegevens tussen SELECT en FROM in de resultaten. Zo heb je de originele query met de WHERE\'s voor het zoeken.\n\nVoor het maximum van 16 weergaves kun je heel simpel werken met LIMIT:\nLIMIT 0,16 toont de eerste 16 (resultaten 0 t/m 16)\nLIMIT 16,32 toont de 2e groep van 16 (resultaten 16 t/m 32)\nen zo verder Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2010 Auteur Delen Geplaatst: 13 januari 2010 Ik heb inmiddels een flink aantal uren zitten rommelen met mijn zoek script ( [url]http://www.sjoukito.com/search.php[/url] ) maar ik kom er helaas niet uit.\r\n\r\nHet grootste probleem is hoe koppel ik de functie \"LIKE\" aan de tekst in de verschillende velden en zorg ik er voor dat lege velden genegeerd worden. En hoe zorg ik dat de uiteindelijke resultaten worden getoond op op een andere pagina namelijk de galerie pagina ( [url]http://www.sjoukito.com/galerie2.php[/url] ).\r\n\r\nIn de bijlage heb ik een txt bestand met wat ik tot nog toe heb.\r\nKan iemand me uitgebreid uitleggen wat ik nog moet doen en vooral hoe om dit allemaal goed samen te laten werken? Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2010 Auteur Delen Geplaatst: 13 januari 2010 Misschien heb je hier iets aan ter inspiratie:\n\n[php]// maak query\n $searchstring = mysql_real_escape_string($_GET[\'q\']);\n $searchstring = str_replace(\" \",\"%\",$searchstring);\n $searchstring = str_replace(\"+\",\"%\",$searchstring);\n $searchstring = str_replace(\"*\",\"%\",$searchstring);\n $searchstring = \"%\".$searchstring.\"%\";\n $searchstring = str_replace(\"%%\",\"%\",$searchstring);\n \n $searchfulltext = mysql_real_escape_string($_GET[\'fulltext\']);\n $searchfulltext = str_replace(\" \",\"%\",$searchfulltext);\n $searchfulltext = str_replace(\"+\",\"%\",$searchfulltext);\n $searchfulltext = str_replace(\"*\",\"%\",$searchfulltext);\n $searchfulltext = \"%\".$searchfulltext.\"%\";\n $searchfulltext = str_replace(\"%%\",\"%\",$searchfulltext);\n \n $searchauthor = mysql_real_escape_string($_GET[\'author\']);\n $searchauthor = str_replace(\" \",\"%\",$searchauthor);\n $searchauthor = str_replace(\"+\",\"%\",$searchauthor);\n $searchauthor = str_replace(\"*\",\"%\",$searchauthor);\n $searchauthor = \"%\".$searchauthor.\"%\";\n $searchauthor = str_replace(\"%%\",\"%\",$searchauthor); \n\n if (is_numeric($_GET[\'edition\'])) $searchedition = \'%\'.$_GET[\'edition\'];\n if (is_numeric($_GET[\'year\'])) $searchyear = \'%\'.$_GET[\'year\'];\n \n $searchclause = \"(\";\n $searchclause = $searchclause.\"`title` LIKE CONVERT( _utf8 \'\".$searchstring.\"\' USING latin1 ) COLLATE latin1_swedish_ci\";\n $searchclause = $searchclause.\" AND \";\n $searchclause = $searchclause.\"`content` LIKE CONVERT( _utf8 \'\".$searchfulltext.\"\' USING latin1 ) COLLATE latin1_swedish_ci\";\n $searchclause = $searchclause.\" AND \";\n $searchclause = $searchclause.\"`author` LIKE CONVERT( _utf8 \'\".$searchauthor.\"\' USING latin1 ) COLLATE latin1_swedish_ci\";\n if (is_numeric($_GET[\'edition\'])) $searchclause = $searchclause.\" AND \";\n if (is_numeric($_GET[\'edition\'])) $searchclause = $searchclause.\"`edition` LIKE CONVERT( _utf8 \'\".$searchedition.\"\' USING latin1 ) COLLATE latin1_swedish_ci\";\n if (is_numeric($_GET[\'year\'])) $searchclause = $searchclause.\" AND \";\n if (is_numeric($_GET[\'year\'])) $searchclause = $searchclause.\"`year` LIKE CONVERT( _utf8 \'\".$searchyear.\"\' USING latin1 ) COLLATE latin1_swedish_ci\";\n $searchclause = $searchclause.\")\";[/php] Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2010 Auteur Delen Geplaatst: 13 januari 2010 kun je me een beetje uitleg geven foobar?:rolleyes: Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2010 Auteur Delen Geplaatst: 13 januari 2010 Vooruit, een beetje dan ;)\n\nAllereerst zie je drie keer hetzelfde voor drie verschillende velden: q, fulltext en author. Hier voeg ik %-tekens toe aan beide zijden van de in de velden ingevulde zoekstring. Daarnaast vervang ik spaties, plustekens en asterisken door nog meer %-tekens. Tot slot vervang ik dubbele %-tekens door enkele %-tekens.\nDat alles sla ik op in drie nieuwe variabelen. Een stukje voorbewerking dus.\n\nHet laatste stuk bouwt (een gedeelte) van het daadwerkelijke SQL statement op. Daarbij moet je weten als je doet [I]`veld` LIKE \'%%\'[/I] dat dan alle rijen geselecteerd worden. Je hoeft dus niks speciaals te doen voor het geval een veld leeggelaten wordt, gewoon alleen %-tekens toevoegen en het gaat goed.\n\nDe velden edition en year in mijn geval zijn ...ehhh... en speciaal geval. Hier heb ik gezegd dat ze alleen moeten worden meegenomen als de velden numeriek zijn. Afhankelijk daarvan wordt er wel of niets toegevoegd aan het SQL statement.\n\nEn ja, in plaats van [I]$searchclause = $searchclause.[/I] had ik ook [I]$searchclause .= [/I], maar geen commentaar daarover graag ;) Quote Link naar reactie
Anoniem2 Geplaatst: 14 januari 2010 Auteur Delen Geplaatst: 14 januari 2010 ok in grove lijnen snap ik het.\r\n\r\nAls eerste bewerkt je dus de ingevoerde data door er bepaalde tekens uit te halen wat je per tekst veld (dus zoek mogelijkheid) doet? Ik neem aan dat dat voor een lijst/menu (zoals ik hier [url]http://www.sjoukito.com/search.php[/url] ) veel heb niet hoeft?\r\n\r\nmaar dan het volgende gedeelte, wat is dan de functie van dit stukje script?\r\n\r\n[PHP]$searchauthor = \"%\".$searchauthor.\"%\";[/PHP]\r\n\r\nok dat is even genoeg voor het moment :-p Quote Link naar reactie
Anoniem2 Geplaatst: 14 januari 2010 Auteur Delen Geplaatst: 14 januari 2010 Voor een lijst wordt \'t wat makkelijker, omdat de zoekwoorden vaststaan. Je hebt dan ook niet noodzakelijk een LIKE vergelijking nodig, maar kunt dan gewoon met = werken.\n\nHet codefragment wat je noemt voegt %-tekens toe aan beide zijden van de waarde in $searchauthor. Zodat je LIKE kunt gebruiken. Quote Link naar reactie
Anoniem2 Geplaatst: 3 februari 2010 Auteur Delen Geplaatst: 3 februari 2010 ummm\n\nHoe moet ik met = werken?\n\nDit zal waarschijnlijk een domme vraag zijn maar aangezien google enz het = teken verwijderen uit de tref worden kan ik hier weinig over vinden. Quote Link naar reactie
Anoniem2 Geplaatst: 3 februari 2010 Auteur Delen Geplaatst: 3 februari 2010 Als ik het goed heb is = iets toekennen aan een variabele en == om twee gegevens te vergelijken. Bedoel je dat? Quote Link naar reactie
Anoniem2 Geplaatst: 3 februari 2010 Auteur Delen Geplaatst: 3 februari 2010 [QUOTE=Obelix71;510964]Als ik het goed heb is = iets toekennen aan een variabele en == om twee gegevens te vergelijken. Bedoel je dat?[/QUOTE]\r\nZo werkt het in PHP.\r\n\r\nIn SQL:\r\n[CODE]SELECT * FROM `table` WHERE `field` = \'value\' AND `otherfield` LIKE \'%othervalue%\'[/CODE] Quote Link naar reactie
Anoniem2 Geplaatst: 3 februari 2010 Auteur Delen Geplaatst: 3 februari 2010 [QUOTE=FooBar;511025]Zo werkt het in PHP.[/QUOTE]\r\n\r\nJe hebt (uiteraard (A)) gelijk. Haal (weer) twee dingen door elkaar :( Quote Link naar reactie
Anoniem2 Geplaatst: 3 februari 2010 Auteur Delen Geplaatst: 3 februari 2010 Ja maar hoe gebruik ik dit om er een zoek functie van te maken?\r\n\r\ndit zoek script formulier [url]http://www.sjoukito.com/search.php[/url] wil ik namelijk gaan gebruiken om naar foto\'s te zoeken in mijn MySQL database maar ik loop helaas helemaal vast:<. Quote Link naar reactie
Anoniem2 Geplaatst: 3 februari 2010 Auteur Delen Geplaatst: 3 februari 2010 Op welke manier loop je vast dan?\n\nHoop dat ik het nu wel goed heb; volgens mij is dat die SQL code van FooBar en dan een hele lange regel met al die variabelen. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen
× Geplakt als verrijkte tekst. Herstel opmaak
Er zijn maximaal 75 emoji toegestaan.
× Je link werd automatisch ingevoegd. Tonen als normale link
× Je vorige inhoud werd hersteld. Leeg de tekstverwerker
× Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in