[php] probleem met script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kurt15
  • Registratie: September 2002
  • Laatst online: 02-09 12:55
Ik heb een probleem met dit script. Het script moet ervoor zorgen dat elke dag een aantal nieuwe links worden gepost. Als ik de "}" op regel 9 laat zitten dan zegt ie dat dat unexpected is en als ik dat weghaal zegt ie dat T_UNSET unexpected is.

Weet iemand wat ik fout doe ik gebruik trouwens foxserv om het te testen.

En wilde vragen of jullie nog wat andere fouten eruit konden halen omdat dit het eerste script is dat ik ooit gemaakt heb ( als je het een script kan noemen 8)7 )
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
<?php
//creert $begintijd en $tijd1
//maakt waarde $tijd2, met de timeopdracht ofzoiets, dit is zeg maar huidige tijd

include= "links.dat"

$begintijd = "tijd.dat";
$tijd1 = "tijd.dat";
$tijd2=time();
}

//controleert of tijd.dat als iets bevat ( voor als ik het script de eerste keer draai
//en de tijd kloppend wil maken

if (unset($begintijd)){
fopen("tijd.dat", "w");
fwrite("tijd.dat", "$tijd2");
}

//berekent verschil tussen de tijd sinds laatste verandering in tijd en huidige tijd, 2400
//is zomaar een waarde
//verder worden alle links waardes zeg maar verplaatst naar een lager nummer
//als je snapt wat ik bedoel en links waarde word steeds naar links6 verplaatst

function difftime($tijd1, $tijd2)
{
$verschil = abs($tijd1 - $tijd2);
return $verschil;
}

if ($verschil > 2400 ) ;
fopen("tijd.dat", "w");
fwrite("tijd.dat", "$tijd2");
fopen($links, "w");
fopen($links0, "w");
fopen($links1, "w");
fopen($links2, "w");
fopen($links3, "w");
fopen($links4, "w");
fopen($links5, "w");
fopen($links6, "w");
fwrite($links, "$links0");
fwrite($links0, "$links1");
fwrite($links1, "$links2");
fwrite($links2, "$links3");
fwrite($links3, "$links4");
fwrite($links4, "$links5");
fwrite($links5, "$links6");
fwrite($links6, "$links");
fclose($links);
fclose($links0);
fclose($links1);
fclose($links2);
fclose($links3);
fclose($links4);
fclose($links5);
fclose($links6);
print '$links0';
}

//als het verschil niet groter dan 2400 is print ie de huidige links waarde

else {
print $links0;
}
?>

Verschrikkelijk script he..... :)

modbreak: vooral als je geen [PHP] tags eromheen zet :)

[ Voor 13% gewijzigd door curry684 op 28-06-2003 22:41 ]


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
include= "links.dat"

;)

Owja, en dit:
code:
1
2
fopen("tijd.dat", "w");
fwrite("tijd.dat", "$tijd2");

Moet zo (bijv.):
code:
1
2
$fp = fopen("tijd.dat", "w");
fwrite($fp, $tijd2);

Dus geen quotes om $tijd2, en de eerste parameter van fwrite() moet een verwijzing zijn naar een file socket. Dat is dus wat fopen() genereert.

En dit:
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
fopen($links, "w");
fopen($links0, "w");
fopen($links1, "w");
fopen($links2, "w");
fopen($links3, "w");
fopen($links4, "w");
fopen($links5, "w");
fopen($links6, "w");
fwrite($links, "$links0");
fwrite($links0, "$links1");
fwrite($links1, "$links2");
fwrite($links2, "$links3");
fwrite($links3, "$links4");
fwrite($links4, "$links5");
fwrite($links5, "$links6");
fwrite($links6, "$links");
fclose($links);
fclose($links0);
fclose($links1);
fclose($links2);
fclose($links3);
fclose($links4);
fclose($links5);
fclose($links6);


Is netter met een for-loop, maar ik heb geen tijd om het voor te doen. Misschien is iemand anders zo aardig..?

[ Voor 151% gewijzigd door Verwijderd op 28-06-2003 17:55 ]


Acties:
  • 0 Henk 'm!

  • jsiegmund
  • Registratie: Januari 2002
  • Laatst online: 11:31
Dan is het helemaal netter om van $linksi een array te maken: $links[i] met i = 0..6
en zo'n loopje word dan:
PHP:
1
2
3
4
5
6
7
8
<?php

for ($i = 0; $i <= 6; $i++) {
   fopen ($links[$i]);
   fwrite ($links[$i]);
   fclose ($links[$i]);
}
?>


even snel hoor, zou kunnen dat het niet helemaal klopt, maar het moet je iig in de goede richting helpen lijkt me

Acties:
  • 0 Henk 'm!

  • kurt15
  • Registratie: September 2002
  • Laatst online: 02-09 12:55
Heel erg bedankt allebei maar nu weet ik nog steeds niet hoe ik het probleem "Als ik de "}" op regel 9 laat zitten dan zegt ie dat dat unexpected is en als ik dat weghaal zegt ie dat T_UNSET unexpected is." kan oplossen.

Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

PHP:
1
2
3
4
5
6
include= "links.dat"

$begintijd = "tijd.dat";
$tijd1 = "tijd.dat";
$tijd2=time();
}


Vanwaar die } ?????

PHP:
1
2
3
4
5
6
7
8
if ($verschil > 2400 ) ;
fopen("tijd.dat", "w");
blabla;
fclose($links4);
fclose($links5);
fclose($links6);
print '$links0';
}


Waar is de opening { ????

(overingens: [ php ] zonder spaties en [ /php ] zonder spaties voor php code)

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

Verwijderd

kurt15 schreef op 28 juni 2003 @ 20:32:
Heel erg bedankt allebei maar nu weet ik nog steeds niet hoe ik het probleem "Als ik de "}" op regel 9 laat zitten dan zegt ie dat dat unexpected is en als ik dat weghaal zegt ie dat T_UNSET unexpected is." kan oplossen.
Nou ehh...
PHP:
1
include="links.dat"

Dat moet dus zijn:
PHP:
1
$include = "links.dat";

of
PHP:
1
include ("links.dat");

Afhankelijk van wat het moet doen natuurlijk...

Daar komt die hele parse error door. Dat merkt php pas een paar regels later. Die "}" hoort daar uiteraard niet.

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
fopen($links, "w"); 
fopen($links0, "w"); 
fopen($links1, "w"); 
fopen($links2, "w"); 
fopen($links3, "w"); 
fopen($links4, "w"); 
fopen($links5, "w"); 
fopen($links6, "w"); 
fwrite($links, "$links0"); 
fwrite($links0, "$links1"); 
fwrite($links1, "$links2"); 
fwrite($links2, "$links3"); 
fwrite($links3, "$links4"); 
fwrite($links4, "$links5"); 
fwrite($links5, "$links6"); 
fwrite($links6, "$links"); 
fclose($links); 
fclose($links0); 
fclose($links1); 
fclose($links2); 
fclose($links3); 
fclose($links4); 
fclose($links5); 
fclose($links6);

Dit is gewoon onnodig. Ik zou inderdaad gaan voor een array. Dat betekent dat je niet $links t/m $links6 gebruikt, maar $links[0] t/m $links[7]. Meer uitleg vind je op: http://www.php.net/array. Wat moet deze code trouwens doen? Leg dat eerst eens uit. Nu doet het in elk geval weinig nuttigs; volgens mij zet hij gewoon bestandsnamen in bestanden...? En dan laat hij ze steeds rouleren..? Ofzo..? :?

PHP:
1
print '$links0';

Dit kan dus ook niet. Hij print nu gewoon "$links0". Het moet dus zijn:
PHP:
1
print($links0);

Of voor mijn part:
PHP:
1
print("$links0");

Maar met énkele (ipv. dubbele) aanhalingstekens, zoals jij gebruikt, print hij gewoon de tekst "$links0", en dat is volgens mij niet je bedoeling.

Verder geef ik je het volgende advies: loop het script gewoon letter voor letter na. Het regelnummer dat bij een parse error staat, klopt vaak niet; de echte fout staat vaak een paar regels eerder. Voor andere fouten geldt: ga debuggen. Kijk met de PHP manual erbij wát alle functies doen (handig: typ gewoon http://www.php.net/<functienaam>), echo veel gegevens, en kijk waar het fout gaat...

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 29 June 2003 @ 12:46:
Nou ehh...
PHP:
1
include="links.dat"

Dat moet dus zijn:
PHP:
1
$include = "links.dat";

of
PHP:
1
include ("links.dat");

Afhankelijk van wat het moet doen natuurlijk...
Sinds wanneer moet er een = teken tussen? Je schrijft de inhoud van het bestand toch niet weg in het commando include :?
Ik zou die = dus ook maar weglaten.
haakjes mogen (), maar hoeven niet.
dus
PHP:
1
2
3
include "bestand.php";
// of
include ("bestand.php");

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
marty schreef op 29 June 2003 @ 12:52:
[...]

Sinds wanneer moet er een = teken tussen? Je schrijft de inhoud van het bestand toch niet weg in het commando include :?
Ik zou die = dus ook maar weglaten.
haakjes mogen (), maar hoeven niet.
dus
PHP:
1
2
3
include "bestand.php";
// of
include ("bestand.php");
Misschien wil hij wel de variabele $include definieeren als 'bestand.php' :)

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Wat probeer je hier precies te doen trouwens?
kurt15 schreef op 28 June 2003 @ 17:48:
if (unset($begintijd)){
fopen("tijd.dat", "w");
fwrite("tijd.dat", "$tijd2");
}
Afgezien van dat ik de logica niet snap - want $begintijd heeft altijd een waarde omdat je 'm daarboven expliciet zet - mag die constructie volgens mij ook niet.
from the manual:
In PHP 4 is unset() geen echte functie meer, het is nu een statement. Dat zijnde wordt er geen waarde teruggegeven, en als je probeert de waarde van unset() op te vangen krijg je een parse error.
je heb er als commentaar bij staan:
//controleert of tijd.dat als iets bevat ( voor als ik het script de eerste keer draai
//en de tijd kloppend wil maken
Als je wilt weten of tijd.dat data bevat dan moet je zo iets doen:
PHP:
1
2
3
4
if (file_exissts($tijd1) && filesize($tijd1) > 0)
{
  // bestand bestaat en bevat data
}


Verder, je heb hier een functie staan:
PHP:
1
2
3
4
5
function difftime($tijd1, $tijd2)
{
$verschil = abs($tijd1 - $tijd2);
return $verschil;
}

maar die roep je nergens aan. het verschil wordt dus ook nergens uitgerekend.

Dat vind ik voorlopig wel even genoeg :)
Loop je code nog eens goed door zou ik zeggen.

Het kan ook helpen om bovenaan in je script
error_reporting(E_ALL) te zetten.
Dat lijkt in het begin ff lastig, maar het werkt ideaal bij het debuggen.
suc6

Acties:
  • 0 Henk 'm!

Verwijderd

marty schreef op 29 June 2003 @ 12:52:
[...]

Sinds wanneer moet er een = teken tussen? Je schrijft de inhoud van het bestand toch niet weg in het commando include :?
Ik zou die = dus ook maar weglaten.
haakjes mogen (), maar hoeven niet.
dus
PHP:
1
2
3
include "bestand.php";
// of
include ("bestand.php");
Okee, dat snapte ik ook wel, maar ik weet niet wat hij wil. Misschien wil hij echt wel "links.dat" toewijzen aan $include... Verder: aan de topicstarter: waar staan die waarden van $links enzovoorts? Staan die dus in bestanden? Of gewoon in variabelen? In beide gevallen slaat je huidige code nergens op (nofi), maar de oplossing is dan in elk geval anders. In het eerste geval: gebruik rename(), in het tweede geval: gebruik in elk geval geen file functions...
Pagina: 1