[php] Hobbyproject LVS, wat problemen. Suggesties welkom!

Pagina: 1
Acties:

Onderwerpen


  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
Goedenmiddag,

Allereerst een kleine situatieomschrijving.
spoiler: situatieomschrijving
Ik werk bij een huiswerkbegeleidingsinstituut, als bijbaan. Mijn baas heeft het werk jarenlang in zijn eentje gedaan, en dat heeft er in de jaren in geresulteerd dat alle informatie bij hem in .doc bestanden staat op de laptop. Als ik dan vervolgens de voortgang van een leerling wil controleren, dan moet ik meestal even langs hem (hij zit 15 meter verderop aan een bureau) om even te kijken. In de tussentijd heb ik het meest essentiële gemigreerd naar google docs. Dit werkt, maar niet lekker genoeg mijn inziens. Daarom heb ik besloten om een leerling volg systeem (lvs) in elkaar te scripten.

Ik ben een ontzettende n00b op het gebied van php en mysql. Ik ben het mezelf aan het leren, dus schrik niet van heel aparte oplossingen in jullie ogen. Het systeem hoeft niet erg uitgebreid te zijn.
De vereisten die ik in de loop van de komende maand(en) erin wil gaan zetten zijn:
- Het bijhouden en aanpassen van roostertijden, telefoonnummers, emailadressen, notities
- Een waarschuwingsmogelijkheid. Bijvoorbeeld een herinnering dat je de volgende dag het Engels van A. overhoort.
- Cijferweergave + berekening gemiddeldes.(dit ga ik als laatste doen. de google docs excel sheet werkt vooralsnog prima).

Ik ben druk aan het schrijven geweest. Natuurlijk loop ik continue tegen problemen aan. In negen van de tien gevallen biedt Google soelaas, maar soms heb ik meer moeite met het oplossen ervan. Als ik er tegen aanloop, wil ik ze graag hier posten.

Het idee is dat ik na het inloggen in index.php in browser.php terechtkom. Hierin wordt een globaal overzicht van de leerlingen weergegeven met beknopte informatie over hen. Als de roosters opgevraagd worden, geef ik het idnummer van de leerling mee (dus rooster.php?id=xx).
Hier zit probleem nummer een. Ik wil een inner join uitvoeren op de tabellen id en roosters, omdat ik dingen als namen niet dubbel wil opslaan. Deze query wordt uitgevoerd en ik probeer hem in een html tabel te parsen. Helaas werkt dit niet goed. Ik heb het nu met $row ['id.id'];, $row['roosters.ma']; etcetera gepoogd, maar dit werkte niet.

De code is ook nog niet veilig. Hier ben ik van op de hoogte. Dit is iets waar ik later mij in wil vastbijten. Dan nog een vraag. Is het handig om hier de site te posten, zodat jullie er een blik op kunnen werpen? Of kan ik beter het anoniem houden i.v.m. misbruik?

Als ik informatie vergeet te geven, vertel het, en dan post ik het z.s.m.. Ik houd dit topic nauwlettend in de gaten :) .
Browser.php
PHP:
1
*snip*

rooster.php
PHP:
1
*snip*

[ Voor 78% gewijzigd door RobIII op 19-08-2010 15:10 ]

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code post, post dan enkel relevante code. Dik 350 regels code dumpen is not-done. En wat is het nu van die spoiler tag :?
fonsoy schreef op donderdag 19 augustus 2010 @ 15:08:
Dan nog een vraag. Is het handig om hier de site te posten, zodat jullie er een blik op kunnen werpen? Of kan ik beter het anoniem houden i.v.m. misbruik?
Kan iemand even...?
Een link posten kan, maar dan alleen als het relevant is om bepaalde dingen te moeten kunnen constateren; in dit geval is dat niet aan de orde dus hoef je geen link te plaatsen (nog) ;)

