quote:Op zaterdag 3 juni 2006 18:50 schreef SuperRembo het volgende:
Als je alleen de parent-child relatie vastlegt in je database, dan kan je nooit in 1 query bepalen welke nodes er allemaal bij een bepaalde parent in een tree horen. Tenzij je van te voren vast legt hoe diep de tree maximaal gaat, maar fraai wordt je query dan niet.
quote:Op zaterdag 3 juni 2006 18:52 schreef Swetsenegger het volgende:
[..]
misschien moet je eens hier naar kijken.
Ik gebruik het zelf om hierarchische menu's te maken.
Ik bedoel ook meer; de hele tabel in een array zetten (geen WHERE-statements) en daarna met php de child-parent relatie berekenen en tonen.quote:Op zaterdag 3 juni 2006 18:50 schreef SuperRembo het volgende:
Als je alleen de parent-child relatie vastlegt in je database, dan kan je nooit in 1 query bepalen welke nodes er allemaal bij een bepaalde parent in een tree horen. Tenzij je van te voren vast legt hoe diep de tree maximaal gaat, maar fraai wordt je query dan niet.
Het is helemaal geen overkill. Je tabel bestaat uit niet meer dan 3 velden: name, lft en rgt.quote:Op zaterdag 3 juni 2006 19:07 schreef Nevermind het volgende:
[..]
Ik bedoel ook meer; de hele tabel in een array zetten (geen WHERE-statements) en daarna met php de child-parent relatie berekenen en tonen.
@Swets: Bedankt voor de link. Het ziet eruit als overkill voor waar ik het voor nodig heb. Ik wil alleen een handig overzicht hebben van hoe mijn site in elkaar zit, zoals hieronder:
[afbeelding]
De layout is maar een test. Ik wil er nog wat links in zetten zodat ik makkelijk nodes kan verplaatsen, bewerken of verwijderen.
Ik werd overdonderd door alle uitgebreide queries die er stondenquote:Op zaterdag 3 juni 2006 19:10 schreef Swetsenegger het volgende:
[..]
Het is helemaal geen overkill. Je tabel bestaat uit niet meer dan 3 velden: name, lft en rgt.
En daarmee kan je alles. Met 1 query kan je alles uit je tabel trekken inc parent child relatie, oneindig diep
In het begin lijkt het heel moeilijk, maar het is inderdaad rete simpelquote:Op zaterdag 3 juni 2006 19:14 schreef Nevermind het volgende:
[..]
Ik werd overdonderd door alle uitgebreide queries die er stonden(maar dat is eigenlijk copypastewerk)
Iets beter bekeken, en het ziet er inderdaad erg handig uit. Ik ga het proberen te implementeren
Precies, heb ik ook gedaan in sommige gevallen.quote:Op zaterdag 3 juni 2006 19:15 schreef Roönaän het volgende:
jups, en voor de handigheid kan je een depth field toevoegen om dat "oneindig" diep enigszins te beperken
Wat ik me dan afvraag. Met een directe parent <--> child relatie heb je weinig updates nodig, maar wat ik van dit relationeel model heb begrepen is dat als je ergens een item wilt plaatsen, je bijvoorbeeld alle 'right' waardes moet ophogen? Is dat niet funest als je een grote database hebt met veel updates? (vb; reacties op T.net frontpage)quote:Op zaterdag 3 juni 2006 19:10 schreef Swetsenegger het volgende:
[..]
Het is helemaal geen overkill. Je tabel bestaat uit niet meer dan 3 velden: name, lft en rgt.
En daarmee kan je alles. Met 1 query kan je alles uit je tabel trekken inc parent child relatie, oneindig diep
alle lft EN rgt waardes 'rechts' van het in te voegen produkt inderdaadquote:Op zaterdag 3 juni 2006 22:25 schreef JeRa het volgende:
[..]
Wat ik me dan afvraag. Met een directe parent <--> child relatie heb je weinig updates nodig, maar wat ik van dit relationeel model heb begrepen is dat als je ergens een item wilt plaatsen, je bijvoorbeeld alle 'right' waardes moet ophogen?
Dat denk ik ook, maar reacties op een topic zou ik niet op deze manier hierarchisch opslaan. Ik denk dat dit model mooi is wanneer er meerdere levels zijn, als er alleen direkte parent <-> child relaties zijn kan je beter met een koppeltabelletje werken lijkt me.quote:Is dat niet funest als je een grote database hebt met veel updates? (vb; reacties op T.net frontpage)
quote:![]()
zkersquote:
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 | require('fpdf/fpdf.php'); class PDF extends FPDF { //Page header function Header() { $this->SetFont('Arial'); $this->Cell(0,5,'txt',B,0,'R'); $this->Ln(20); } //Page footer function Footer() { $this->SetFont('Arial','',10); $this->SetY(-15); $this->Cell(0,5,'txt',T,0,'L'); $this->Ln(20); } } //Instanciation of inherited class $pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont('Times','B',12); $pdf->Cell(40,10,'Hello World!'); $pdf->Output(); ?> |
1 2 3 | $result = mysql_query($sql_query); if(mysql_num_rows($result) < 1) {die($text); } |
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 | Error SQL query: -- phpMyAdmin SQL Dump -- version 2.8.1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generatie Tijd: 05 Jun 2006 om 19:53 -- Server versie: 5.0.21 -- PHP Versie: 5.1.4 -- -- Database: `test` -- -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `producten` -- CREATE TABLE `producten` ( `item` int( 11 ) NOT NULL AUTO_INCREMENT , `naam` text CHARACTER SET ascii COLLATE ascii_bin NOT NULL , `prijs` text CHARACTER SET ascii COLLATE ascii_bin NOT NULL , PRIMARY KEY ( `item` ) ) ENGINE = MYISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci AUTO_INCREMENT =4; MySQL said: #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'character set ascii collate ascii_bin NOT NULL, `prijs` text [ Back ] |
Weet je zeker dat je die compatibility goed hebt gezet? MySQL 4.0 verslikt zich in "CHARACTER SET ascii COLLATE ascii_bin".quote:Op maandag 5 juni 2006 20:00 schreef BloodhoundFromHell het volgende:
Ik heb een vraagje. Als ik een mysql database importeer krijg ik de volgende error:
[ code verwijderd ]
Ik snap er geen biet van ,want de export komt gewoon ook van een mysql database die ik lokaal heb geinstalleerd. Ik heb compatabiliy gezet op mysql 4.0 (remote draait mysql 4.0 en lokaal draai ik mysql 5.0)
ben er al uit, forum gebruikt engelse namen voor de velden...quote:Op maandag 5 juni 2006 19:57 schreef Light het volgende:
Het lijkt erop dat er een fout in de query zit. Ik kan alleen niet zien waar precies.
Ik weet niet wat dit doet, maar 'migration toolkit' geeft hoop: http://dev.mysql.com/downloads/migration-toolkit/1.0.htmlquote:Op maandag 5 juni 2006 22:32 schreef BloodhoundFromHell het volgende:
weet iemand een gratis programmatje om access databases over te zetten naar mysql?? ik kan alleen maar betaalde programmas vinden
1 |
quote:Op dinsdag 6 juni 2006 00:03 schreef Light het volgende:
Dit lijkt me een javascript / AJAX probleem, niet een php probleem. En dan preciezer bij
[ code verwijderd ]
IE en FF / Safari gebruiken verschillende methodes om dat xmlHttp ding te maken. Een leuk voorbeeld staat hier.
1 |
1 |
1 |
Hmm... goed puntquote:Op dinsdag 6 juni 2006 00:05 schreef BaggerUser het volgende:
maar FF pakt wel de andere button het enige verschil is dat submitten niet meer kan dan ?
dus i vraag me af of het een echt ajax probleem is hoor ?
hey je hebt gelijk als ik dat weglaat en het met behulp van javascrit eable en disable werkt hetquote:Op dinsdag 6 juni 2006 00:21 schreef DionysuZ het volgende:
het probleem komt me bekend voor. Ik heb het gehad bij input velden die ik had gedisabled. Die werden niet doorgegeven. Probeer eens om disabled='true' weg te laten en mbv javascript te disablen/enablen
1 2 3 | $teller = 1; // geeft niveau aan waarop gezocht gaat worden haal_niveau_lager($getoonde_cpas[$cpa_id], $teller); |
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 | { if ($teller == 5) {// meer dan 5 niveau's diep hoort niet voor te komen return $menu_array; } $vv_id_menu = $menu_array[0]; $sql = "SELECT DISTINCT <zooi velden> FROM menu WHERE hoort_bij='" . $vv_id_menu . "'"; if(!($result = mysql_query($sql))) { fout("database fout: [$sql][" . mysql_error() . "]"); } $menus = array(); while($myrow = mysql_fetch_assoc($result)) { $menus[] = array(<zooi velden>); } reset($menus); if (!empty($menus)) { $menu_array["lagere_menus"] = $menus; } print_r($menu_array); if (isset($menu_array["lagere_menus"])) { for ($j = 0; $j < count($menu_array["lagere_menus"]); $j++) { $menu_array["lagere_menus"][$j] = haal_niveau_lager($menu_array["lagere_menus"][$j], $teller+1); } } return $menu_array; } |
"Other Files" > "Binaries"quote:Op dinsdag 6 juni 2006 17:47 schreef TheUnreal het volgende:
Waar kan ik tegenwoordig de apache webserver voor win32 vinden![]()
Op apache.org staat alleen de source ?! Of ben ik nou blind..
1 2 3 4 5 6 | $configfile .= $line."\r\n"; } $fp=fopen('file.php','w+'); fwrite($fp,$configfile); fclose($fp); |
1 |
1 2 3 | 4 8 |
1 |
Dat is niet wat ik bedoel. Ik gebruik nu URLencode en decode op mijn pagina om het menu op te bouwen en dingen uit de database te halen. Ik heb nu query met een WHERE clasule waarin ik bv naar mijnmenuitems vraag, foto%27s is daar een van. Alleen kan ik deze niet uitvoeren. interpreteert MYSQL %27 als een single quote?quote:Op dinsdag 6 juni 2006 22:08 schreef Swetsenegger het volgende:
urldecode?
1 2 | $result = mysql_query($query); |
Dank je wel dat is de oplossing waar ik naar op zoek was!quote:Op dinsdag 6 juni 2006 23:03 schreef JeRa het volgende:
@ExCibular
Wat er in de URI staat wordt door PHP op de juiste manier geparset, daar hoef je je geen zorgen over te maken. Je krijgt dus gewoon een single quote in plaats van de code hiervoor (%27).
Waar je wel zorgen over moet maken is SQL injection in je queriesje moet zoiets doen:
[ code verwijderd ]
Op die manier wordt de quote op de juiste manier geëscapet
Prima opzet, door de input te valideren met een door jou gedefinieerde array voorkom je ook dat mensen iets in je query kunnen plaatsenquote:Op woensdag 7 juni 2006 00:32 schreef ExCibular het volgende:
Dat was mij idee om SQL injection tegen te gaan.
1 2 3 | echo $key." - ".$value."<br>"; } |
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | function datetotext($date) { $time = substr($date, 11, 15); $date = substr($date, 0, 10); $now = time(); $day_time = 60*60*24; list($post_year, $post_month, $post_day) = explode("-", $date); list($post_hour, $post_minit, $post_second) = explode(":", $time); $post_date = mktime (0, 0, 0, $post_month, $post_day, $post_year); $today_date = mktime (0, 0, 0, date("m"), date("d"), date("y")); $yesterday_date = mktime (0, 0, 0, date("m"), date("d"), date("y")) - $day_time; $week_date = date("w", mktime (0, 0, 0, $post_month, $post_day, $post_year)); $today_year_time = mktime (0, 0, 0, 0, 0, date("y")); $post_year_time = mktime (0, 0, 0, 0, 0, $post_year); $dagen = array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"); $maanden = array(1 => "januari", 2 => "februari", 3 => "maart", 4 => "april", 5 => "mei", 6 => "juni", 7 => "juli", 8 => "augustus", 9 => "september", 10 => "oktober", 11 => "november", 12 => "december"); $post_curr_day = $dagen[intval($week_date)]; $post_curr_mnt = $maanden[intval($post_month)]; if ($post_month == "01") { $post_prev_mnt = $maanden[12]; } else { $post_prev_mnt = $maanden[intval($post_month) -1]; } if ($today_date == $post_date) { // vandaag "vandaan om 10:10" return "vandaag om " . date("H:i", mktime($post_hour, $post_minit, $post_second, $post_month, $post_day, $post_year)); } elseif ($post_date == $yesterday_date) { // gisteren " gisteren om 10:10 " return "gisteren om " . date("H:i", mktime($post_hour, $post_minit, 0, 0, $post_month, $post_day, $post_year)); } elseif ($post_year_time == $today_year_time && $post_month == date("m") -1) { // vorige maand " vorige maand op maandag 1 januari om 10:10 " return "vorige maand op " . $post_curr_day . " " . $post_day . " " . $post_prev_mnt . " om " . $post_hour . ":" . $post_minit; } elseif ($post_year_time == $today_year_time) { // zelfde jaar " op Maandag 1 januari om 10:10" return "op " . $post_curr_day . " " . $post_day . " " . $post_curr_mnt . " om " . $post_hour . ":" . $post_minit; } else { // vorig jaar " op Maandag 1 januari 1999 om 10:10" return "op " . $post_curr_day . " " . $post_day . " " . $post_curr_mnt . " " . $post_year . " om " . $post_hour . ":" . $post_minit; } } ?> |
includequote:Op woensdag 7 juni 2006 10:02 schreef Desdinova het volgende:
Ik heb een aantal stukjes code in een database staan in gewoon textformaat. Met welke functie kan ik PHP dit stukje tekst laten verwerken?
dusseh, voorbeeldje:
[ code verwijderd ]
en dan php het laten uitvoeren
function haal_niveau_lager(&$menu_array, $teller)quote:Er staat vast maar 1 klein foutje in, maar ja, wat??
eval() is het waarschijnlijkquote:Op woensdag 7 juni 2006 10:35 schreef Swetsenegger het volgende:
[..]
include
edit, ow in database.... even denken
Maar dat is natuurlijk niet zo netjes?quote:
Dat dus.quote:Op woensdag 7 juni 2006 14:57 schreef fokME2 het volgende:
Waarom heb je eigenlijk phpcode die je wil uitvoeren in je database staan?![]()
Hoe laat je de updates uitvoeren? Via de webserver? Besef dan dat alle bestanden door de webserver schrijfbaar moeten zijn, en dat dit als standaardinstelling natuurlijk niet echt veilig is om een website op te laten draaien. Beter lever je zo'n updatesysteem buiten de webroot om, waarbij er goed wordt gekeken naar de rechten van de bestandenquote:Op woensdag 7 juni 2006 10:54 schreef Swetsenegger het volgende:
Versie controlle tussen website en upgrade server werkt al. Ik zit alleen met het pushen of pullen van de update files en hoe ik dat ga aanpakken.
Op- en aanmerkingen zijn welkom
Nee, de map waar ik denk dat het probleem zit is hoger als de hoogste map waar ik met SSH kan komen...Ik hoop alleen dat er iemand bij die helpdesk zit die weet wat chmodden is, anders zal het nog wel even duren voordat de site weer werktquote:Op woensdag 7 juni 2006 16:01 schreef JeRa het volgende:
@ralfie
Met je SSH-connectie moet je gewoon kunnen inloggen en de rechten weer goed zetten. Jij kunt namelijk alle bestanden en directories waarvan jij de eigenaar bent chmodden. Kun je dit niet, dan moet jouw webhoster nog eens ernstig nadenken over hun opzet
Nee de website trekt een changelog van de update server. en de php moet vervolgens bv function.php aanpassen dmv file() en fwrite endergelijke.quote:Op woensdag 7 juni 2006 16:04 schreef JeRa het volgende:
[..]
Hoe laat je de updates uitvoeren? Via de webserver? Besef dan dat alle bestanden door de webserver schrijfbaar moeten zijn, en dat dit als standaardinstelling natuurlijk niet echt veilig is om een website op te laten draaien. Beter lever je zo'n updatesysteem buiten de webroot om, waarbij er goed wordt gekeken naar de rechten van de bestanden
Dus alle bestanden en directories moeten writable voor de webserver zijn. In het geval van een exploit kunnen kwaadwilligen dan dus eigen PHP-files wegschrijven?quote:Op woensdag 7 juni 2006 16:33 schreef Swetsenegger het volgende:
[..]
Nee de website trekt een changelog van de update server. en de php moet vervolgens bv function.php aanpassen dmv file() en fwrite endergelijke.
De webserver heeft meestal een webroot voor een website wat de hoogst mogelijke directory is waar een bezoeker bestanden mag opvragen. Door een updatescript buiten deze webroot via bv. SSH uit te voeren zou je mogelijke exploits al kunnen voorkomen, maar als je het via de website wilt doen is daar dus geen sprake van.quote:Hoe bedoel je buiten de webroot om?
Neuh, specifieke website bestanden moeten inderdaad writable zijn. Niet alles. Maar dat is inderdaad een risico ja...quote:Op woensdag 7 juni 2006 16:39 schreef JeRa het volgende:
[..]
Dus alle bestanden en directories moeten writable voor de webserver zijn. In het geval van een exploit kunnen kwaadwilligen dan dus eigen PHP-files wegschrijven?
Ik snap nog steeds niet hoe je buiten die webroot bestanden IN de webroot wilt updaten?quote:De webserver heeft meestal een webroot voor een website wat de hoogst mogelijke directory is waar een bezoeker bestanden mag opvragen. Door een updatescript buiten deze webroot via bv. SSH uit te voeren zou je mogelijke exploits al kunnen voorkomen, maar als je het via de website wilt doen is daar dus geen sprake van.
Dit is denk ik zodanig moeilijk (zeker bij meerdere websites tegelijk) dat je echt een gruwelijk goed gedocumenteerde opzet moet hebben om dit vlekkeloos voor elkaar te krijgenquote:Op woensdag 7 juni 2006 16:44 schreef Swetsenegger het volgende:
Het probleem is alleen dat elke website subtiel kan verschillen. Vandaar dat ik de update logica per website wilde schrijven en toevoegen AAN die website.
Daarom maak ik 'generic' files, die zijn voor elke website hetzelfde en zullen het meeste aanpassing vereissen. En daarnaast nog site specifieke files, welke dus met logica OP de website aangepast kunnen worden (de generic files is een kwestie van gewoon overschrijven en kan vanaf de update server).quote:Op woensdag 7 juni 2006 17:12 schreef JeRa het volgende:
[..]
Dit is denk ik zodanig moeilijk (zeker bij meerdere websites tegelijk) dat je echt een gruwelijk goed gedocumenteerde opzet moet hebben om dit vlekkeloos voor elkaar te krijgenje moet namelijk per website weten welke bestanden wat bevatten, en waar je vanaf moet blijven om de boel niet kapot te maken.
Geen, eigenlijk. Gewoon ervoor zorgen dat je geen exploits toestaat door bugvrije scripts te schrijvenquote:Op woensdag 7 juni 2006 17:21 schreef Swetsenegger het volgende:
Maar mbt de exploits, nog ideeen?
group by?quote:Op woensdag 7 juni 2006 18:09 schreef LeeHarveyOswald het volgende:
ik zit weer es vastIk wil 2 velden selecteren, waarvan 1 een naam en 1 een getal. Nu wil ik dat uiteindelijk alle getallen bij elkaar opgeteld zijn, per naam, en gesorteerd. Dus stel ik heb 3 LeeHarveyOswalds, en 2 JeRa's, dan zou ik graag de leeftijden van al deze opgeteld willen zien, gesorteerd ophoeveelheid
![]()
quote:Op woensdag 7 juni 2006 18:09 schreef LeeHarveyOswald het volgende:
ik zit weer es vastIk wil 2 velden selecteren, waarvan 1 een naam en 1 een getal. Nu wil ik dat uiteindelijk alle getallen bij elkaar opgeteld zijn, per naam, en gesorteerd. Dus stel ik heb 3 LeeHarveyOswalds, en 2 JeRa's, dan zou ik graag de leeftijden van al deze opgeteld willen zien, gesorteerd ophoeveelheid
![]()
1 2 3 4 | FROM mensen GROUP BY naam ORDER BY COUNT(naam) ASC |
Ja preciesquote:Op woensdag 7 juni 2006 17:32 schreef JeRa het volgende:
[..]
Geen, eigenlijk. Gewoon ervoor zorgen dat je geen exploits toestaat door bugvrije scripts te schrijven
Een pull vanaf de website lijkt me het beste; omdat je de administrator dan ook inzicht kunt geven in de veranderingen (en bv. een diff kunt tonen als de eigenaar wijzigingen heeft aangebracht in het scriptquote:Op woensdag 7 juni 2006 19:16 schreef Swetsenegger het volgende:
[..]
Ja precies
Of heb je een betere manier voor mij om dit aan te pakken?
Dus, push vanaf update server of pull vanaf website. Of nog iets anders?
Ik wilde de eigenaar inderdaad de mogelijkheid geven om een update niet uit te voeren. wat bedoel je met een diff?quote:Op woensdag 7 juni 2006 19:31 schreef JeRa het volgende:
[..]
Een pull vanaf de website lijkt me het beste; omdat je de administrator dan ook inzicht kunt geven in de veranderingen (en bv. een diff kunt tonen als de eigenaar wijzigingen heeft aangebracht in het script). Bij een push gaat dat nogal geforceerd en geef je de eigenaar weinig vrijheid.
Je moet rekening houden met het feit dat de webserver dus de eigenaar moet zijn van de bestanden die worden gewijzigd; dus ofwel alles onder de user van de webserver scharen of ervoor zorgen dat de webserver draait onder de juiste gebruiker. Zodra je gaat updaten alle directories en files waarbij het nodig is chmodden, aanpassen en weer terug chmodden naar een staat waarbij ze niet aanpasbaar zijn. Mogelijk vóórdat je dit proces uitvoert een .htaccess wegschrijven waarmee het onmogelijk wordt om tijdens het updateproces bestanden op te vragen
Als de eigenaar van een website die door jou wordt verzorgd in een gekke bui iets heeft aangepast in een bestand dat geüpdatet dient te worden, dan gaat dat niet goed natuurlijkquote:Op woensdag 7 juni 2006 19:59 schreef Swetsenegger het volgende:
[..]
Ik wilde de eigenaar inderdaad de mogelijkheid geven om een update niet uit te voeren. wat bedoel je met een diff?
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | <input type="text" name="q" /> <input type="submit" name="Submit" value="Search" /> </form> <?php // Get the search variable from URL $var = @$_GET['q'] ; $trimmed = trim($var); //trim whitespace from the stored variable // rows to return $limit=10; // check for an empty string and display a message. if ($trimmed == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } //connect to your database ** EDIT REQUIRED HERE ** mysql_connect("localhost","root",""); //(host, username, password) //specify database ** EDIT REQUIRED HERE ** mysql_select_db("mydb") or die("Unable to select database"); //select which database we're using // Build SQL Query $query = "select * from employees where 1st_field like \"%$first%\" order by 1st_field"; // EDIT HERE and specify your table and field names for the SQL query $numresults=mysql_query($query); $numrows=mysql_num_rows($numresults); // If we have no results, offer a google search as an alternative if ($numrows == 0) { echo "<h4>Results</h4>"; echo "<p>Sorry, your search: "" . $trimmed . "" returned zero results</p>"; echo "<p><a href=\"http://www.google.com/search?q=" . $trimmed . "\" target=\"_blank\" title=\"Look up " . $trimmed . " on Google\">Click here</a> to try the search on google</p>"; } // next determine if s has been passed to script, if not use 0 if (empty($s)) { $s=0; } // get results $query .= " limit $s,$limit"; $result = mysql_query($query) or die("Couldn't execute query"); // display what the person searched for echo "<p>You searched for: "" . $var . ""</p>"; // begin to show results set echo "Results"; $count = 1 + $s ; // now you can display the results returned while ($row= mysql_fetch_array($result)) { $title = $row["1st_field"]; echo "$count.) $title" ; $count++ ; } $currPage = (($s/$limit) + 1); //break before paging echo "<br />"; // next we need to do the links to other results if ($s>=1) { // bypass PREV link if s is 0 $prevs=($s-$limit); print " <a href=\"$PHP_SELF?s=$prevs&q=$var\"><< Prev 10</a>  "; } // calculate number of pages needing links $pages=intval($numrows/$limit); // $pages now contains int of pages needed unless there is a remainder from division if ($numrows%$limit) { // has remainder so add one page $pages++; } // check to see if last page if (!((($s+$limit)/$limit)==$pages) && $pages!=1) { // not last page so give NEXT link $news=$s+$limit; echo " <a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 >></a>"; } $a = $s + ($limit) ; if ($a > $numrows) { $a = $numrows ; } $b = $s + 1 ; echo "<p>Showing results $b to $a of $numrows</p>"; ?> |
quote:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Program Files\xampp\htdocs\sitesmeets\SITE\php\search.php on line 41
1 |
werkt niet, dan zegt hij dit:quote:
1 |
En wat is lijn 41 in je script?quote:Op woensdag 7 juni 2006 21:53 schreef BloodhoundFromHell het volgende:
[..]
werkt niet, dan zegt hij dit:
[ code verwijderd ]
waar voer ik dat uit?quote:Op woensdag 7 juni 2006 21:55 schreef JeRa het volgende:
@Swetsenegger
chown gaat niet lukken, behalve als je root bentje zult vantevoren al de goede gebruiker moeten zijn. Door een `whoami` uit te voeren kom je erachter als wie de webserver werkt
In een PHP-scriptje dat je via de webserver uitvoert:quote:Op woensdag 7 juni 2006 22:08 schreef Swetsenegger het volgende:
[..]
waar voer ik dat uit?
Ik gebruik nu het ftp alternatief, maar dat is (traag) gepijpzeik.
1 2 3 | echo `whoami`; ?> |
Grappig, die kon ik niet.quote:Op woensdag 7 juni 2006 22:09 schreef JeRa het volgende:
[..]
In een PHP-scriptje dat je via de webserver uitvoert:
[ code verwijderd ]
Je bent vergeten de puntkomma achter mysql_query() weg te halen gok ikquote:Op woensdag 7 juni 2006 22:14 schreef BloodhoundFromHell het volgende:
@jera , nog ideeen? of heeft iemand wellicht anders nog een beter zoekscriptje ergens?
Dat is dus mooi kutquote:Op woensdag 7 juni 2006 22:15 schreef JeRa het volgende:
@Swetsenegger
Je kunt de eigenaar van het bestand niet veranderen zonder dat je root bent. Anders is het een kwestie van een simpele chownEn je moet inderdaad vanuit beginsel de bestanden met een PHP-script vanuit de webserver aanmaken en wegschrijven, anders heb je de verkeerde eigenaar.
Dit soort dingen is de reden waarom ik mod_ruid gebruik op m'n webserver
Dat was meer een compressie en uitpak traject geloof ik.quote:Op woensdag 7 juni 2006 22:24 schreef JeRa het volgende:
Chandler was toch bezig met een project dat precies dat en meer kon doen?
...daar heb je dus rootrechten voor nodig, die de meeste mensen ook niet via FTP hebbenquote:Op woensdag 7 juni 2006 22:27 schreef Swetsenegger het volgende:
de eigenaar veranderen
*vloekt zachtjes*quote:Op woensdag 7 juni 2006 22:30 schreef JeRa het volgende:
[..]
...daar heb je dus rootrechten voor nodig, die de meeste mensen ook niet via FTP hebben
Ehmz... is stap 2 niet het zwakke punt in dit betoog?quote:Op woensdag 7 juni 2006 22:46 schreef JeRa het volgende:
Oh, truuk om van eigenaar te veranderen bestaat wel trouwens.
1) Lees het hele bestand naar het geheugen
2) Verwijder het bestand
3) Maak het bestand opnieuw aan (gebruiker is nu de webserver als je dit via een PHP-script doet)
4) Schrijf de data in het geheugen weer weg naar het bestand
Bestanden verwijderen is mogelijk als je de eigenaar van de bovenliggende directory bentquote:Op woensdag 7 juni 2006 22:53 schreef Swetsenegger het volgende:
[..]
Ehmz... is stap 2 niet het zwakke punt in dit betoog?
Hmz ja dat kan dat ik de file via ftp functies in php verwijder en vervolgens met fwrite weer gewoon schrijf.quote:Op woensdag 7 juni 2006 22:58 schreef JeRa het volgende:
[..]
Bestanden verwijderen is mogelijk als je de eigenaar van de bovenliggende directory bentmiddels FTP moet dat dus lukken.
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | <input type="text" name="q" /> <input type="submit" name="Submit" value="Search" /> </form> <?php // Get the search variable from URL $var = @$_GET['q'] ; $trimmed = trim($var); //trim whitespace from the stored variable // rows to return $limit=10; // check for an empty string and display a message. if ($trimmed == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } //connect to your database ** EDIT REQUIRED HERE ** mysql_connect("localhost","test",""); //(host, username, password) //specify database ** EDIT REQUIRED HERE ** mysql_select_db("bhfhnet_mydb") or die("Unable to select database"); //select which database we're using // Build SQL Query $query = "select * from employees where first like \"%$trimmed%\" order by first"; // EDIT HERE and specify your table and field names for the SQL query $numresults=mysql_query($query); $numrows=mysql_num_rows($numresults); // If we have no results, offer a google search as an alternative if ($numrows == 0) { echo "<h4>Results</h4>"; echo "<p>Sorry, your search: "" . $trimmed . "" returned zero results</p>"; echo "<p><a href=\"http://www.google.com/search?q=" . $trimmed . "\" target=\"_blank\" title=\"Look up " . $trimmed . " on Google\">Click here</a> to try the search on google</p>"; } // next determine if s has been passed to script, if not use 0 if (empty($s)) { $s=0; } // get results $query .= " limit $s,$limit"; $result = mysql_query($query) or die("Couldn't execute query"); // display what the person searched for echo "<p>You searched for: "" . $var . ""</p>"; // begin to show results set echo "Results "; $count = 1 + $s ; // now you can display the results returned while ($row= mysql_fetch_array($result)) { $title = $row["1st_field"]; echo "$count.) $title" ; $count++ ; } $currPage = (($s/$limit) + 1); //break before paging echo "<br />"; // next we need to do the links to other results if ($s>=1) { // bypass PREV link if s is 0 $prevs=($s-$limit); print " <a href=\"$PHP_SELF?s=$prevs&q=$var\"><< Prev 10</a>  "; } // calculate number of pages needing links $pages=intval($numrows/$limit); // $pages now contains int of pages needed unless there is a remainder from division if ($numrows%$limit) { // has remainder so add one page $pages++; } // check to see if last page if (!((($s+$limit)/$limit)==$pages) && $pages!=1) { // not last page so give NEXT link $news=$s+$limit; echo " <a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 >></a>"; } $a = $s + ($limit) ; if ($a > $numrows) { $a = $numrows ; } $b = $s + 1 ; echo "<p>Showing results $b to $a of $numrows</p>"; ?> |
ik ben erachter gekomen dat ik niet met chmod, maar met dit grapje mijn hele website heb verkloot. Omdat door een foutje geen bestandsnaam is toegevoegd heeft php de rootdirectory ingelezen als bestand, toen de directory verwijdert en daarna een bestand aangemaakt met de inhoud van het mapbestand. Keertje checken op is_dir() is dus geen overbodige luxequote:Op woensdag 7 juni 2006 22:46 schreef JeRa het volgende:
Oh, truuk om van eigenaar te veranderen bestaat wel trouwens.
1) Lees het hele bestand naar het geheugen
2) Verwijder het bestand
3) Maak het bestand opnieuw aan (gebruiker is nu de webserver als je dit via een PHP-script doet)
4) Schrijf de data in het geheugen weer weg naar het bestand
Sorry, maar... LOLquote:Op donderdag 8 juni 2006 10:28 schreef ralfie het volgende:
[..]
ik ben erachter gekomen dat ik niet met chmod, maar met dit grapje mijn hele website heb verkloot. Omdat door een foutje geen bestandsnaam is toegevoegd heeft php de rootdirectory ingelezen als bestand, toen de directory verwijdert en daarna een bestand aangemaakt met de inhoud van het mapbestand. Keertje checken op is_dir() is dus geen overbodige luxe![]()
ja, idd, LOLquote:
Op de manier zoals jij het doet krijg je ofwel een query per woord of een UNION oid, en het wordt lastig om daar een score aan toe te kennenquote:Op donderdag 8 juni 2006 17:18 schreef LeeHarveyOswald het volgende:
Ik ben mezelf behoorlijk vast aan het programmeren... Wat ik in totaal wil (waar ook de eerdere vragen voor waren) is zoiets als dit:
1. Ik selecteer uit database 'words' de id keys van een aantal woorden (keywords die ingevuld zijn in form).
2. Uit een andere tabel ('Sites')ga ik dus opzoek naar die keywords, dit moet in "and" vorm gebeuren, daaruit wil ik de sites selecteren waar En keyword X, en Keyword Y, Z, ... voorkomen. Dit moet per site op punten gegroepeerd worden, en gesorteerd.
Hoe ga ik dit qua query aanpakken?![]()
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |