aanroepen van variabelen
Arjan:
Ik heb er nog even over nagedacht, ik denk echter dat hetgeen wat ik, Jan, en vele andere willen voor jou net iets te hoog gegrepen is.
(...)
Opzich is het niet zo heel erg complex voor iemand met een rugzak ervaring, maar voor jou... is het complex.
(...)
Normaal zou ik zeggen, pak een boek, de enige limieten die je steld zijn de limieten die je denkt dat er is en je komt er wel.
(...)
Het database model wil ik best aan meehelpen, en dan krijg je van mij een stapeltje uml diagrammen, sequence diagrammen, use-cases, database model etc maar dan... dan kan jij er nogsteeds niks mee.
(...)
Opzich is het niet zo heel erg complex voor iemand met een rugzak ervaring, maar voor jou... is het complex.
(...)
Normaal zou ik zeggen, pak een boek, de enige limieten die je steld zijn de limieten die je denkt dat er is en je komt er wel.
(...)
Het database model wil ik best aan meehelpen, en dan krijg je van mij een stapeltje uml diagrammen, sequence diagrammen, use-cases, database model etc maar dan... dan kan jij er nogsteeds niks mee.
Hallo Arjan;
Dank voor je eerlijke reactie! Ik had zelf al wel een beetje verwacht dat dit te moeilijk zou zijn... Anderzijds, een half jaar geleden had ik gedacht dat het gebruik van <div>'s en
Code (php)
1
2
3
4
5
2
3
4
5
<?php include> in plaats van frames veel te moeilijk voor mij zouden zijn.... M.a.w. - zoals je zelf ook al zegt - eigenlijk is je limiet daar waar je 't zelf neerlegt. Ik begrijp dat het opzetten van een complexe database zoals die voor de discography nu een beetje te complex voor mij is, maar toch zou ik graag willen gaan proberen met sql (ik heb toch zeker niet voor niets phpmyadmin genstalleerd!). Ik heb op deze site al een beetje rondgeneusd op dat onderwerp, maar bij alle artikelen is wel enige basiskennis vereist. Wie heeft een link naar een site waar het voor een absolute leek uitgelegd wordt hoe te beginnen met SQL. Wat betreft de tijd ik besteed nu gemiddeld zon 5 uur per dag aan mijn site (incl. zelfstudie over bijvoorbeeld PHP) en ik ben over het algemeen een snelle leerling (alhoewel je daar best aan mag twijfelen, gezien mijn onderontwikkelde kennis van webdesign ;-)). Ik wil dus toch e.e.a. gaan proberen. Ik zou nooit van iemand verwacht hebben het voor mij te gaan schrijven; of en toe wat motivatie of een duwtje in de juiste richting is erg fijn !! Verder blijf ik toch openstaan voor mensen die andere ideen hebben.
Ik ben benieuwd naar eventuele reacties !!
Groet, Bart (webmaster www.chrisrea.nl)
Ik ben benieuwd naar eventuele reacties !!
Groet, Bart (webmaster www.chrisrea.nl)
Ik ben begonnen met 'databases en access 2000'. access is wat textpad voor de officeapplicaties is... het doet wat het moet doen, en het ziet er leuk uit met al die kleurtjes maar het is geen 'echte' database.
Access is wel 'relationeel' (let op de quotes) en je 'ziet' wat je doet (eg, ipv een foraign key in te tikken, trek je een echte lijn tussen 2 tabellen) dus je 'ziet' veel beter de achtergeliggende gedachte van een database. Tevens bevat het voor 80% gewoon dezelfde SQL code zoals we die bij mysql/postgre gebruiken.
Dus het is zeker een goede manier om te beginnen, er word duidelijk uitgelegd wat een database inhoud, hoe het in elkaar zit en hoe je moet normaliseren etc. Aanrader om simpel mee te beginnen.
Vervolgens kwam ik terecht bij oracle forms developer, kan je overslaan... is heel nuttig allemaal maar niet van jou van toepassing.
Daarna kwam 'database systems, a practical approach to design, implementation and management'. Zwaardere shit, diehard sqlen, van relationeel naar object-relationeel-dbms en daarna object-orientated dbms.
Kijk anders in de lijst met boeken of er iets bijzit wat je aanspreek: http://www.phphulp.nl/php/boeken/.
Ik persoonlijk vind een boek makkelijker dan het bij elkaar sprokkelen van honderden websites.
Arjan:
Ik ben begonnen met 'databases en access 2000'. access is wat textpad voor de officeapplicaties is...
(...)
Ik persoonlijk vind een boek makkelijker dan het bij elkaar sprokkelen van honderden websites.
(...)
Ik persoonlijk vind een boek makkelijker dan het bij elkaar sprokkelen van honderden websites.
Hallo;
Bedankt voor je lijst !!
Hebben we het hier nou over Microsoft Acces uit het office pakket ?!? (ik heb versie 2003)
Wat betreft boeken kan ik gedeeltelijk met je mee gaan. In bijna alle gevallen prefereer ik boeken boven websites (ben een echte "boekenwurm") behalve als het om computers gaat... Bij een (goede!) website, kun je meteen een voorbeeld zien van wat er bedoelt wordt en kun je (door bijvoorbeeld copy-paste) heel makkelijk zelf iets proberen. Zo heb ik de meeste dingen "geleerd". Als ik een site tegenkom die ik mooi vind, dan kopieer ik de broncode en ga daarmee "spelen" en precies kijken wat wat is... (natuurlijk niet andermans code ongewijzigd op mijn eigen site gooien!). Veel fouten maken, en dan ineens iets vinden dat wel werkt, maar dan weer niet weten waarom het werkt ... en dat dan weer uitzoeken. Hele nachten kan ik me er mee bezig houden... En dat brengt me bij mijn tweede tegenargument tegen boeken versus websites. Ik been vaak heel gedreven om het zo snel mogelijk werkend te krijgen. Je hebt in je vorige post al aangegeven dat het geen kwestie van dagen of weken zal zijn, maar toch wil ik graag z.s.m. beginnen met lezen, oefenen, proberen, fouten maken, etc... Ik zal waarschijnlijk komende nacht tot morgenochtend vroeg internet afstruinen op zoek naar leuke tutorials om uit te proberen. M.a.w. "boeken" heb ik hier nu niet voorhanden (weinig geld om echt mooie te kopen, geen bibliotheek lidmaatschap) en internet wel !!!
Groet, Bart
(PS; sorry als ik maar weer eens eigenwijs over kom. Dit betekend zeker niet dat ik je adviezen in de wind sla !)
Daarvoor deed ik wel select / querys in php/mysql, maar dankzij access kreeg ik echt door wat de mogelijkheden waren (relationeel gezien dan, joins etc maar ook het goed opbouwen van een database model).
Boeken van tegenwoordig hebben allemaal een cdrom met voorbeelden erop staan, in geval van access is dubbelklikken voldoende. Tevens staat de website van de schrijvers van het boek ook nog eens vol met voorbeelden enzo.
Ik ben de afgelopen dagen (en nachten!) druk bezig geweest met alles wat ik over databases kon vinden te lezen en te proberen. Het meeste zonder succes, maar ik heb nu een pagina gemaakt die gegevens haalt uit twee verschillende tabellen en die werkt !! (het is absoluut basic wat de pagina doet, maar het is wel al bijna wat ik graag wilde!). Ik heb twee tabellen als volgt opgebouwd:
discography_items:
id : uniek nummer
release_id : uniek nummer voor dit
discography item
title : titel v.h. item
image : een toegevoegd plaatje. Dit is
zonder extentie, omdat ik hiermee
zowel een htm file oproep (dit is de
popup, met een titel, etc) als de
daadwerkelijke jpg.
Release_date
Release_year
p_by / c_by : (P) en (C) rights
discography_tracks:
(in deze tabel worden alle losse tracks opgeslagen die m.b.v. de unieke release_id aan één bepaalde release gekoppeld worden)
id : uniek nummer
release_id : uniek nummer voor dit
discography item waar deze
track bij hoort
track_no : het nummer van de track op deze
release (dus bijvoorbeeld “track
4 van deze CD”)
track : de titel van de track
lyrics : hierin een link naar het bestand
waarin de lyrics staan (zonder
locatie en extentie,die voeg ik er
later aan toe)
length_min / lenght_sec: duur van de track
In deze tabellen heb ik op proef twee singeltjes opgeslagen (met de release_id’s 0001 en 0002), en die open ik dan met de volgende pagina:
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
26
27
28
29
30
31
32
33
34
35
36
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
<?php
include("/var/www/c/chrisrea.nl/HTML/main/header_discography.php");
$page_id="0001";
$host = "***";
$dbusername = "chrisrea_nl";
$dbpassword = "****";
$database = "chrisrea_nl";
$standaard_tabel = "discography_items";
$server = mysql_connect("$host","$dbusername","$dbpassword") or
die ("Can't connect to MySQL Server on $host!");
mysql_select_db("$database", $server) or
die ("Can't find the database $database!");
$query = "SELECT * FROM discography_items WHERE release_id=$page_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)){
echo"<table border=\"0\"><tr><td width=\"180\" valign=\"top\"><p>";
echo"<a href=\"javascript:void(0);\" onclick=\"window.open('http://www.chrisrea.nl/discography/images/".$record->image.".htm', '', 'height=450, width=450, resizable=no,scrollbars=no');\"><img id=\"disco_picture\" src=\"http://www.chrisrea.nl/discography/images/".$record->image.".jpg\"></a></p>";
echo"<p class=\"text_5_sys\">Click on the picture for an enlargement</p><br>";
echo"<p style=\"line-height: 200%; margin-left:10px\" class=\"text_4_left\">Release date: ".$record->release_date."<br><br></p></td><td width=* valign=\"top\">";
echo"<p style=\"margin-left:10px\" class=\"text_2_left\"><b>".$record->title."</b></p><p style=\"margin-left:10px; margin-top:-18px\" class=\"text_3_left\"><b>".$record->release_year."</b></p><p style=\"margin-left:10px\" class=\"text_5_sys_left\">Click on a track for the Lyrics</p><p style=\"line-height: 200%; margin-left:10px\" class=\"text_3_left\">";
}
$query = "SELECT * FROM discography_tracks WHERE release_id=$page_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)){
echo"<font class=\"text_3\">".$record->track_no.". <a class=\"text_3\" href=\"javascript:void(0);\" onclick=\"window.open('http://www.chrisrea.nl/discography/lyrics/Lyrics-".$record->lyrics.".htm', '', 'height=500, width=350, resizable=no,scrollbars=yes');\">".$record->track."</a> [".$record->length_min.":".$record->length_sec."]<br>";
}
include("/var/www/c/chrisrea.nl/HTML/main/footer.php");
?>
include("/var/www/c/chrisrea.nl/HTML/main/header_discography.php");
$page_id="0001";
$host = "***";
$dbusername = "chrisrea_nl";
$dbpassword = "****";
$database = "chrisrea_nl";
$standaard_tabel = "discography_items";
$server = mysql_connect("$host","$dbusername","$dbpassword") or
die ("Can't connect to MySQL Server on $host!");
mysql_select_db("$database", $server) or
die ("Can't find the database $database!");
$query = "SELECT * FROM discography_items WHERE release_id=$page_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)){
echo"<table border=\"0\"><tr><td width=\"180\" valign=\"top\"><p>";
echo"<a href=\"javascript:void(0);\" onclick=\"window.open('http://www.chrisrea.nl/discography/images/".$record->image.".htm', '', 'height=450, width=450, resizable=no,scrollbars=no');\"><img id=\"disco_picture\" src=\"http://www.chrisrea.nl/discography/images/".$record->image.".jpg\"></a></p>";
echo"<p class=\"text_5_sys\">Click on the picture for an enlargement</p><br>";
echo"<p style=\"line-height: 200%; margin-left:10px\" class=\"text_4_left\">Release date: ".$record->release_date."<br><br></p></td><td width=* valign=\"top\">";
echo"<p style=\"margin-left:10px\" class=\"text_2_left\"><b>".$record->title."</b></p><p style=\"margin-left:10px; margin-top:-18px\" class=\"text_3_left\"><b>".$record->release_year."</b></p><p style=\"margin-left:10px\" class=\"text_5_sys_left\">Click on a track for the Lyrics</p><p style=\"line-height: 200%; margin-left:10px\" class=\"text_3_left\">";
}
$query = "SELECT * FROM discography_tracks WHERE release_id=$page_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)){
echo"<font class=\"text_3\">".$record->track_no.". <a class=\"text_3\" href=\"javascript:void(0);\" onclick=\"window.open('http://www.chrisrea.nl/discography/lyrics/Lyrics-".$record->lyrics.".htm', '', 'height=500, width=350, resizable=no,scrollbars=yes');\">".$record->track."</a> [".$record->length_min.":".$record->length_sec."]<br>";
}
include("/var/www/c/chrisrea.nl/HTML/main/footer.php");
?>
Een werkend voorbeeld van deze pagina is te vinden op: http://www.chrisrea.nl/test/index.php
In deze pagina geef ik handmatig in of page_id 0001 of 0002 is. Nou heb ik een aantal vragen hierover.
- Allereerst; ben ik op de goede weg ??
- Ik wil graag het aanroepen van de page_id via de url (dus dat die word index.php?page_id=0001 en dat de pagina dan weet welke release hij uit de tabel moet halen. Ik heb al geprobeerd:
$query = "select * from `discography_items` where `release_id` = '$_GET[release_id];";
Maar dat werkt niet… Wie heeft een betere oplossing ?
- Ik heb nu de informatie uit de tweede tabel gehaald, door op het juiste moment een tweede tabel te openen. Kan ik ook de twee tabellen tegelijk openen, en zo ja, hoe ?
Ik hoop dat mensen mijn verder willen helpen, alvast hartelijk dank daarvoor … Met vriendelijke groet, Bart (webmaster www.chrisrea.nl)
SELECT klanten.voornaam, klanten.achternaam, producten.product FROM klanten, producten WHERE klanten.klanten_id = producten.klant_id;
Op deze manier kan het dus ook:
SELECT klanten.voornaam, klanten.achternaam, producten.product FROM klanten INNER JOIN producten ON klanten.klanten_id = producten.klant_id;
Je zou even op internet wat moeten lezen over joins, want er zijn veel verschillende joins.
Verder voor het overzicht zou ik al die opmaak (classes en styles) er uithalen, dus gewoon een testpagina maken met plain tekst! Wel zo duidelijk.
Het automatisch ophalen van de gegevens uit de url zou je zo kunnen doen:
$page_id = mysql_real_escape_string($_GET['page_id'];
Vervolgens word de sql code iets als:
"SELECT * FROM tabel WHERE pageid = '".$page_id."'";
Dat is de netste oplossing. Oehja, en geen backtics gebruiken.
Verder nog een stukje theorie. Echo's moet je anders aanpakken. En dat kan je maar beter gelijk vanaf het begin doen ;)..
Je kan ook enkele quotes gebruiken, dan kan je in de echo gewoon de dubbele quotes gebruiken zonder de \ er telkens voor te hoeven hebben! Het variabelen uit de quotes halen doe je gelukkig al wel redelijk.
Dank voor je reactie.
De eerste mogelijkheid die je bied voor het samenvoegen werkt niet (dat zou dus worden:
$query="SELECT * FROM discography_items, discography_tracks WHERE release_id = '" . $_GET['release_id'] . "'";
Deze werkt dus niet. Je tweede optie wordt dan bij mij:
$query = "SELECT * FROM discography_items INNER JOIN discography_tracks ON release_id = '" . $_GET['release_id'] . "'";
en ook deze werkt niet. Ik heb nog niet gezocht op internet op "joins" dus dat ga ik zeker vanmiddag doen !
Wat betreft de classes en styles; waarom moet ik die beter eruit halen ? Hoe moet ik dan de pagina opmaken ? Ik heb op dit moment een "style switcher" op de site, waarbij bezoekers dus zelf hun eigen css style kunnen kiezen, dus ik denk zelf dat ik wel "moet" die classes gebruiken. Maar natuurlijk hoor ik t graag als ik er naast zit !!
Je zegt "Oehja, en geen backtics gebruiken" wat bedoel je daarmee, en waar gebruik ik die ?
Verder zeg je "Echo's moet je anders aanpakken" wat bedoel je daarmee ?? Ik heb overigens geprobeerd de dubbele quotes aan het begin en eind van elke regel te vervangen door enkele, maar dar geeft 'ie een foutmelding bij. Ik denk dat dat komt, omdat ik bij het aanmaken van de popup met bijvoorbeeld de afbeelding ook enkele quotes gebruik (of moet ik daar dan een "\" bijzetten?), zie bijvoorbeeld: ">image.".htm', '', 'height=45...etc."
Ik hoop dat je (en anderen natuurlijk) nog verder wilt helpen, ik heb nog vele vragen maar probeer het nu stukje voor stukje aan te pakken. Een eerste vraag die ik wel wil stellen is de volgende. Het is nu zo dat de pagina aan de hand van de url content weergeeft (dus bijv. index.php?id=01). Maar als ik nu gewoon "index.php" (dus zonder "?id=01" erachter) intik, krijg ik een lege pagina (wel de header en footer). Deze wil ik dan vullen met een "welkom tekst". Dan moet ik dus ingeven dat als er geen id geselecteerd is dat dan de volgende tekst wordt weergegeven "...". IS dat mogelijk, en zo ja, hoe ? Ook wil ik graag het zo maken dat als er een niet bestaande ID wordt ingegeven (bijvoorbeeld id=abc of id=90909) dat er dan een custom made foutpagina wordt weergegeven. Is dat mogelijk, en zo ja, hoe ? ALvast bedankt, met vriendelijke groet, Bart
Bart:
Je zegt "Oehja, en geen backtics gebruiken" wat bedoel je daarmee, en waar gebruik ik die ?
Backticks zijn deze: `
Zit vlak boven de tab toets op je keyboard. Ze worden alleen in MySQL gebruikt en zijn een soort dialect. Beter om ze gewoon niet te gebruiken.
groet, Bart
Jouw voorbeeld werkt perfect !! heel erg bedankt !!
Ik ben de afgelopen weken flink aan de slag gegaan met "sql" ;-)) Ik heb nu de discography even terzijde gelegd (ik wil eerst wat ervaring opdoen met andere kleinere 'project-jes' voordat ik me definitief vastleg in een definitief format voor de discography).
Nu ben ik bezig met een pagina waarop bezoekers zelf (kranten)artikelen kunnen toevoegen. Aangezien de volgende vraag voor mijn gevoel binnen het zelfde subject past, plaats ik hem maar in dezelfde topic.
Als zo'n article wordt weergegeven zijn er een aantal gegevens die wel of niet aanwezig kunnen zijn (wel of geen auteur, wel of geen afbeelding erbij, etc.). Nu wil ik op een eenvoudige manier het volgende doen.
Als er in de kolom "image" 'iets' is ingevuld dat moet het volgende worden weergegeven:
echo"<img id=\"picture_border\" src=\"http://www.chrisrea.nl/interviews/".$record['image']."\" alt=\"".$record['title']."\">";
als het betreffende veld in die kolom leeg is, moet er gewoon helemaal niets worden weergegeven, dus als volgt (op mijn eigen manier weergegeven ;-):
if 'image' is not '0' then echo 'blablabla' else echo ''
Wie kan mij hiermee helpen ?!? Alvast bedankt, met vriendelijke groet, Bart
stel dat het imageveld niet wordt ingevuld, dan betekent dat dat er een "lege string" wordt verzonden. Dat kun je bijvoorbeeld zo testen:
if ($_POST['image'] == '') {
// echo "niets ingevuld"
}
of zo:
if (empty ($_POST['image'])) {
// echo "niets ingevuld"
}
Gewijzigd op 24/01/2006 10:49:00 door Jan Koehoorn
Bedankt voor je reactie!
kan ik dat gewoon binnen de bestaande uitvoer zetten ?
Ik heb nu dus:
-------------------------------------------
if(isset($_GET['article_id']))
{
$article_id = mysql_real_escape_string($_GET['article_id']);
$query = "SELECT * FROM main_articles WHERE article_id = ".$article_id."";
$resultaat = mysql_query($query) or die(mysql_error());
$aantal = mysql_num_rows($resultaat);
if($aantal == 1)
{
while($record = mysql_fetch_array($resultaat))
{
echo"<p class=\"text_2_left\">".$record['title']."<br>";
echo"<p class=\"text_3_left\"><b>".$record['subtitle']."</b><br><br>";
echo"<font class=\"text_4_left\">Source: ".$record['source']."</font><br>";
echo"<font class=\"text_4_left\">Date: ".$record['date']."</font><br>";
echo"<font class=\"text_4_left\">Author: ".$record['author']."</font><br>";
echo"<img id=\"picture_border\" src=\"http://www.chrisrea.nl/interviews/".$record['image']."\" alt=\"".$record['title']."\">";
echo"<p class=\"text_3_left\">".$record['content']."<br><br>";
echo"<p class=\"text_4_left\" style=\"margin-left:75px\">".$record['copyright']."</b><br><br>";
}
}else{echo"<br><br><br><br><p class=\"text_3\">Article is unavailable<br>";}
}else{echo"<br><br><br><br><p class=\"text_3\">You must include a page-id<br>";}
------------------------------------------------
en ik wil bij meerdere velden (o.a. "author" , "image", etc.) de mogelijkheid hebben ze helemaal weg te laten. Kan ik dan i.p.v.
"echo"<p>Author: ".$record['author']."</p><br>"; "
gewoon zetten:
if ($_POST['author'] == '') {
// echo"<p>Author: ".$record['author']."</p><br>";
}
???
Het is dus de bedoeling dat 'ie dan dus die hele echo... regel weglaat (ook het voorvoegsel "Author: ..." dus!) en dan ook geen witregel daar zet. Alles moet dus gewoon wegblijven als er geen entry is in die cel ...
Met vriendelijke groet, Bart
Jan:
Hallo Bart,
stel dat het imageveld niet wordt ingevuld, dan betekent dat dat er een "lege string" wordt verzonden. Dat kun je bijvoorbeeld zo testen:
if ($_POST['image'] == '') {
// echo "niets ingevuld"
}
of zo:
if (empty ($_POST['image'])) {
// echo "niets ingevuld"
}
stel dat het imageveld niet wordt ingevuld, dan betekent dat dat er een "lege string" wordt verzonden. Dat kun je bijvoorbeeld zo testen:
if ($_POST['image'] == '') {
// echo "niets ingevuld"
}
of zo:
if (empty ($_POST['image'])) {
// echo "niets ingevuld"
}
Ik heb beide mogelijkheden geprobeerd, en ook al bijvoorbeeld "if($image == ){" maar alles zonder resultaat... :-(( Ik hoop dat ik duidelijk ben geweest in wat ik graag zou willen;
als een veld is ingevuld in de tabel moet worden weergegeven:
-------------------------------------------------
echo"<img src=\"../interviews/".$record['image']."\">";
of bijboorbeeld:
echo"<p>De auteur is:".$record['author']."<br>";
------------------------------------------------
en als het betreffende veld in de tabel leeg is moet er gewoon het volgende worden neergezet:
echo"";
Ik hoop dat dit (nog) duidelijker is en dat iemand mij verder kan en wil helpen, alvast bedankt !
groet, Bart
Ik heb het volgende toegevoegd, en dat werkt:
/*** Wel of geen afbeelding ***/
if ($record['image']=="") {}else{
echo"<br><img id=\"picture_border\" src=\"http://www.chrisrea.nl/interviews/".$record['image']."\" alt=\"".$record['title']."\"><br>";}
/******************************/
Iedereen bedankt voor het meedenken !!
Groet, Bart