bij het gebruik van fopen krijg ik volgende foutmeldingen:

Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Site\HSC\frameset\admin\populate.php on line 46

Warning: fopen(http://www.haco.com/index.php) [function.fopen]: failed to open stream: No error in C:\Site\HSC\frameset\admin\populate.php on line 46


Warning: fgets(): supplied argument is not a valid stream resource in C:\Site\HSC\frameset\admin\populate.php on line 50

Warning: fclose(): supplied argument is not a valid stream resource in C:\Site\HSC\frameset\admin\populate.php on line 85


dir is mijn code:

<?php
/*
* populate.php
*
* Script for populating the search-database with words,
* pages and word-occurences.
*/
/* Connect to the database: */
ini_set('display_errors', 1); // 0 = uit, 1 = aan 
error_reporting(E_ALL); 

/*mysql_pconnect("localhost","root","Tamara:19;75")
    or die("ERROR: Could not connect to database!");
mysql_select_db("HSC");*/

include '../../includes/connect.php';
/* Define the URL that sould be processed: */
$url = $_GET['url'];
echo $url;
echo "<br>";
if( !$url )
{
    die( "You need to define a URL to process." );
}
else if( substr($url,0,7) != "http://" )
{
    $url = "http://$url";
}
/* Does this URL already have a record in the page-table? */
$result = mysql_query("SELECT page_id FROM page WHERE page_url = \"$url\"");
$row = mysql_fetch_array($result);
if( $row['page_id'] )
{
    /* If yes, use the old page_id: */
    $page_id = $row['page_id'];
	
}
else
{
    /* If not, create one: */
    mysql_query("INSERT INTO page (page_url) VALUES (\"$url\")");
    $page_id = mysql_insert_id();
	
}
/* Start parsing through the text, and build an index in the database: */
$fd = fopen($url,"r");

while( $buf = fgets($fd,1024) )
{
    /* Remove whitespace from beginning and end of string: */
    $buf = trim($buf);
    /* Try to remove all HTML-tags: */
    $buf = strip_tags($buf);
    $buf = ereg_replace('/&\w;/', '', $buf);
    /* Extract all words matching the regexp from the current line: */
    preg_match_all("/(\b[\w+]+\b)/",$buf,$words);
    /* Loop through all words/occurrences and insert them into the database: */
    for( $i = 0; $words[$i]; $i++ )
    {
        for( $j = 0; $words[$i][$j]; $j++ )
        {
            /* Does the current word already have a record in the word-table? */
            $cur_word = 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'] )
            {
                /* If yes, use the old word_id: */
                $word_id = $row['word_id'];
            }
            else
            {
                /* If not, create one: */
                mysql_query("INSERT INTO word (word_word) VALUES (\"$cur_word\")");
                $word_id = mysql_insert_id();
            }
             /* And finally, register the occurrence of the word: */
            mysql_query("INSERT INTO occurrence (word_id,page_id) VALUES ($word_id,$page_id)");
            print "Indexing: $cur_word<br>";
        }
    }
}
fclose($fd);
?>


probeer eens:
<?php
$fd = fopen($url,'r');
file_exists($fd);
?>

Ik geloof zelf dat je fopen alleen voor bestanden kan gebruiken die zich lokaal bevinden op je webserver
dat bestand staat op mijn server é
probeer dan eens als bv je .php bestand in je root zou staan en het bestand wat je wilt openen in een map 'bestanden':

<?php
if (file_exists('bestanden/'.$filename) {
fopen('bestanden/'.$filename);
} else {
echo 'Bestand bestaat niet!';
}
?>

als het bestand in een map vóór je php bestand staat kun je gebruiken:

<?php
if (file_exists('../'.$filename) {
fopen('../'.$filename);
} else {
echo 'Bestand bestaat niet!';
}
?>

mappen gebruiken welke vóór je werkmap staan definieer je met ../bestand.ext
mappen gebruiken welke ná je werkmap staan definieer je met %mapnaam%/bestand.ext

Maar gebruik hiervoor géén URL's

dat helpt ook niet
verander dit
<?php
else if( substr($url,0,7) != "http://" )
{
$url = "http://$url";
}
?>
eens in
<?php
else if( substr($url,0,7) != "http://" )
{
$url = "http://".$url;
}
?>

Je moet variabelen buiten quotes houden
dat verandert ook nx hoor
Er staan nog meer variabelenbinnen quotes, zorg dat deze allemaal buiten quotes komen, geef ook weer wat de foutmeldingen nu zijn, dan gaan we weer verder

tip:
een string en een variabele plak je aan elkaar met een .

net als 'stukje text'.$var;

de string dus binnen quotes dan plak je em aan een var met een .

ook zo dus:
'stukje text '.$var.' nog wat text';

veel succes!
ik denk dat ik nu al de variabelen eruit heb gehaald.

dit zijn de foutmeldingen die ik nu nog krijg:

Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Site\HSC\frameset\admin\populate.php on line 54

Warning: fopen(http://www.haco.com/hsc/frameset/mainnav.htm) [function.fopen]: failed to open stream: No error in C:\Site\HSC\frameset\admin\populate.php on line 54

Warning: fgets(): supplied argument is not a valid stream resource in C:\Site\HSC\frameset\admin\populate.php on line 57

Warning: fclose(): supplied argument is not a valid stream resource in C:\Site\HSC\frameset\admin\populate.php on line 92
heeft die map de juiste rechten?

zoniet CHMOD die map op 777..
als die dan werkt weet je hoe of wat..
@Marvin en op welke map moeten die rechten dan wel zijn??

Reageren