query / insert probleem
iemand nog een suggestie ?
het enige wat ik nu nog kan bedenken (en ga dat zo proberen als ik thuis kom) is het volgende :
Code (php)
ik weet alleen niet of dat mogelijk is maar ja proberen kan altijd. Verder heb ik overal gezocht op internet maar zie nergens echt een duidelijk uitleg danwel oplossing.
kan iemand me in de goede richting helpen ?
Wat voor waardes staan er in het array() words?
:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);
$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);
?>
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);
$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);
?>
Gewijzigd op 01/01/1970 01:00:00 door Robin
Dus jij bent een getal met een woord aan het vergelijken en dat gaat nooit werken.
Deze moet echter wel toegevoegd worden maar ik zal even controleren of het probleem zich nog steeds voordoet als ik deze weg haal. Op zich heb je namelijk een goed punt, mijn dank daarvoor
for( $i = 0; $words[$i] <= 50 ; $i++ )
dat begrijp ik niet helemaal, het is in ieder geval mijn bedoeling dat "<= 50 " als effect heeft dat er maximaal 50 woorden worden opgeslagen.
in $words staan al alle woorden die zijn opgehaald uit de pagina. met de for loop word gekeken hoe vaak het woord voorkomt.
Stel dat een woord 4 keer op een webpagina voorkomt (en dus 4x in $words is opgeslagen) dan dan slaat hij het dat woord maar 1 keer op in de database en zet er dan achter dat het 4x voorkomt (occurrence)
dit is namelijk de rest van de code :
Code (php)
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
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
<?
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);
$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);
/* doorzoek alle velden op woorden en voeg ze toe in de database: */
for( $i = 0; $words[$i]; $i++ )
{
for( $j = 0; $words[$i][$j]; $j++ )
{
/* bestaat het huidige woord al ? */
$cur_word = addslashes( strtolower($words[$i][$j]) );
$result = mysql_query("SELECT word_id FROM word
WHERE word_word = '$cur_word'");
$row = mysql_fetch_array($result);
if( $row['word_id'] )
{
/* zo ja, gebruik het oude word_id: */
$word_id = $row['word_id'];
}
else
{
/* zo nee,maak een nieuwe: */
mysql_query("INSERT INTO word (word_word) VALUES (\"$cur_word\")");
$word_id = mysql_insert_id();
}
/* voeg het aantal keer dat een woord voorkomt toe in de database: */
mysql_query("INSERT INTO occurrence (word_id,page_id)
VALUES ($word_id,$page_id)");
print "Indexing: $cur_word<br>";
}
}
?>
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);
$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);
/* doorzoek alle velden op woorden en voeg ze toe in de database: */
for( $i = 0; $words[$i]; $i++ )
{
for( $j = 0; $words[$i][$j]; $j++ )
{
/* bestaat het huidige woord al ? */
$cur_word = addslashes( strtolower($words[$i][$j]) );
$result = mysql_query("SELECT word_id FROM word
WHERE word_word = '$cur_word'");
$row = mysql_fetch_array($result);
if( $row['word_id'] )
{
/* zo ja, gebruik het oude word_id: */
$word_id = $row['word_id'];
}
else
{
/* zo nee,maak een nieuwe: */
mysql_query("INSERT INTO word (word_word) VALUES (\"$cur_word\")");
$word_id = mysql_insert_id();
}
/* voeg het aantal keer dat een woord voorkomt toe in de database: */
mysql_query("INSERT INTO occurrence (word_id,page_id)
VALUES ($word_id,$page_id)");
print "Indexing: $cur_word<br>";
}
}
?>
zo werkt de code bijna goed..hij doet in principe alles behalve dan de foutmelding mbt de for loop......
ik hoop dat ik zo wat duidelijker ben en je een idee hebt hoe ik dit op kan lossen.
bvd
Gewijzigd op 01/01/1970 01:00:00 door Robin
omdat ik naast $omschrijving meerdere variabelen had heb ik dit aangepast naar het volgende, maar naar mijn inziens kan dit geen kwaad:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);
$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);
?>
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$categorie,$words1);
preg_match_all("/(\b[\w+]+\b)/",$leeftijd,$words2);
preg_match_all("/(\b[\w+]+\b)/",$naam,$words3);
preg_match_all("/(\b[\w+]+\b)/",$naamsite,$words4);
preg_match_all("/(\b[\w+]+\b)/",$omschrijving,$words5);
preg_match_all("/(\b[\w+]+\b)/",$url,$words6);
preg_match_all("/(\b[\w+]+\b)/",$website,$words7);
preg_match_all("/(\b[\w+]+\b)/",$woonplaats,$words8);
$words = array_merge($words1, $words2, $words3, $words4, $words5, $words6, $words7, $words8);
?>
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$buf = $categorie . $leeftijd . $naam . $naamsite . $omschrijving . $url . $website . $woonplaats;
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$buf,$words);
?>
$buf = $categorie . $leeftijd . $naam . $naamsite . $omschrijving . $url . $website . $woonplaats;
/* haal alle woorden eruit: */
preg_match_all("/(\b[\w+]+\b)/",$buf,$words);
?>
Helaas krijg ik dezelfde foutmelding. Hij doet precies wat ik wil, maar geeft het volgende aan :
Notice: Undefined offset: 22 in /var/www/vhosts/bla.nlhttpdocs/test.php on line 102
het ligt dus echt aan de for loop in onderstaande code:
Code (php)
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
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
<?php
/* doorzoek alle velden op woorden en voeg ze toe in de database: */
for( $i = 0; $words[$i]; $i++ )
{
for( $j = 0; $words[$i][$j]; $j++ )
{
/* bestaat het huidige woord al ? */
$cur_word = addslashes( strtolower($words[$i][$j]) );
$result = mysql_query("SELECT word_id FROM word
WHERE word_word = '$cur_word'");
$row = mysql_fetch_array($result);
if( $row['word_id'] )
{
/* zo ja, gebruik het oude word_id: */
$word_id = $row['word_id'];
}
else
{
/* zo nee,maak een nieuwe: */
mysql_query("INSERT INTO word (word_word) VALUES (\"$cur_word\")");
$word_id = mysql_insert_id();
}
/* voeg het aantal keer dat een woord voorkomt toe in de database: */
mysql_query("INSERT INTO occurrence (word_id,page_id)
VALUES ($word_id,$page_id)");
print "Indexing: $cur_word<br>";
}
}
}
?>
/* doorzoek alle velden op woorden en voeg ze toe in de database: */
for( $i = 0; $words[$i]; $i++ )
{
for( $j = 0; $words[$i][$j]; $j++ )
{
/* bestaat het huidige woord al ? */
$cur_word = addslashes( strtolower($words[$i][$j]) );
$result = mysql_query("SELECT word_id FROM word
WHERE word_word = '$cur_word'");
$row = mysql_fetch_array($result);
if( $row['word_id'] )
{
/* zo ja, gebruik het oude word_id: */
$word_id = $row['word_id'];
}
else
{
/* zo nee,maak een nieuwe: */
mysql_query("INSERT INTO word (word_word) VALUES (\"$cur_word\")");
$word_id = mysql_insert_id();
}
/* voeg het aantal keer dat een woord voorkomt toe in de database: */
mysql_query("INSERT INTO occurrence (word_id,page_id)
VALUES ($word_id,$page_id)");
print "Indexing: $cur_word<br>";
}
}
}
?>
heeft echt niemand een idee ??
ps. $words moet dus wel in de for loop !! maar iets klopt er niet aan, er dient dus iets te worden toegevoegd, maar ik weet echt niet wat !!
Ik heb het probleem inmiddels opgelosd. De for loop is zo geworden: