/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Finner ikke ut av denne advarsel...
Fra : Karl-Arne Gjersøyen


Dato : 25-10-10 15:59

Hei.
Jeg har et script som følger:
// Oppdater RSS fil
// ***************************************************************
if(isset($_POST['submit_rss'])){
   $rss_url = $_POST['rss_url'];
   $linkText = $_POST['linkText'];
   
   $data = '<item>';
   $data .= '<title>' .$linkText. '</title>';
$data .= '<link>'.$rss_url.'</link>';
   $data .= '</item>';

   // Oppdater item.php med nye oppføringer
   // file_put_contents.... fungerer med legger nye oppføringer i
   // slutten av fila... Etter informasjon som alt er lagret..
   //file_put_contents('inc/item.php', $data, FILE_APPEND);
   
   // Fordi jeg ønsker at oppdateringer skal skje i begynnelsen
   // av fila har jeg laget dette;
   $fp = fopen('inc/item.php', 'r+')|| die('Kunne ikke åpne fila');
      fwrite($fp, $data)|| die('Kunne ikke skrive til fila');
      fclose($fp)|| die('kunne ikke lukke fila');

   // Oppdater index.xml
   // -------------------
   // Først skriv begynnelsen av xml fila
   $xmlstring = '<?xml version="1.0" encoding="utf-8"?>
      <rss version="2.0">
         <channel>
         <title>Min NKI RSS</title>
         <link>http://localhost/~karl/nki/
      ';
   // Hent inn innhold fra item.php
   $xmlstring .= file_get_contents('inc/item.php');

   
   // Avslutt xml fil innhold
   $xmlstring .= '</channel>
   </rss>';
      // Write xml file for RSS feed
      $filename = "index.xml";
      file_put_contents($filename, $xmlstring);
   
   // Ikke fortsett å laste siden. Avslutt her
   return false;
}

Når jeg kjører programmet så får jeg følgende feil:
-----------------------------------------------------
Warning: fwrite() expects parameter 1 to be resource, boolean given in
/Users/karl/Sites/nki/inc/login.php on line 17
Kunne ikke skrive til fila

Her er koden som generer feil:
-------------------------------
$fp = fopen('inc/item.php', 'r+')|| die('Kunne ikke åpne fila');
   fwrite($fp, $data)|| die('Kunne ikke skrive til fila');
   fclose($fp)|| die('kunne ikke lukke fila');

Hvorfor er ikke file handler $fp gyldig som resource?