[ Voor 67% gewijzigd door RobIII op 19-08-2010 15:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Wat is nou precies de vraag? Of: wat wil je nou van ons weten :P?

  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
RobIII schreef op donderdag 19 augustus 2010 @ 15:10:
Als je code post, post dan enkel relevante code. Dik 350 regels code dumpen is not-done. En wat is het nu van die spoiler tag :?
Het verbergen van irrelevante informatie. Ik hoop op deze manier wat meer ontopic te blijven in plaats van lang teuten over koetjes en kalfjes.
En wat betreft de code, ik ga nu even wat relevantere delen eruitzoeken, en deze opnieuw posten :).
RobIII schreef op donderdag 19 augustus 2010 @ 15:10:
Kan iemand even...?
Een link posten kan, maar dan alleen als het relevant is om bepaalde dingen te moeten kunnen constateren; in dit geval is dat niet aan de orde dus hoef je geen link te plaatsen (nog) ;)
Het is ook puur voor constatering bedoeld. Ik wil dit project in mijn eentje opknappen. Het is ook voor de hobby ;).

[ Voor 34% gewijzigd door fonsoy op 19-08-2010 15:16 . Reden: toevoeging ]

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
Ik vraag iets aan de database met de volgende code;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ($id){
$query = "SELECT 'roosters.id',
        'roosters.ma',
    'roosters.di',
        'roosters.wo',
    'roosters.do',
        'roosters.vr',
        'id.id',
        'id.naam'
        FROM roosters
        INNER JOIN id
        ON 'roosters.id' = 'id.id'
        ORDER BY 'id.naam'";

$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
}

Vervolgens probeer ik hiermee wat variabelen te vullen;
PHP:
1
2
3
4
5
6
7
$id = $row['id.id'];
$naam = $row['id.naam'];
$ma = $row['roosters.ma'];
$di = $row['roosters.di'];
$wo = $row['roosters.wo'];
$do = $row['roosters.do'];
$vr = $row['roosters.vr'];

Helaas krijg ik hier errors. Ik heb uitvoerig op google gezocht, maar ik kwam er echt niet uit :/ .


EDIT: Ik ga even mijn databasestructuur opsnorren en zo compact mogelijk hier posten. Even geduld aub :)

[ Voor 6% gewijzigd door fonsoy op 19-08-2010 15:17 ]

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wat voor errors? En wat doet de "id"-tabel? Niet wat ik denk, hoop ik?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • posttoast
  • Registratie: April 2000
  • Laatst online: 23:34
Ik ben ook wel een beetje benieuwd naar je databasestructuur. Een tabel met de naam "id" klinkt zoals CodeCaster al suggereert niet zo best...

omniscale.nl


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Sorry, mijn glazen bol is al jaren geleden stuk gevallen. Dus misschien kan je vertellen welke errors je precies krijgt? Misschien handig dat je toch nog even PRG Beleid gaat lezen voordat je antwoord gaat geven ;)

[ Voor 32% gewijzigd door Creepy op 19-08-2010 15:17 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
fonsoy schreef op donderdag 19 augustus 2010 @ 15:14:
Helaas krijg ik hier errors. Ik heb uitvoerig op google gezocht, maar ik kwam er echt niet uit :/ .
Ik heb toch echt meteen een oplossing te pakken :?
/sarcasm

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
Afbeeldingslocatie: http://i36.tinypic.com/2z7hhjq.png
Afbeeldingslocatie: http://i37.tinypic.com/2hexaw8.png
Ik wil dus de id's die beide in de rooster tabel en in de "id" tabel staan gebruiken om delen van deze tabellen aan elkaar te maken.
Anders gezegd: ik wil met de id uit de rooster tabel de bijbehorende naam uit de "id" tabel halen.

Om er dus nog kort op terug te komen, als ik de variabele $row['id.naam'] probeer op te roepen, dan krijg ik niets terug, waarbij opgemerkt moet worden dat de inner join in $result staat.

EDIT: Ik wil ook nog een hoop aan de databasestructuur doen. Op den duur wil ik in de "id" tabel alleen maar de link leggen tussen het id-nummer en de naam van de leerling.

[ Voor 14% gewijzigd door fonsoy op 19-08-2010 15:30 ]

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Geef de "id" tabel eens een fatsoenlijke naam zeg. "leerlingen" ofzo, dat is een stuk duidelijker als andere mensen je code moeten lezen.

Mijn SQL is een beetje roestig (yey NHibernate ;)) maar misschien:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT 'roosters.id',
        'roosters.ma',
       'roosters.di',
        'roosters.wo',
       'roosters.do',
        'roosters.vr',
        'id.id',
        'id.naam'
        FROM roosters, id -- id tabel erbij?
        INNER JOIN id
        ON 'roosters.id' = 'id.id'
        ORDER BY 'id.naam'

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Ik neem aan dat je dan zoiets bedoelt?
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
    a.id,
    ma,
    di,
    wo,
    do,
    vr
    b.id,
    naam
FROM
    roosters a
INNER JOIN
    id b /* Gelieve een andere tabelnaam kiezen! */
ON
    a.id = b.id
ORDER BY
    b.naam


Ik raad je aan om even naar: var_dump() te kijken om te debuggen.

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Wat is nou precies de vraag? Of: wat wil je nou van ons weten :P?

  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
Manuel schreef op donderdag 19 augustus 2010 @ 15:36:
Ik neem aan dat je dan zoiets bedoelt?
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
    a.id,
    ma,
    di,
    wo,
    do,
    vr
    b.id,
    naam
FROM
    roosters a
INNER JOIN
    id b /* Gelieve een andere tabelnaam kiezen! */
ON
    a.id = b.id
ORDER BY
    b.naam


Ik raad je aan om even naar: var_dump() te kijken om te debuggen.
Ik ga jullie tips ter harte nemen, en de id tabel hernoemen. Goede tip van de var_dump(). Ik kende die nog niet. Toevoeging: Dit is precies wat ik bedoel.
HMS schreef op donderdag 19 augustus 2010 @ 15:37:
Wat is nou precies de vraag? Of: wat wil je nou van ons weten :P?
Ik vroeg mij af waarom mijn oplossing $resultaat = $row['id.id']; geen variabele terugkoppelt terwijl er absoluut een in zou moeten zitten. Ik doe daarom denk ik iets fout met het benoemen van de row.

[ Voor 27% gewijzigd door fonsoy op 19-08-2010 15:42 ]

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Kijk of je query ook los werkt in phpmyadmin. Zoja, dump even je row (var_dump($row);) en kijk wat erin zit.

Ik denk dat je de tablenames niet moet vermelden (in ieder geval zo doe ik het), dus niet $resultaat = $row['id.id']; maar wel $resultaat = $row['id'];

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Ik wil je trouwens aanraden om dit even door te lezen: Programming FAQ - Algemeen

  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
Tharulerz schreef op donderdag 19 augustus 2010 @ 15:46:
Kijk of je query ook los werkt in phpmyadmin. Zoja, dump even je row (var_dump($row);) en kijk wat erin zit.

Ik denk dat je de tablenames niet moet vermelden (in ieder geval zo doe ik het), dus niet $resultaat = $row['id.id']; maar wel $resultaat = $row['id'];
Ik heb dit net even gecheckt. De syntax is correct, hoewel ik geen resultaten terugkrijg. Helaas kan ik dit niet met var_dump() checken. Dit omdat mijn gehele php bestand niet weergegeven wordt als ik de pagina opvraag. Ik heb overigens niet echt het idee dat hier wat in zou staan. Dit omdat ik nul rijen terug kreeg gekoppeld.
Overigens zal dit dan denk ik mijn "probleem" met het opvragen van de $row's oplossen, simpelweg omdat hier niets in stond.
Afbeelding ter verklaring
Afbeeldingslocatie: http://i37.tinypic.com/343lpbr.png

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

