[PHP/MySQL] Database Koppelen? *

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik probeer een database te koppelen maar het wil niet echt lukken
er komt geen fout melding hij toont alleen
Er zijn geen medewerkers gevonden.

het is de bedoeling dat hij alle werknemers laat zien die op het tijdstip $tijd niks hebben.
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?PHP 
echo ("<select size=1 name=medewerker>"); 
$medewerkers = mysql_query("SELECT m.Naam FROM medewerkers m, afspraken a WHERE a.Tijd != '$tijd' ORDER BY m.Naam"); 
if(!mysql_num_rows($medewerkers)) { echo("Er zijn geen medewerkers gevonden."); } 
else { 
while($E = mysql_fetch_object($medewerkers)) { 
echo ("<option>$E->m.Naam</option>"); 
    } 
echo ("</select>"); 
} 
?>

[ Voor 23% gewijzigd door Verwijderd op 25-01-2004 02:04 ]


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Is het niet: medewerkers AS m

Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
moet je niet eerst een connectie maken naar de db?

edit:
trouwens, je selecteert nu 2 tabellen waarvan je niet aangeeft wat ze met elkaar te maken hebben.

[ Voor 54% gewijzigd door Speedener op 25-01-2004 00:09 ]

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

Zet je query eens op je scherm; iets lezen over Joins kan trouwens ook geen kwaad.