Miljøet jeg jobber på er MacBook Pro, OS X 10.6 (Snow Leopard) med PHP
versjon:
-----------------------------------------------------------------------
PHP 5.3.2 (cli) (built: Aug 7 2010 00:04:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Og Apache version:
-------------------
Server version: Apache/2.2.14 (Unix)
Server built: Feb 11 2010 14:40:31

Er du noe jeg må konfigurere i php.ini?

Takk for din tid og hjelp.
Mvh Karl-Arne
--
My Home Pages: http://www.karl-arne.name/

 
 
Birger Sørensen (25-10-2010)
Kommentar
Fra : Birger Sørensen


Dato : 25-10-10 19:11

Karl-Arne Gjersøyen:
8X
> $fp = fopen('inc/item.php', 'r+')|| die('Kunne ikke åpne fila');
>    fwrite($fp, $data)|| die('Kunne ikke skrive til fila');
>    fclose($fp)|| die('kunne ikke lukke fila');
>
> Hvorfor er ikke file handler $fp gyldig som resource?

Et gæt kunne være / i filnavn.
Prøv \ i stedet.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Henrik Glensbo (25-10-2010)
Kommentar
Fra : Henrik Glensbo


Dato : 25-10-10 19:48

Skal koden se sådan ud eller skal de alle være .=??   
>    $data = '<item>';
>    $data .= '<title>' .$linkText. '</title>';
> $data .= '<link>'.$rss_url.'</link>';
>    $data .= '</item>';
>
Kan du lave en echo og få et resultat af $fp?

>    $fp = fopen('inc/item.php', 'r+') die('Kunne ikke åpne fila');

Er alle rettigheder sat på den mappe der skal åbnes og skrives til?

>       fwrite($fp, $data) die('Kunne ikke skrive til fila');
>       fclose($fp) die('kunne ikke lukke fila');
>
God arbejdslyst og lad os høre hvad du finder ud af


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Karl-Arne Gjersøyen (26-10-2010)
Kommentar
Fra : Karl-Arne Gjersøyen


Dato : 26-10-10 08:36

skrev Henrik Glensbo:
> Skal koden se sådan ud eller skal de alle være .=??   
>>    $data = '<item>';
>>    $data .= '<title>' .$linkText.'</title>';
>> $data .= '<link>'.$rss_url.'</link>';
>>    $data .= '</item>';
>>
> Kan du lave en echo og få et resultat af $fp?
>
>>    $fp = fopen('inc/item.php', 'r+') die('Kunne ikke åpne fila');
>
> Er alle rettigheder sat på den mappe der skal åbnes og skrives til?
>
>>       fwrite($fp, $data) die('Kunne ikke skrive til fila');
>>       fclose($fp) die('kunne ikke lukke fila');
>>
> God arbejdslyst og lad os høre hvad du finder ud af
>
>
Her er et par eksempler som virker. Det første eksemplet oppdaterer RSS
Feed kilden index.xml ved hjelp av et skjema. (Det siste eksemplet
oppdaterer RSS Feed lista ved hjelp av en tabell i MySQL databasen)
========================================================================
HTML Skjemaet:
**************
echo $html = '
         <h1>Velkommen til admin, '. $username .'</h1>
         <h3>Legg til ny oppføring i RSS lista</h3>
         <form action="index.php?menu=login" method="post">
         <p><strong>URL</strong><br />
         <input type="text" name="rss_url" size="32" />
         </p>
         <p>
         <strong>Lenke tekst</strong><br />
         <input type="text" name="linkText" size="32" />
         </p>
         <p>
         <input type="submit" name="submit_rss" value="Oppdater" />
         </p>
         </form>
      ';

I katalogen inc/ ligger item.php som er der nye lenker blir oppdatert.
**********************************************************************
index.xml ligger i root katalogen til serveren

Her er PHP koden for å hente inn eksisterende data fra item.php
og legge til ny data først i fila, slik at nyeste data havner
øverst/først i RSS feed menyen
**********************************************************************
// ***************************************************************
// Oppdater RSS fil
// ***************************************************************
if(isset($_POST['submit_rss'])){
   $rss_url = $_POST['rss_url'];
   $linkText = $_POST['linkText'];
   
   $data = '<item>';
   $data .= '<title>' .$linkText. '</title>';
$data .= '<link>'.$rss_url.'</link>';
   $data .= '</item>';

   // Oppdater item.php med nye oppføringer
   // --------------------------------------
   
   $filnavn = 'inc/item.php';
    $fp = fopen($filnavn, "r");
      if($fp) {
         $eksisterende_data = file_get_contents($filnavn);
      fclose($fp);
      
      // Fordi jeg ønsker at oppdateringer skal skje i begynnelsen
      // av fila har jeg laget dette;
      // -----------------------------------------------------------
      $fp = fopen($filnavn,'w+');
         $oppdaterTekst = $data . $eksisterende_data;
         if(fwrite($fp, $oppdaterTekst) === false) {
            echo "Kan ikke skrive til fila";
         }
      fclose($fp);
      
      } else {
         die ('Kan ikke åpne fila');
      }
      
   // Oppdater index.xml
   // -------------------
   // Først skriv begynnelsen av xml fila
   $xmlstring = '<?xml version="1.0" encoding="utf-8"?>
      <rss version="2.0">
         <channel>
         <title>Min NKI RSS</title>
         <link>http://localhost/~karl/nki/
      ';
   
   // Hent inn innhold fra item.php
   $xmlstring .= file_get_contents('inc/item.php');

   
   // Avslutt xml fil innhold
   $xmlstring .= '</channel>
   </rss>';
   
      // Write xml file for RSS feed
      $filename = "index.xml";
      file_put_contents($filename, $xmlstring);
   // Ikke fortsett å laste siden. Avslutt her
   return false;
}


// **************************************************
// Bruk av MySQL database oppføringer i RSS Feed
// **************************************************
// kildefil for RSS heter feed.xml og ligger i root katalogen

// Taken from http://www.earn-web-cash.com/2008/02/14/create-rss-feed-php/
*************************************************************************
$xmlString = '<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>KAOS Blog - RSS</title>
<link>http://localhost/~karl/rss/
';
// Connect and select database
$connect = mysql_connect("localhost","brukenavn","passord");
$selectDB = mysql_select_db("page");

// Select 10 latest records from content table. List
// the result with latest article first. (revers order sort by ID)
$sql = "SELECT cid, header FROM content ORDER BY cid DESC LIMIT 10";
$result = mysql_query($sql);


// Get new items for the RSS feed
while ($row = mysql_fetch_array($result)) {
$cid = $row['cid'];
$xmlString .= ' <item>
<title>' . $row['header'] . '</title>
<link>'>http://localhost/~karl/rss/index.php?articleID='.$cid.'
</item>
';
}

$xmlString .= '</channel>
</rss>';
// Write xml file for RSS feed
$filename = "feed.xml";
file_put_contents($filename, $xmlString);

// Begge disse 2 eksemplene virker under PHP v.5.3.2

Mvh Karl-Arne
--
My Home Pages: http://www.karl-arne.name/

Jonathan Stein (25-10-2010)
Kommentar
Fra : Jonathan Stein


Dato : 25-10-10 22:45

Den 25-10-2010 16:59, Karl-Arne Gjersøyen skrev:

> $fp = fopen('inc/item.php', 'r+')|| die('Kunne ikke åpne fila');

Du skal ændre "||" til "or":
$fp = fopen('inc/item.php', 'r+') or die('Kunne ikke åpne fila');

http://www.php.net/manual/en/language.operators.precedence.php

M.v.h.

Jonathan

Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407947
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste