[php] invalid File-Handle resource bij creeen van bestand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Shook
  • Registratie: Februari 2001
  • Laatst online: 29-09-2024
Ik ben een php script aan het schrijven die een dia vervangt in een xml bestand. De oude dia en de nieuwe dia worden uit een html file gehaalt, dan wordt de oude dia gematcht in de xml, en vervangen door de nieuwe. Dit allemaal met search en replace. De variabelen uit de html komen allemaal prima door (gecheckt) en de structuur van het openen van een file en wegschrijven heb ik al eerder gedaan, wat allemaal prima werkte. Hij loopt vast op "fclose($test);". Hier refereert de parser naar als hij bovenstaande foutmelding geeft.

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
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
120
121
122
123
124
125
126
<?php

//neem alle variabelen uit editHTML en zet ze om in php variabelen.
$checkVar1 = $_POST['checkVar1'];
$checkVar2 = $_POST['checkVar2'];
$lenenVar1 = $_POST['lenenVar1'];
$lenenVar2 = $_POST['lenenVar2'];
$naamVar1 = $_POST['naamVar1'];
$naamVar2 = $_POST['naamVar2'];
$kanumVar1 = $_POST['kanumVar1'];
$kanumVar2 = $_POST['kanumVar2'];
$kleurVar1 = $_POST['kleurVar1'];
$kleurVar2 = $_POST['kleurVar2'];
$omscVar1 = $_POST['omscVar1'];
$omscVar2 = $_POST['omscVar2'];
$afmetingVar1 = $_POST['afmetingVar1'];
$afmetingVar2 = $_POST['afmetingVar2'];
$jaartalVar1 = $_POST['jaartalVar1'];
$jaartalVar2 = $_POST['jaartalVar2'];
$verblijfCodeVar1 = $_POST['verblijfCodeVar1'];
$verblijfCodeVar2 = $_POST['verblijfCodeVar2'];
$verblijfVar1 = $_POST['verblijfVar1'];
$verblijfVar2 = $_POST['verblijfVar2'];
$dianrVar1 = $_POST['dianrVar1'];
$dianrVar2 = $_POST['dianrVar2'];
$archiefnrVar1 = $_POST['archiefnrVar1'];
$archiefnrVar2 = $_POST['archiefnrVar2'];
$auteurVar1 = $_POST['auteurVar1'];
$auteurVar2 = $_POST['auteurVar2'];
$titelVar1 = $_POST['titelVar1'];
$titelVar2 = $_POST['titelVar2'];
$plaatsVanUitgaveVar1 = $_POST['plaatsVanUitgaveVar1'];
$plaatsVanUitgaveVar2 = $_POST['plaatsVanUitgaveVar2'];
$jaarVanUitgaveVar1 = $_POST['jaarVanUitgaveVar1'];
$jaarVanUitgaveVar2 = $_POST['jaarVanUitgaveVar2'];
$paginaVar1 = $_POST['paginaVar1'];
$paginaVar2 = $_POST['paginaVar2'];
$afbeeldingVar1 = $_POST['afbeeldingVar1'];
$afbeeldingVar2 = $_POST['afbeeldingVar2'];
$opmerkingVar1 = $_POST['opmerkingVar1'];
$opmerkingVar2 = $_POST['opmerkingVar2'];
$twCodeVar1 = $_POST['twCodeVar1'];
$twCodeVar2 = $_POST['twCodeVar2'];
$twWaardeVar1 = $_POST['twWaardeVar1'];
$twWaardeVar2 = $_POST['twWaardeVar2'];
$twCatVar1 = $_POST['twCatVar1'];
$twCatVar2 = $_POST['twCatVar2'];

//maak 3 bestanden aan + hun variabelen.
$oudeDia = fopen("oudeDia.xml","w");
$nieuweDia = fopen("nieuweDia.xml","w");

//stop in variabele:oudeDia de oude dia.
fputs($oudeDia, "<DIA CHECK=\"$checkVar2\" UITGELEEND=\"$lenenVar2\" NAAM=\"$naamVar2\">\n");
fputs($oudeDia, "<KANUM>$kanumVar2</KANUM>\n");
fputs($oudeDia, "<KLEUR>$kleurVar2</KLEUR>\n");
fputs($oudeDia, "<OMSC>$omscVar2</OMSC>\n");
fputs($oudeDia, "<AFMETING>$afmetingVar2</AFMETING>\n");
fputs($oudeDia, "<JAARTAL>$jaartalVar2</JAARTAL>\n");
fputs($oudeDia, "<VERBLKODE>$verblijfCodeVar2</VERBLKODE>\n");
fputs($oudeDia, "<VERBLIJF>$verblijfVar2</VERBLIJF>\n");
fputs($oudeDia, "<DIANR>$dianrVar2</DIANR>\n");
fputs($oudeDia, "<ARCHIEFNR>$archiefnrVar2</ARCHIEFNR>\n");
fputs($oudeDia, "<AUTEUR>$auteurVar2</AUTEUR>\n");
fputs($oudeDia, "<TITEL>$titelVar2</TITEL>\n");
fputs($oudeDia, "<PL_UITG>$plaatsVanUitgaveVar2</PL_UITG>\n");
fputs($oudeDia, "<JAAR_UITG>$jaarVanUitgaveVar2</JAAR_UITG>\n");
fputs($oudeDia, "<PAGINA>$paginaVar2</PAGINA>\n");
fputs($oudeDia, "<AFBEELDING>$afbeeldingVar2</AFBEELDING>\n");
fputs($oudeDia, "<OPMERKING>$opmerkingVar2</OPMERKING>\n");
fputs($oudeDia, "<TREFWOORDEN>\n");
fputs($oudeDia, "<TREFWOORD KODE=\"$twCodeVar2\" CATEGORIE=\"$twCatVar2\" WAARDE=\"$twWaardeVar2\"/>\n");
fputs($oudeDia, "</TREFWOORDEN>\n");
fputs($oudeDia, "</DIA>");

//stop in variabele:nieuweDia de nieuwe dia.
fputs($nieuweDia, "<DIA CHECK=\"$checkVar1\" UITGELEEND=\"$lenenVar1\" NAAM=\"$naamVar1\">\n");
fputs($nieuweDia, "<KANUM>$kanumVar1</KANUM>\n");
fputs($nieuweDia, "<KLEUR>$kleurVar1</KLEUR>\n");
fputs($nieuweDia, "<OMSC>$omscVar1</OMSC>\n");
fputs($nieuweDia, "<AFMETING>$afmetingVar1</AFMETING>\n");
fputs($nieuweDia, "<JAARTAL>$jaartalVar1</JAARTAL>\n");
fputs($nieuweDia, "<VERBLKODE>$verblijfCodeVar1</VERBLKODE>\n");
fputs($nieuweDia, "<VERBLIJF>$verblijfVar1</VERBLIJF>\n");
fputs($nieuweDia, "<DIANR>$dianrVar1</DIANR>\n");
fputs($nieuweDia, "<ARCHIEFNR>$archiefnrVar1</ARCHIEFNR>\n");
fputs($nieuweDia, "<AUTEUR>$auteurVar1</AUTEUR>\n");
fputs($nieuweDia, "<TITEL>$titelVar1</TITEL>\n");
fputs($nieuweDia, "<PL_UITG>$plaatsVanUitgaveVar1</PL_UITG>\n");
fputs($nieuweDia, "<JAAR_UITG>$jaarvanUitgaveVar1</JAAR_UITG>\n");
fputs($nieuweDia, "<PAGINA>$paginaVar1</PAGINA>\n");
fputs($nieuweDia, "<AFBEELDING>$afbeeldingVar1</AFBEELDING>\n");
fputs($nieuweDia, "<OPMERKING>$opmerkingVar1</OPMERKING>\n");
fputs($nieuweDia, "<TREFWOORDEN>\n");
fputs($nieuweDia, "<TREFWOORD KODE=\"$twCodeVar1\" CATEGORIE=\"$twCatVar1\" WAARDE=\"$twWaardeVar1\"/>\n");
fputs($nieuweDia, "</TREFWOORDEN>\n");
fputs($nieuweDia, "</DIA>");

//koppel d100.xml aan variabele:filename
$filename = "d100.xml";
//variabele:handle krijgt de waardes uit de filename
$handle = fopen($filename, "rb");
//variabele:contents krijgt de juiste string waardes uit de binaire $handle.
$contents = fread($handle, filesize($filename));
$nD100 = fopen("nD100.xml","w");

//variabele:nieuweDia krijgt de waarde van variabele:contents waarbij variabele:oudeDia vervangen is door variabele:nieuweDia.

$test = str_replace($oudeDia, $nieuweDia, $contents);
fputs($nD100, $test);

echo "$nD100";

//sluit alle open files en variabelen.
fclose($handle);
fclose($nieuweDia);
fclose($oudeDia);
fclose($nD100);

//hernoem oude d100 naar d100Oud.xml en nieuweD100.xml naar d100.xml
//rename("d100.xml", "d100Oud.xml");
//rename("nD100.xml", "d100.xml");

//ga naar overzicht.php
//header("Location: overzicht.php");
?>

[ Voor 70% gewijzigd door Shook op 17-03-2004 20:27 ]


Acties:
  • 0 Henk 'm!

  • Shook
  • Registratie: Februari 2001
  • Laatst online: 29-09-2024
Hij parst nu wel helemaal, alleen komt de data niet door in de nD100.xml.

Ook geeft de echo --> "Resource id #4" als resultaat.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Even een kleine opmerking:
echo "$nD100"; levert de file-handle op, niet de data die in die file staat.

Acties:
  • 0 Henk 'm!

  • Shook
  • Registratie: Februari 2001
  • Laatst online: 29-09-2024
ok, dat verklaard een rare foutmelding.

Als ik echo "test"; ertussen zet, dan krijg ik keurig helemaal de d100.xml te zien, alleen zonder de aanpassingen. De str_replace doet het dus niet (of te wel, ik voldoe niet aan alle eisen). Zou hij niet matchen op het eerste argument? Zou wel logisch moeten zijn.