Toon posts:

[PHP] Location van categorie genereren

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

Verwijderd

Topicstarter
Ik heb een downloads module/script voor een eigen php site gemaakt, en daarbij wilde ik dus een scriptje maken, waarin heel snel word gekeken waar je precies zit. Dat simpele scriptje werd me fataal, ben er al 2 dagen mee bezig...

De bedoeling is dat je dit krijgt:

Main > Aicraft > FS2004, als je in FS2004 zit. Ik heb verschillende dingen veranderd, en hem anders aangeroepen, maar het werkt niet echt.

Als je in de Main categorie zit, zie je Main >, maar in de rest van de categorien zie je niks... Ik heb zelf al gekeken naar aanhalingtekens enzo, en ook op google gezocht of er misschien al zo'n ander scriptje bestaat, maar niks gevonden. Voor mijn gevoel moet het werken, maarja, dat doet ie niet |:( :?

De database zit zo in mekaar:

cid = categorie ID
cname = Naam van de categorie
cplace = waar deze categorie zich bevind in een andere categorie, op ID nummer.

dit is de functie:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function location($cid, $location)
{
global $db, $isadmin, $islogin, $userinfo, $col_bg, $col_dark, $col_light;


$resultc = mysql_query("SELECT * FROM d_cat WHERE cid='$cid' ",$db) or die(mysql_error());
$row = mysql_fetch_array($resultc);

$location = "$row[cname] > $location";

If ($row[cid]<>0)
$location = location($row[cplace], $location);
else
return $location;


}


en zo roep ik hem aan:

PHP:
1
$locationc = location($currentc[cid],"");


Een werkende versie kun je vinden op:
http://www.flightsimplanet.net/?page=Downloads

Zoals je ziet, werkt ie alleen als je in Main zit :S

Weten jullie misschien iets wat ik over het hoofd heb gezien ? Of is er volgens jullie een veel betere en makkelijkere manier om dit te doen? Kan natuurlijk ook, ik programmeer nog niet zo heel lang met PHP... Ik sta voor alles open!

Alvast bedankt!

Padschild

[ Voor 6% gewijzigd door Verwijderd op 21-08-2004 19:03 ]


Verwijderd

Les 1: zet error_reporting op E_ALL.
If ($row[cid]<>0)
Heb je een constante die cid heet? Ik gellof het niet, dus dat zal wel $row[$cid] moeten zijn.
Wat belankrijker is: als $row[$cid] gelijk is aan 0 return je een waarde, en anders niet. En daar gaat het mis.

Dit is doodgewoon debug-werk hoor. Kijken welke variabelen welke waarden hebben, voor en na elke operatie. Dan zie je zo waar het mis gaat. Ook met een getraind oog is dat vaak nog nodig.

Verwijderd

Topicstarter
Ok, ik had dus nog niet gehoord van error reporting, maar hoe moet ik die dan precies aanzetten ?

bedankt iig, voor de wijze les _/-\o_

Ehm,

ik haal een row uit de database, en fetch hem dan in een array, dus de hele tabel komt in een array. Dan krijg je dus: $row[cid], $row[cname] en $row[cplace].

Als $row[cid] 0 is, zit ie op de main, en hoeft ie niet verder te gaan, dus dat gedeelte klopt toch ?

[ Voor 53% gewijzigd door Verwijderd op 21-08-2004 19:12 ]


  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 21-05 11:05
@Cheatah: als PHP ziet dat er geen constante is die zo heet, maakt hij er gewoon een string van, maar om het 'goed' te doen moet je dan niet zo:
PHP:
1
$row[$cid];

Maar zo:
PHP:
1
$row['cid'];

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Verwijderd

KoenieMan schreef op 21 augustus 2004 @ 19:14:
@Cheatah: als PHP ziet dat er geen constante is die zo heet, maakt hij er gewoon een string van, maar om het 'goed' te doen moet je dan niet zo:
Dat hoef je aan mij niet te vertellen hoor, en ik kijk liever naar de rest van de code en schat in wat de topicstarter er precies mee wilde doen. En ik begin dus niet over de 'automatische' verandering van een constante naar een string als deze niet bestaat omdat:

• Het verwarrend is en er niet toe doet in dit geval
• Ik zojuist heb gewezen op E_ALL waardoor er vanzelf een notice komt waaruit blijkt dat dat automatische omzetten naar een string niet zo handig is. Anders zou je die notice niet krijgen namelijk.

[ Voor 9% gewijzigd door Verwijderd op 21-08-2004 19:18 ]


  • gyarnoc
  • Registratie: December 2003
  • Laatst online: 20-05 16:01
Omdat padschild blijkbaar na zijn tweede post al geband is :? :? , ga ik even verder met dit topic. Ik maak FlightSim Planet samen met padschild.

We zijn samen al een tijd bezig geweest om het script te laten werken, de tip over E_ALL is handig, maar het script werkt nog steeds niet.

Zou iemand kunnen vertellen wat we fout doen, of misschien een suggestie geven over hoe het anders kan. Wij denken echter dat deze code MOET werken.

Dit is de code die we nu hebben:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function location($cid, $location)
{
global $db, $isadmin, $islogin, $userinfo, $col_bg, $col_dark, $col_light, $border0;

$resultc = mysql_query("SELECT * FROM d_cat WHERE cid='$cid' ",$db) or die(mysql_error());
$row = mysql_fetch_array($resultc);
$cname = $row[$cname];
$cplace = $row[$cplace];
$cid = $row[$cid];

$location = "$cname > $location";

If ($cid<>0)
$location = location($cplace, $location);
else
return $location;

}


BVD

Gyarnoc

[EDIT]

De code werkt nu, padschild heeft de else weg gehaald, en dat werkt :+
iig bedank voor de tip over E_ALL _/-\o_

Toch vraag ik me af waarom padschild geband is.

[ Voor 16% gewijzigd door gyarnoc op 21-08-2004 19:39 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06:53

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 vindt het allemaal veel te ingewikkeld worden op deze manier, met al die verschillende topicstarters. Padschild heeft als het goed is een e-mail gekregen met verdere uitleg. Verder uitleg over redenen van een ban lijkt me hier niet nodig.

[ Voor 15% gewijzigd door gorgi_19 op 21-08-2004 19:41 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.