[ Voor 72% gewijzigd door gorgi_19 op 25-01-2004 00:09 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zmn schreef op 25 januari 2004 @ 00:07:
Is het niet: medewerkers AS m
ja met as werkt het ook niet

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

zmn schreef op 25 januari 2004 @ 00:07:
Is het niet: medewerkers AS m
Afaik is dat alleen nodig als je aliassen geeft voor kolommen; hij geeft een alias voor een tabel. In dit laatste geval is het niet nodig. (Als ik me goed herinner)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dit zijn mijn sql tabellen

CREATE TABLE Afspraken (
KlantID varchar(255) NOT NULL default '',
Datum varchar(255) NOT NULL default '',
Tijd varchar(255) NOT NULL default '',
Adviseur varchar(255) NOT NULL default '',
Aanhef varchar(255) NOT NULL default '',
Naam varchar(255) NOT NULL default '',
Straat varchar(255) NOT NULL default '',
Plaats varchar(255) NOT NULL default '',
Postcode varchar(255) NOT NULL default '',
TelNr varchar(255) NOT NULL default '',
Leeftijd varchar(255) NOT NULL default '',
Beroep varchar(255) NOT NULL default '',
Opmerkingen text NOT NULL
)

---------------------------------------------------------------

CREATE TABLE Medewerkers (
ID varchar(255) NOT NULL default '',
Naam text NOT NULL
)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

:X

Misschien een idee om de goede datatypes te nemen? Datum lijkt me bijvoorbeeld van het type datetime. Sterker nog, imho kunnen datum en tijd in 1 veld, hoewel dit laatste voor discussie vatbaar is.
KlantID lijkt me een auto-increment / Integer. Adviseur lijkt me een relatie hebben met MedewerkersID, dus ook een integer, aangezien ID in medewerkers ook wel een auto-increment / Integer kan zijn.

Verder is het compleet onzinnig om overal een lengte van 255 karakters neer te zetten; ik ken iig geen postcode van 255 karakters lang.

Tip: Lees eens iets over normaliseren, indexen, primary keys en datatypes.

Maar wat is het nut om de tabelstructuur neer te zetten?

[ Voor 56% gewijzigd door gorgi_19 op 25-01-2004 00:24 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 23-08 22:47

dArtagnan

Een voor allen, allen voor een

gorgi_19 schreef op 25 januari 2004 @ 00:17:
[...]

Afaik is dat alleen nodig als je aliassen geeft voor kolommen; hij geeft een alias voor een tabel. In dit laatste geval is het niet nodig. (Als ik me goed herinner)
Je moet ook bij FROM AS gebruiken voor een alias,
http://www.w3schools.com/sql/sql_alias.asp



Schrap het WHERE gedeelte eens even en kijk dan of je wel resultaten krijgt. Je kunt ook eens proberen ergens een mysql_error te plaatsen.
Bovendien ben je niet consistent in het gebruik hoofdletters in de namen van de kolommen en de tabellen. In de query zijn de tabelnamen bijvoorbeeld zonder hoofdletter, terwijl dit in de database structuur wel zo is.
PHP:
1
2
3
4
5
6
7
8
9
// Dit stukje is wel met hoofdletters voor de tabel- en kolomnamen.

$medewerkers = mysql_query(
$query = "
  SELECT m.Naam 
  FROM Medewerkers AS m, Afspraken AS a 
  WHERE a.Tijd != '".$tijd."' ORDER BY m.Naam
";
$medewerkers = mysql_query($query) or die(mysql_error());

Je moet inderdaad je tabelstructuur eerst een onderhanden nemen. Het is bijvoorbeeld handig (zo niet noodzakelijk) om een primary key aan te maken. Neem anders eerst eens de SQL-tutorial op w3schools.com door.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Probeer eens een beetje te debuggen in plaats van aan het raampje aan te kloppen en te wachten op een rijdt u maar door naar het 2e raam hoor ;)

Print je query, probeer die uit in een mysql console of phpMyAdmin o.i.d., gebruik trigger_error en mysql_error om erachter te komen wat en waar het precies fout gaat.

Verder het vriendelijke verzoek de [code]...[/code] tags te gebruiken voor het leesbaar houden van je code op dit forum :)

Mocht je er dan nog niet uitkomen zie ik wel weer of je hier nog post :P

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is gelukt :D
nu zal ik nog ff kijken naar hoe ik alles heb gedefineerd
PHP:
1
$medewerkers = mysql_query($query = "SELECT m.Naam, a.Tijd FROM Medewerkers AS m, Afspraken AS a WHERE m.Naam = a.Adviseur AND a.Datum = '$datum' AND a.Tijd != '$tijd' ORDER BY m.Naam");

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 25 januari 2004 @ 00:19:
Tip: Lees eens iets over normaliseren, indexen, primary keys en datatypes.
dit lijkt me toch niet echt nodig? want ik hoef de id's niet te linken ofzo
want het id hoog ik gewoon op deze manier op
PHP:
1
$KlantID = 1; while(mysql_result(mysql_query("SELECT COUNT(KlantID) FROM medewerkers WHERE KlantID = '$KlantID'"),0)) { $KlantID++; }


wat betreft datatypes heb je helemaal gelijk ik zal het ff doorlezen en aanpassen
edit:
weet je ook waar ik hier een goeie uitleg over kan vinden
(het liefste in het nederlands)

[ Voor 24% gewijzigd door Verwijderd op 25-01-2004 02:06 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:31

gorgi_19

Kruimeltjes zijn weer op :9

Er bestaat geen relatie tussen een medewerker en de afspraken die een medewerker heeft? :?

En je hoeft nooit alle afspraken op een bepaalde dag te weten, inclusief een medewerker?

Voor jouw query die je net gaf.. Een klein vraagje...

Stel ik heb drie klanten. Ik voer ze in, volgens jouw systeem krijgen ze klantID 1,2 en 3.

Nu verwijder ik een Klant, zeg, klantnummer 2. Ik heb dan over de KlantID's 1 en 3. Vervolgens voeg ik nog een klant toe. Raad eens welk klantID jouw applicatie deze wil geven en hoe je applicatie dus finaal de mist in gaat? O-)

[ Voor 87% gewijzigd door gorgi_19 op 25-01-2004 10:10 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 25 januari 2004 @ 09:55:
Er bestaat geen relatie tussen een medewerker en de afspraken die een medewerker heeft? :?
ja klopt hij doet dus niet naja ik snap er nik meer van :(
Pagina: 1