Toon posts:

[PHP] Script werkt niet

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008

Verwijderd

Topicstarter
Dit is een kleine "script" die op mijn website staat,
$frame wordt verstuurd naar een tabel waar de gegeven pagina in geladen wordt
$id is voor ?id=(pagina)
$pid is voor post van het forum te tonen ( die script werkt)
Wat is er mis met deze script, want men hoofdpagina toont nu wit :(
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
explode(":", $id); 
explode(":", $pid);
if (empty($id))
    {$result = "pages/page.html";}
else
    {$result = "pages/" . $id . ".html";}
if (empty($pid)) and (empty($id))
{$frame = "pages/main.html";}
else
    {$frame = $result;}
?>

  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Er word nergens iets geoutput dus het is alleen maar logisch dat het scherm wit blijft :?

disjfa - disj·fa (meneer)
disjfa.nl


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Is dit het volledige script? Zo ja, dan is wat disjfa zegt inderdaad zo. Zo nee, wat is de volledige code van je pagina?

Hier kunnen we vrij weinig mee zo. Probeer anders eens wat regels uit te zetten (# er voor), werkt het dan wel? Print eens de variabele $id op je scherm, wat zie je? ...?

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Verwijderd

Topicstarter
jawel,
Hieronder komt nog html ( is er al laat het niet zien :p )
en de $frame wordt in die html file nog getoond met de regel
PHP:
1
<?php include($frame);  ?>

[ Voor 5% gewijzigd door Verwijderd op 26-10-2005 15:48 ]


  • Intrepidity
  • Registratie: December 2003
  • Laatst online: 24-06-2024
disjfa schreef op woensdag 26 oktober 2005 @ 15:43:
Er word nergens iets geoutput dus het is alleen maar logisch dat het scherm wit blijft :?
Ik neem aan dat de TS de variabele $frame als url gebruikt voor een frame op de pagina..

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 24-04 14:57
Er klopt echt helemaal niets van je 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
<?php 
// Overall; héle slechte opmaak en gebruik superglobals!

// explore is geen bool functie, de onderstaande lijn zal werkelijk niets aan waarde toevoegen voor je script.
explode(":", $id);

// idem hier.  
explode(":", $pid); 

// empty() moet je niet gebruiken om te kijken of een string leeg is, daar is deze functie niet voor bedoeld. Gebruik iets als  if( $id == "" ){
if (empty($id)){
   $result = "pages/page.html";
   } 
else{
   $result = "pages/" . $id . ".html";
   }

// Idem hier, gebruik geen "empty", en in if-clausules kan je het beste && gebruiken ipv. and.
if (empty($pid)) and (empty($id)){
   $frame = "pages/main.html";
   } 
else{ 
   $frame = $result;
   } 
?>


Aan je opmaak heb ik al enkele dingentjes veranderd, die was afschuwlijk :r Hieronder een "verbeterde" versie;

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
if ( !isset( $_GET['id'] ) || $_GET['id'] == "" ){
   $result = "pages/page.html";
   } 
else{
   $result = "pages/" . $_GET['id'] . ".html";
   }

if ( ( !isset( $_GET['pid'] ) || $_GET['pid'] == "" ) &&
     ( !isset( $_GET['id'] ) || $_GET['id'] == "" ) ){
   $frame = "pages/main.html";
   } 
else{
   $frame = $result;
   }

?>


[edit]
Je was de include dus niet vergeten, naar alle waarschijnlijkheid was het gebrek aan superglobals dus de boosdoener. Superglobals zijn zeer belangrijk, gezien nieuwere versies van PHP niet meer werken op jouw manier.

index.php?id=pagina&pid=subpagina

kan je niet meer ophalen door simpelweg $id en $pid, hier moet je de superglobal $_GET voor gebruiken, welke een array is. In dit geval moet je dus $_GET['id'] en $_GET['pid'] gebruiken voor het ophalen van je variablen.

[ Voor 37% gewijzigd door Peter op 26-10-2005 15:52 ]


Verwijderd

Topicstarter
OkkE schreef op woensdag 26 oktober 2005 @ 15:47:
Is dit het volledige script? Zo ja, dan is wat disjfa zegt inderdaad zo. Zo nee, wat is de volledige code van je pagina?

Hier kunnen we vrij weinig mee zo. Probeer anders eens wat regels uit te zetten (# er voor), werkt het dan wel? Print eens de variabele $id op je scherm, wat zie je? ...?
werkt allemaal niets,
OkkE schreef op woensdag 26 oktober 2005 @ 15:47:
Probeer anders eens wat regels uit te zetten (# er voor), werkt het dan wel?
Dan zou normaal niets werken, dit moet zo zijn ;)

die had ik ervoor en dat werkte wel

PHP:
1
2
3
4
5
6
7
8
<?php
 
explode(":", $pid);
if (empty($pid)) 
{$frame = "pages/main.html";}
else
{$frame = "pages/page.html";}
?>

Moesten nieuwe regels bij omdat er meer mogelijke pagina's moesten komen ;)

[ Voor 10% gewijzigd door Verwijderd op 26-10-2005 15:58 ]


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

.Peter schreef op woensdag 26 oktober 2005 @ 15:49:
Aan je opmaak heb ik al enkele dingentjes veranderd, die was afschuwlijk :r Hieronder een "verbeterde" versie;
Vermaeck! Je meent toch niet dat je dit wel nette code vind hè?

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Ik heb ook niet eens echt het idee wat voor waarde $pid zou moeten krijgen, laat bijv. ook eens de vollegedige URL zien waarmee je het script aanroept, en de volledige pagina (incl. html en php).

Het is iedergeval wel duidelijk dat er hier en daar wat aan de code verbeterd kan worden.. ;)

-- edit --

Waar is $id voor? Waar is $pid voor? Waarom explode'en op dubbelepunt?

-- edit2 --

PS: .Peter, wat is er mis met empty($var) om te kijken of iets leeg is? Waarom is if($var=="") beter?

[ Voor 29% gewijzigd door OkkE op 26-10-2005 16:11 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Verwijderd

Topicstarter
www.lan2own.net
Heb de code van .Peter erop gezet, en nu werkt het, behalve de post script werkt nu niet , in plaats van 1 post te laten tonen(?pid=10 ) toont hij ze allemaal :p , en daarvoor werkte dat perfect

[ Voor 30% gewijzigd door Verwijderd op 26-10-2005 16:14 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 14:00
Het is niet de bedoeling dat wij hier jouw code gaan debuggen; en dat laat je wel uitschijnen....
Het is de bedoeling dat je als programmeur zelf kunt debuggen.

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Even een inhoudelijke toevoeging van mijn kant. :P
OkkE schreef op woensdag 26 oktober 2005 @ 16:07:
PS: .Peter, wat is er mis met empty($var) om te kijken of iets leeg is? Waarom is if($var=="") beter?
Is het niet, AFAIK.
Beschrijving
boolean empty ( mixed var)

Opmerking: empty() is een language construct.

Deze functie is het tegenovergestelde van (boolean) var, behalve dat er geen waarschuwing wordt gegenereerd als de variabele niet bestaat. Zie converteren naar boolean voor meer informatie.
When converting to boolean, the following values are considered FALSE:
  • the boolean FALSE itself
  • the integer 0 (zero)
  • the float 0.0 (zero)
  • the empty string, and the string "0"
  • an array with zero elements
  • an object with zero member variables
  • the special type NULL (including unset variables)
Elke waarde die evalueert naar false, levert bij gebruik met de language construct empty ook false op.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.