akbern Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 Hei.Jeg er veldig grønn når det gjelder .php og tenker å lage en liten søkemotor til hjemmesiden min. Per nå har jeg en ekstern gratistjeneste som gjør dette, men jeg vil ikke ha en resultatside med masse raklameannonser etc.Jeg har aktivert MySQL hos Domeneshop og lest en mengde Tutorials, men lurer på hvordan jeg egentlig skal gå fram helt i starten:1. Hvordan koble opp mot MySQL? 2. Hvor skal .php-filen ligge? 3. Hvilket program kan jeg bruke for opprettelse av databasen (Bruker Mac)?Helst et med GUI. Liker ikke Terminal 4. Kan man legge inn php i en vanlig html-fil, eller må hele siten min gjøres om til php?Dersom dette blir for mye å forklare på et forum som dette, setter jeg like stor pris på gode linker til sider som kan forklare meg dette i detalj.På forhånd takk! Lenke til kommentar
quantum Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 (endret) Prøvd denne? http://www.domeneshop.no/faq.cgi?section=8 Her står det f.eks. at du kan administrere databasen din med MySQL Workbench. php kan legges inn i en html-fil, det er det som er vanlig, men filnavnet må da slutte på .php, som regel, slik at webtjeneren skjønner at den skal behandles som php. Når det gjelder databasetilkoblingen kan du google etter "PDO_MYSQL", eller evt. bare lese (eller poste) litt i php-gruppa her. Merk at mysql_connect er utdatert og ikke anbefales brukt lengre. Endret 19. mars 2014 av quantum Lenke til kommentar
GamEpaL Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 ville nok anbefale deg å bruke one.com og lage et no-domene der. One.com har bedre kundeservice og mindre nedetid... Lenke til kommentar
Dan-Levi Skrevet 24. mars 2014 Del Skrevet 24. mars 2014 (endret) Hei. Jeg er veldig grønn når det gjelder .php og tenker å lage en liten søkemotor til hjemmesiden min. Per nå har jeg en ekstern gratistjeneste som gjør dette, men jeg vil ikke ha en resultatside med masse raklameannonser etc. Jeg har aktivert MySQL hos Domeneshop og lest en mengde Tutorials, men lurer på hvordan jeg egentlig skal gå fram helt i starten: 1. Hvordan koble opp mot MySQL? 2. Hvor skal .php-filen ligge? 3. Hvilket program kan jeg bruke for opprettelse av databasen (Bruker Mac)? Helst et med GUI. Liker ikke Terminal 4. Kan man legge inn php i en vanlig html-fil, eller må hele siten min gjøres om til php? Dersom dette blir for mye å forklare på et forum som dette, setter jeg like stor pris på gode linker til sider som kan forklare meg dette i detalj. På forhånd takk! 1. MySQLi eller PDO er det vanligste å bruke nå. Jeg bruker PDO. Les på det, søk på Youtube. 2. php filene ligger overalt. Du kan erstatte html/htm etternavnet på filene, forskjellen er at php er serverside språk. 3. Du kan bruke phpmyadmin for å administrere databasen din. Jeg er ganske sikker på at Domeneshop har dette integrert, hør med dem og sjekk det ut på youtube, mye lærevideoer. Du må ha dokumenter med php filetternavnet der php skal kjøre, om dokumentet er kun html er det ikke nødvendig, men jeg bruker php uamsett så jeg unngår eventuelle utfordringer med det i senere tid. Www.php.net er stedet for deg. Videre så har du www.stackoverflow.com hvor mange spørsmål er besvart før. Endret 24. mars 2014 av JanTerjeRiisOttoJohansen Lenke til kommentar
akbern Skrevet 24. mars 2014 Forfatter Del Skrevet 24. mars 2014 Tusen takk for alle nyttige svar.Jeg skal grave meg ned i materien og se om jeg kan få til dette Lenke til kommentar
quantum Skrevet 24. mars 2014 Del Skrevet 24. mars 2014 3. Du kan bruke phpmyadmin for å administrere databasen din. Jeg er ganske sikker på at Domeneshop har dette integrert, Domeneshop støtter ikke phpmyadmin og fraråder at man bruker det i flg. dokumentasjonen deres. Lenke til kommentar
Dan-Levi Skrevet 24. mars 2014 Del Skrevet 24. mars 2014 Å? Da tok jeg feil. Hva er årsaken til at det blir frarådet? Vet du det? Lenke til kommentar
quantum Skrevet 24. mars 2014 Del Skrevet 24. mars 2014 Å? Da tok jeg feil. Hva er årsaken til at det blir frarådet? Vet du det? Du kan lese om det selv, følg linken ovenfor. Altfor mange sikkerhetshull og behov for hyppige oppdateringer. Installerer man det selv på egen pc uten at andre har tilgang blir vel problemet minimalt, men da hadde jeg nok heller fulgt anbefalingen og brukt MySQL workbench. Lenke til kommentar
quantum Skrevet 24. mars 2014 Del Skrevet 24. mars 2014 Jeg skal grave meg ned i materien og se om jeg kan få til dette Dette er jo et artig prosjekt, og siden det nå er MySQL som støttes rundt omkring kan det hende du er nødt til å benytte MySQL, men anbefaler sterkt å ta en titt på en søkemotor som heter Elasticsearch også. Tviler på at domeneshop hoster den for deg, men det kan absolutt være en ide å laste ned og leke litt med på egen maskin. Lenke til kommentar
Dan-Levi Skrevet 24. mars 2014 Del Skrevet 24. mars 2014 Å? Da tok jeg feil. Hva er årsaken til at det blir frarådet? Vet du det? Du kan lese om det selv, følg linken ovenfor. Altfor mange sikkerhetshull og behov for hyppige oppdateringer. Installerer man det selv på egen pc uten at andre har tilgang blir vel problemet minimalt, men da hadde jeg nok heller fulgt anbefalingen og brukt MySQL workbench. Hmm, i alle mine år har jeg aldri opplevd et innbrudd der phpmyadmin har vært installert, kjenner faktisk ikke til et eneste tilfelle blant bekjente heller men ok. Leste litt på det og en annen MYSQL klient ved navn Navicat er også populær. Elasticsearch er veldig kult, men kanskje litt overkill for selve prosjektet? akbern: Hva tenker du om denne søkemotoren, hvilken funksjonalitet skal den ha? Skal den vise forslag til søk når du skriver? skal man kunne velge noe kategorier eller slikt? Lenke til kommentar
akbern Skrevet 24. mars 2014 Forfatter Del Skrevet 24. mars 2014 Hei.Jeg tenker meg en søkemotor som søker etter på forhånd definerte søkeord.Søker man på f.eks. etter"mySQL", så får man opp alle sider hvor "mySQL" er et definert søkeord.Såvidt jeg forstår, defineres dette i databasen...på en eller annen måte. Har sett eksempler på søkemotorer der du får opp søkeforslag mens man skriver, men det er kanskje alt for avansert å få til? Jeg vil at alle websidene mine skal ha en søkeboks hvor man skriver inn det man vil søke på, for så å sendes til en resultatside.Det jeg sliter mest med akkurat nå, er hvordan jeg får lastet opp en database til MySQL via MySQL Workbench. Har klart å koble meg på MySQL i alle fall. Det er en start Lenke til kommentar
quantum Skrevet 25. mars 2014 Del Skrevet 25. mars 2014 Elasticsearch er veldig kult, men kanskje litt overkill for selve prosjektet? Elasticsearch vil ihvertfall helt sikkert klare belastningen ja Og den er ikke så vanskelig å bruke heller, men det blir en teknologi til å holde styr på, og så er det altså ikke sikkert det er så lett å få den hostet. Kan være greit å vite om til et senere prosjekt kanskje. Lenke til kommentar
quantum Skrevet 25. mars 2014 Del Skrevet 25. mars 2014 (endret) Hei. Jeg tenker meg en søkemotor som søker etter på forhånd definerte søkeord. Ok du tenker altså å legge inn nøkkelord i indeksen manuelt. Da kan du kanskje klare deg med tre felt i søketabellen, 1) nøkkelord, 2) url, 3) Beskrivelse/tittel el. En søkeboks som tilpasser treffene mens du skriver er ganske vanlig, og burde ikke være så vanskelig å få til, søk etter eksempler på nett eller spør på html/javscript-gruppa. Overøfre databaser pleier å gå greit med mysqldump og mysql-kommandoene. Endret 25. mars 2014 av quantum Lenke til kommentar
Gjest Skrevet 25. mars 2014 Del Skrevet 25. mars 2014 (endret) Normalt ville man lagret all innhold på en nettside i en database som MySQL.Si at du har tabellen blogID TITLE CONTENT KEYWORDS1 Innlegg Velkommen Meg,Om,Side2 Innlegg2 Hunden min Hund,Tiri3 Innlegg3 Trening er Trening,styrkeDette er bare et LITE eksempel på hvordan man f.eks kan sette opp en tabell for en blogg. Neste blir å generere selve søke-spørringen.Den ville sett noe slik ut: SELECT * FROM `blog` WHERE `TITLE` LIKE '%hund%' OR `KEYWORDS` LIKE '%hund%' Spørringen over vil få treffe på ID = 2 fordi tittel og keywords inneholder ordet hund.EDIT:Jeg hater å skrive opp tabeller i Diskusjon.no når jeg IKKE har et SQL-verktøy tilgjengelig! Endret 25. mars 2014 av Gjest Lenke til kommentar
quantum Skrevet 25. mars 2014 Del Skrevet 25. mars 2014 SELECT * FROM `blog` WHERE `TITLE` LIKE '%hund%' OR `KEYWORDS` LIKE '%hund%' Viktig å beskytte seg mot sql-injection når man lager slike løsninger som dette. Lenke til kommentar
Gjest Skrevet 25. mars 2014 Del Skrevet 25. mars 2014 SELECT * FROM `blog` WHERE `TITLE` LIKE '%hund%' OR `KEYWORDS` LIKE '%hund%' Viktig å beskytte seg mot sql-injection når man lager slike løsninger som dette. Du vet dette var en ren spørring, ikke rettet opp mot et spesifikk språk hvor jeg ikke trenger å tenke på SQL-injections? Men anyway til OP, pass på sikkerheten! SQL-injection er nøkkelordet. Lenke til kommentar
quantum Skrevet 25. mars 2014 Del Skrevet 25. mars 2014 Du vet dette var en ren spørring, ikke rettet opp mot et spesifikk språk hvor jeg ikke trenger å tenke på SQL-injections? Nei, og ikke gir det du skriver her noen særlig oppklaring eller mening heller. Men det jeg skrev var ment til TS, så don't worry. Lenke til kommentar
Dan-Levi Skrevet 26. mars 2014 Del Skrevet 26. mars 2014 Det er utrolig viktig å tenke på sikkerheten, man skal heller forklare litt for godt om man skal engasjere seg så TS ikke publiserer et skript som er den sikre døden for databasen om det skulle komme en luring på besøk Jeg har inkludert litt PHP kode så du kan se hvordan en objekt orientert løsning med noen smarte klasser kan se ut Prøv deg gjerne på dette under lokalt (bruk XAMPP eller lignende), og bare spør om det er noe. Det du må endre på her er i init.php, host,bruker,passord og database, og i index.php hvor spørringsmetoden er. Bytt ut tabell, rad og søkeord (blog,title,hund). Struktur coreinit.php classesConfig.class.php Database.class.php index.php Scripts <?php // Navning: core/init.php $GLOBALS['config'] = array( 'mysql' => array( 'host' => '127.0.0.1', // mysql host 'user' => 'root', // mysql brukernavn 'pass' => '', // mysql passord 'db' => '' // mysql database ) ); spl_autoload_register(function ($class) { // Laster inn klasser automatisk. mappe classes (VIKTIG å putte alle *.class.php inn her). Navning: KLASSENAVN.class.php require_once 'classes/' . $class . '.class.php'; }); ?> <?php // Config.class.php // // Navning: KLASSENAVN.class.php (VIKTIG) class Config { public static function get($path = false) { if ($path) { $config = $GLOBALS['config']; $path = explode('/', $path); foreach ($path as $bit) { if (isset($config[$bit])) { $config = $config[$bit]; } } return $config; } return false; } } // Config.class.php // SLUTT ?> <?php // Database.class.php // // Navning: KLASSENAVN.class.php (VIKTIG) class Database{ // Private variabler brukt av metodene private static $_instance = null; private $_pdo, $_error = false, $_query, $_results, $_count = 0; // Magic method, denne koden fyrer når klassen kalles. metoden sjekker databasetilkobling og setter $_pdo hvis vellykket, ellers stopper skriptet. public function __construct(){ $dsn = 'mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db').';charset=utf8'; $options = array( PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ); try { $this->_pdo = new PDO($dsn, Config::get('mysql/user'), Config::get('mysql/pass'), $options); } catch (PDOException $e) { $this->_error = $e->getMessage(); } if (!$this->_pdo) { die($this->_error); } } //For å ikke lage flere instanser av PDO sjekker denne metoden om det allerede eksisterer en, hvis det ikke eksisterer opprettes en ny, eller returneres den eksisterende. public static function getInstance() { if (!isset(self::$_instance)) { self::$_instance = new Database(); } return self::$_instance; } //Spørringsmetode, første argument er selve SQL, andre argument er ett array, en liste med parametere. for hver parameter bindValue public function query($sql, $params = array()) { $this->_error = false; if ($this->_query = $this->_pdo->prepare($sql)) { $x = 1; if (count($params)) { foreach ($params as $param) { $this->_query->bindValue($x,$param); $x++; } } if ($this->_query->execute()) { $this->_results = $this->_query->fetchAll(5); $this->_count = $this->_query->rowCount(); } else { $this->_error = true; } } return $this; } // Sjekker om spørringen er bygd korrekt, sjekker om operator er tillatt ( = > < >= <= like ) // Sjekker om det er noen feilmeldinger, hvis ikke returner objektet public function action($action, $table, $where = array()) { if (count($where) === 3) { $operators = array('=','>','<','>=','<=','like'); $field = $where[0]; $operator = $where[1]; $value = $where[2]; if (in_array($operator, $operators)) { $sql = "{$action} from {$table} where {$field} {$operator} ?"; if (!$this->query($sql,array($value))->error()) { return $this; } } } return false; } // En egen metode for å hente ut informasjon, den tar i bruk action, som tar i bruk query public function get($table, $where) { return $this->action('select *',$table,$where); } } // Database.class.php // SLUTT ?> <?php // index.php // Ved hjelp av de smarte klassene og funksjonene vi har bygget opp kan vi nå hente ut informasjon på denne måten include 'core/init.php'; // Vi lager en variabel som heter results og lagrer en instanse i den hvor vi spør etter tabellen blog hvor title like hund, vi må bruke % på begge sider av søkeordet. $results = Database::getInstance()->get('blog',array('title','like','%hund%')); //Hvis spørringen er vellykket vil $results være true //Hvis den er true if ($results) { //For hvert resultat av spørringen foreach ($results->results() as $result) { //Hvis overskriftene som linker og vis beskrivelsen under. echo '<h3>'; echo '<a href="'.$result->link.'">'; echo $result->title; echo '<a/>'; echo '<h3/>'; echo '<p>'.$result->short_description.'</p>'; echo '<br>' } } ?> Gjerne stemme opp, jeg trenger stemmer, jeg har vært her inne altfor lenge til å ha usselige 111, selv om det er et fint tall! haha Lenke til kommentar
akbern Skrevet 10. mai 2014 Forfatter Del Skrevet 10. mai 2014 OK, etter endel prøving og feiling har jeg nå laget et lite søkemotor-script som fungerer som jeg vil, og som henter oppslag i databasen og presenterer relavant info samt linker og bilder på en resultatside. Men, jeg får foreløpig bare resultatet presentert på en "ustylet" side.Jeg har et eksisterende design på min hjemmeside som jeg vil ha plassert søkeresultatene i, men dum som jeg er, vet jeg ikke helt hvordan jeg skal få det til, og hvor php-koden skal plasseres?Hjemmesiden min er stylet med css, og er en template som jeg har viderutviklet for å passe til mitt behov.Feltet der jeg vil presentere søkeresultatene er en section class som er definert i en css-file.Hvordan kan jeg få vist resultatene der?(Takker forøvrig for svar angående sikkerhet og annet, men som jeg ennå ikke har fått kikket på). Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå