Oud 17-08-2003, 20:08
deathz0rz
deathz0rz is offline
uit mijn zoek-script komt een array:

$search[$keyword][$pageid]=array(0 => $min, 1 => $max);

met daarin de gevonden range met een keyword (1 per pagina).

Nu wil de resultaten uitprinten, waarbij ie de stukjes text print, die staan in

$cache[$pageid]=$text;

en ik wil natuurlijk dat als stukken van de range elkaar overlappen dat ie dat aan elkaar print, dus niet twee x het zelfde stuk met ... ertussen.

edit: voorbeeld voor een $search array:
Array
(
  [windows xp] => Array
    (
      [2] => Array
        (
          [0] => 132
          [1] => 176
        )
      [4] => Array
        (
          [0] => 178
          [1] => 222
        )
      [6] => Array
        (
          [0] => 149
          [1] => 193
        )
    )
  [icon] => Array
    (
      [2] => Array
        (
          [0] => 343
          [1] => 387
        )
      [4] => Array
        (
          [0] => 309
          [1] => 353
        )
      [1] => Array
        (
          [0] => 14
          [1] => 58
        )
      [6] => Array
        (
          [0] => 152
          [1] => 196
        )
    )
  [api] => Array
    (
      [2] => Array
        (
          [0] => 0
          [1] => 56
        )
      [4] => Array
        (
          [0] => 522
          [1] => 578
        )
    )
)
__________________
Ooit. Dan.

Laatst gewijzigd op 17-08-2003 om 20:19.
Met citaat reageren
Advertentie
Oud 17-08-2003, 20:55
Verwijderd
Euhm, hoe wil je ordenen (oplopend/aflopend, bedoel je dat?)?
Of lees ik ergens overheen?
Met citaat reageren
Oud 17-08-2003, 20:57
deathz0rz
deathz0rz is offline
dat boeit niet echt, maar hij moet dus per pagina stukjes tekst printen, google like
__________________
Ooit. Dan.
Met citaat reageren
Oud 17-08-2003, 21:06
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Citaat:
deathz0rz schreef op 17-08-2003 @ 21:57:
dat boeit niet echt, maar hij moet dus per pagina stukjes tekst printen, google like
Bedoel je dan dat hij gewoon je array moet uitlezen en dan elke keer gewoon 10 per pagina moet printen?

Want dan kun je de array gewoon 10 voor 10 uit laten lezen (ik heb niet zo snel een voorbeeld voor je), ik werk altijd zo met mijn database uitlezen.

Je geeft startwaardes door naar de volgende/vorige pagina, die leest de array weer uit vanaf die startwaarde tot de startwaarde +10...

Bedoel je zoiets?

Want dat doe je toch gewoon met een while (toch?)...
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 17-08-2003, 21:10
Verwijderd
Ik snap niet precies wat je wilt

Maar kijk eens naar de volgende functies:
for()
while()
list()
Met citaat reageren
Oud 17-08-2003, 21:18
deathz0rz
deathz0rz is offline
eeh nee dat is helemaal niet wat ik bedoel

lezen jullie wel goed eigk? mssn is het een beetje moeilijk uit te leggen... daarom heb ik ook een voorbeeld van zon array erbij gedaan
__________________
Ooit. Dan.
Met citaat reageren
Oud 17-08-2003, 21:20
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Citaat:
deathz0rz schreef op 17-08-2003 @ 22:18:
eeh nee dat is helemaal niet wat ik bedoel

lezen jullie wel goed eigk? mssn is het een beetje moeilijk uit te leggen... daarom heb ik ook een voorbeeld van zon array erbij gedaan
*still confused*
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 17-08-2003, 21:59
deathz0rz
deathz0rz is offline
stel je hebt deze pagina's:

1 Rob Stenders en Ruud de Wild blijven bij 3FM:
Rob Stenders blijft in de ochtend op Radio 3FM. Hij heeft wel met wat andere stations zoals Yorin FM gesproken, maar hij wil toch liever gewoon op 3FM blijven. Hetzelfde geldt voor Ruud de Wild. De populaire dj blijft gewoon het middagprogramma Ruuddewild.nl maken op 3FM. Ook bij Ruud was er even sprake van dat hij misschien weg zou gaan. Met de twee dj's begint het publieke popstation in september met een nieuwe programmering. Doordeweeks veranderen er drie dingen in vergelijking met nu. Zo is voortaan Claudia de Breij tussen 12 en 14 uur te horen met het programma 'Claudia d'r op!'. Henk Westbroek maakt plaats voor haar. De avond is compleet vernieuwd. Giel Beelen volgt Isabelle Brinkman tussen 18 en 20 uur op die naar SBS Shownieuws vertrok. Tussen 20 en 22 uur gaat dj Timur Perlin een programma maken. Hij komt van Yorin FM af.

2 Noor verwondt zes vrienden op verjaardagsfeest:
Een Noorse man heeft op een surprise-party ter ere van zijn 40e verjaardag per ongeluk zes gasten beschoten en verwond. Hij trof een vrouw in haar benen, vijf anderen raakten lichtgewond. De Noor was erachter gekomen dat zijn vrienden in een bos een surprise-party hadden georganiseerd. Hij besloot hen vervolgens zelf te verrassen door vanuit de struiken ineens met een geweer in de lucht te schieten. Hij deed dit, maar struikelde daarna, waardoor het wapen opnieuw af ging. De Noor is in shocktoestand opgenomen in het ziekenhuis.

3 Groep gijzelaars in Mali vrijgelaten:
Het Duitse tv-station ZDF meldt dat de groep Europese gijzelaars in Mali is vrijgelaten. De groep werd dit voorjaar ontvoerd in de Algerijnse Sahara. Onder de gijzelaars bevindt zich ook een Nederlander: Arjen Hilbers. Het ministerie van Buitenlandse Zaken wil het bericht nog niet bevestigen. Een verslaggever van de ZDF meldt dat functionarissen uit Nederland, Duitsland en Zwitserland zouden klaarstaan om de 14 gijzelaars te verwelkomen. De Duitse staatssecretaris van Buitenlandse Zaken kwam vandaag in Bamako aan met een ziekenboeg. Vandaag of morgen zouden ook de gijzelaars daar aankomen. Volgens de verslaggever is er losgeld betaalt door vermoedelijk de Malinese regering.

je zoekt naar 'en de het'

daarbij hoort deze array:

Code:
Array
(
  [de] => Array
    (
      [1] => Array
        (
          [0] => 0
          [1] => 55
        )
      [2] => Array
        (
          [0] => 158
          [1] => 220
        )
      [3] => Array
        (
          [0] => 6
          [1] => 68
        )
    )
  [en] => Array
    (
      [1] => Array
        (
          [0] => 506
          [1] => 568
        )
      [2] => Array
        (
          [0] => 78
          [1] => 140
        )
      [3] => Array
        (
          [0] => 343
          [1] => 405
        )
    )
  [het] => Array
    (
      [1] => Array
        (
          [0] => 195
          [1] => 258
        )
      [2] => Array
        (
          [0] => 420
          [1] => 483
        )
      [3] => Array
        (
          [0] => 0
          [1] => 33
        )
    )
)
na processing moet er dit in je browser verschijnen:

Rob Stenders en Ruud de Wild blijven bij 3FM
Rob Stenders blijft in de ochtend op Radio 3FM. Hij hee...De populaire dj blijft gewoon het middagprogramma Ruuddewild.nl ...an Claudia de Breij tussen 12 en 14 uur te horen met het progra

Noor verwondt zes vrienden op verjaardagsfeest
ongeluk zes gasten beschoten en verwond. Hij trof een vrouw in... anderen raakten lichtgewond. De Noor was erachter gekomen dat ...r struikelde daarna, waardoor het wapen opnieuw af ging. De Noor

Groep gijzelaars in Mali vrijgelaten
Het Duitse tv-station ZDF meldt dat de groep Europese gijzelaars in ...ssen uit Nederland, Duitsland en Zwitserland zouden klaarstaan
__________________
Ooit. Dan.
Met citaat reageren
Oud 17-08-2003, 22:08
deathz0rz
deathz0rz is offline
PHP-code:
<?php 
define
('DEBUG',true);
include_once((
DEBUG?'../':'')."include/common.php");
include_once((
DEBUG?'../':'')."include/config.php");

header('Content-type: text/plain');

// CACHE WHEN NECESSARY
if (!defined("DONT_CACHE"))
    include_once(
"search_cache.php");

// GET DATA FROM CACHE
mysql_db();
$q="SELECT * FROM `search_cahce` LEFT JOIN `pages` ON `search_cahce`.`id`=`pages`.`id` WHERE `pages`.`active`=1;";
$r=mysql_query($q) or die(mysql_error());
while (
$row=mysql_fetch_object($r)) {
    
$cache[strval($row->ID)]=$row->text;
    
$pgarr[$row->ID]['name']=$row->name;
    
$pgarr[$row->ID]['date']=mktime($row->date);
    
$pgarr[$row->ID]['creator']=$row->creator;
}
unset(
$r);

function 
whole_string($matches) {
    global 
$whole_strings;
    
$whole_strings[]=$matches[1];
    return 
'';
}

function 
split_keys($keys) {
    global 
$whole_strings;
    
$patt='!"(.*)"!iU'// USED TO FIND KEYWORDS.
    
$x=explode(' ',preg_replace_callback($patt,"whole_string",$keys));  // ALSO CHECK FOR 'WHOLE STRING'
    
foreach (($whole_strings?$whole_strings:array()) as $v) {
        
$x[]=$v;
    }
    foreach (
$x as $k => $v) {
        if (!
$v
            unset(
$x[$k]);
    }
    return 
$x;
}

function 
search_key($key,$offset=20) {
    global 
$cache;
    
    
$patt="!\s".preg_quote($key,'!')."\s!i"// USED TO FIND KEYWORD
    
$reslen=($offset*2)+2+strlen($key);      //LENGTH OF THE RESULT
    
    
foreach ($cache as $name => $page) {
        
preg_match_all($patt,$page,$x,PREG_OFFSET_CAPTURE|PREG_PATTERN_ORDER);
        foreach (
$x[0] as $match) {            
            
$offset1=($match[1]-($offset-1)<0?0:$match[1]-($offset-1));
            
$offset2=$offset1+$reslen;
            
$r[$name]=array($offset1,$offset2);
            break;
        }
    }
    return 
$r;
}

$keys=split_keys('en de het');
$keycount=count($keys);
foreach(
$keys as $key) {
    
$search[$key]=search_key($key);
}

print_r($search);
?>
__________________
Ooit. Dan.
Met citaat reageren
Oud 17-08-2003, 22:16
Verwijderd
hmm...
waar heb jij queries leren maken :/
Met citaat reageren
Oud 17-08-2003, 22:45
deathz0rz
deathz0rz is offline
Citaat:
McLaren schreef op 17-08-2003 @ 23:16:
hmm...
waar heb jij queries leren maken :/
hoezo?

Citaat:
Bootsman123 schreef op 17-08-2003 @ 23:16:
En waar geleerd dat je nooit spaties hoeft te gebruiken.


Citaat:
Bootsman123 schreef op 17-08-2003 @ 23:11:
mysql_db();
$q="SELECT * FROM `search_cahce` LEFT JOIN `pages` ON `search_cahce`.`id`=`pages`.`id` WHERE `pages`.`active`=1;";

Het lijkt mij logisch dat het "search_cache" moet zijn.
eeh ja, maar het werkt wel typo zeg maar

Citaat:
Bootsman123 schreef op 17-08-2003 @ 23:19:
Heb je zelf niet een of ander idee hoe je het Google-like wilt doen? Als eerste ingeving (meestal zijn die heel slecht, maar wel goed voor mezelf om me op weg te helpen) een keyword vinden en dan daarna nog 60 charachters uitprinten, mits de tweede keyword er niet in voorkomt, daarna "..." zetten en dan het tweede keyword vetgedrukt uitprinten, dan weer "..." enz. Zo zou ik het in eerste instantie doen.
maar zo werkt het dus niet, hij gaat eerst met keyword1 alle pagina's af, dan met 2 enz....
__________________
Ooit. Dan.

Laatst gewijzigd op 17-08-2003 om 22:49.
Met citaat reageren
Oud 17-08-2003, 22:58
Verwijderd
Jou query:
Code:
"SELECT * FROM `search_cahce` LEFT JOIN `pages` ON `search_cahce`.`id`=`pages`.`id` WHERE `pages`.`active`=1;"
Mijn versie:
Code:
SELECT * FROM search_cahce LEFT JOIN pages ON search_cahce.id=pages.id WHERE pages.active=1
Maar fijner vind ik (maar weet niet zeker of hetzelfde doet)
Code:
SELECT * FROM pages,search_cahce WHERE search_cahce.id=pages.id && pages.active=1
(ennuh, cahce? niet cache?)
Met citaat reageren
Oud 17-08-2003, 23:19
deathz0rz
deathz0rz is offline
Citaat:
McLaren schreef op 17-08-2003 @ 23:58:
Jou query:
Code:
"SELECT * FROM `search_cahce` LEFT JOIN `pages` ON `search_cahce`.`id`=`pages`.`id` WHERE `pages`.`active`=1;"
Mijn versie:
Code:
SELECT * FROM search_cahce LEFT JOIN pages ON search_cahce.id=pages.id WHERE pages.active=1
Maar fijner vind ik (maar weet niet zeker of hetzelfde doet)
Code:
SELECT * FROM pages,search_cahce WHERE search_cahce.id=pages.id && pages.active=1
(ennuh, cahce? niet cache?)
aha
jij doet het dus zonder `'s, dan krijg je problemen als je fields hebt als 'key' en 'md5' enzo
__________________
Ooit. Dan.
Met citaat reageren
Oud 18-08-2003, 11:26
Verwijderd
nee hoor, heb nergens problemen mee
Met citaat reageren
Oud 18-08-2003, 12:30
Chimera
Avatar van Chimera
Chimera is offline
Leg eerst eens gewoon uit wat je uberhaupt wil, niemand gaat dat stuk code uitpluizen om info te krijgen die je ook gewoon op papier kunt zetten.
Met citaat reageren
Oud 18-08-2003, 12:31
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
McLaren schreef op 18-08-2003 @ 12:26:
nee hoor, heb nergens problemen mee
Hoe dan ook, of hij z'n ids tussen quotes zet boeit niet.
Met citaat reageren
Advertentie
Reageren

Topictools Zoek in deze topic
Zoek in deze topic:

Geavanceerd zoeken

Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 11:25.