fonsoy schreef op donderdag 19 augustus 2010 @ 16:07:
[...]

Ik heb dit net even gecheckt. De syntax is correct, hoewel ik geen resultaten terugkrijg. Helaas kan ik dit niet met var_dump() checken. Dit omdat mijn gehele php bestand niet weergegeven wordt als ik de pagina opvraag.
die().
Ik heb overigens niet echt het idee dat hier wat in zou staan. Dit omdat ik nul rijen terug kreeg gekoppeld.
Overigens zal dit dan denk ik mijn "probleem" met het opvragen van de $row's oplossen, simpelweg omdat hier niets in stond.
Afbeelding ter verklaring
[afbeelding]
Dan bestaan er geen records waarvan in beide tabellen de id-velden overeen komen, of is er iets anders aan de hand met je query. Die moet je dan gaan debuggen.

Je weet trouwens dat het meegeven van een grootte aan een int niet zo veel nut heeft?

[ Voor 7% gewijzigd door CodeCaster op 19-08-2010 16:13 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Je joint nu op een stringvergelijking die altijd false is.

[ Voor 44% gewijzigd door GlowMouse op 19-08-2010 17:43 ]


  • quodlibet
  • Registratie: Maart 2002
  • Niet online
Zou het helpen om alle single quotes in je query te verwijderen of te vervangen door "`" ?

  • dragontje124
  • Registratie: Mei 2009
  • Laatst online: 07-09 17:50
quodlibet schreef op donderdag 19 augustus 2010 @ 17:46:
Zou het helpen om alle single quotes in je query te verwijderen of te vervangen door "`" ?
wat hij zegt ^
dit dus:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT roosters.id, 
        roosters.ma, 
       roosters.di, 
        roosters.wo, 
       roosters.do, 
        roosters.vr, 
        id.id, 
        id.naam 
        FROM roosters 
        INNER JOIN id 
        ON roosters.id = id.id
        ORDER BY id.naam

kolom namen moeten niet tussen quotes!

[ Voor 3% gewijzigd door dragontje124 op 19-08-2010 19:06 ]


  • fonsoy
  • Registratie: Juli 2009
  • Laatst online: 02:57
quodlibet schreef op donderdag 19 augustus 2010 @ 17:46:
Zou het helpen om alle single quotes in je query te verwijderen of te vervangen door "`" ?
dragontje124 schreef op donderdag 19 augustus 2010 @ 19:03:
[...]

wat hij zegt ^
dit dus:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT roosters.id, 
        roosters.ma, 
       roosters.di, 
        roosters.wo, 
       roosters.do, 
        roosters.vr, 
        id.id, 
        id.naam 
        FROM roosters 
        INNER JOIN id 
        ON roosters.id = id.id
        ORDER BY id.naam

kolom namen moeten niet tussen quotes!
Heren, het werkte fantastisch! De vervelendste errors zijn vaak de kleinste dingetjes. Hulde! _/-\o_
Ik zal in dit topic posten als ik tegen een nieuw probleem aanloop. Ik kan weer een groot eind verder.

Lenovo W520 - i7 2720QM - 8GB DDR3 1333Mhz - 1080p - Nvidia 1000M - 9 cell accu


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Omdat je het op een zilveren presenteerblaadje aangereikt kreeg ja :D
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.
fonsoy schreef op donderdag 19 augustus 2010 @ 19:18:
Ik zal in dit topic posten als ik tegen een nieuw probleem aanloop.
To be honest hoop ik dat je volgende keer een beetje meer moeite doet; iets wat we hier wel verwachten ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
fonsoy schreef op donderdag 19 augustus 2010 @ 19:18:
Heren, het werkte fantastisch! De vervelendste errors zijn vaak de kleinste dingetjes.
Ja, zoals een query die je letterlijk krijgt en zou werken aanpassen met quotes zodat 'ie niet meer werkt?

https://niels.nu

Pagina: 1