Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[php + mysql] querie als link in tabel

Pagina: 1
Acties:
  • 686 views

Verwijderd

Topicstarter
Ik ben een beetje aan het kloten met php en mysql Maar iets lukt me niet.

Ik ben een database op aan het zetten waarbij als je een querie op een pagina hebt uitgewerkt. In die uitwerking ook een link staat per record, naar een volgende querie waarbij je meer informatie krijgt over dat wat je hebt aangeklikt.

Opzet is zoals de huidige versie van de site(*spam* klik op Datenbank), maar die werkt nog met losse html pagina;s, wat ik dus nu wil gaan omzetten in php met een achterliggende database, waardoor ik veel minder paginas heb en veel makkelijker kan updaten en toevoegen.

De database heb ik in mysql gemaakt via het programma MyDB Studio, moet m alleen nog verder invullen.

Ik kan nergens op internet vinden hoe het moet, maar wel dat het bestaat.

Begrijpt iemand wat ik wil bereiken en weet iemand hoe ik dit kan doen, of waar ik precies op moet zoeken om erachter te komen?

Overigens, ik kan met queries omgaan, maar ik vraag me af waar ik de link in de tabellen zou moeten zetten. Want de naam is de link, maar de naam staat als gewone naam in de tabel. om maar en voorbeeld te noemen.

Database is zoals je ziet zeer simpel van opzet. Queries zijn daarom ook vrij simpel. Database is nu wel wat uitgebreider.

dit is GEEN scriptrequest! Ik kom er alleen zelf niet meer uit Dit is het enige wat mij niet lukt om werkend te krijgen.

[ Voor 0% gewijzigd door NMe op 05-05-2011 02:13 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Je zoekt dus gewoon een CMS. Waarom zou je dat bestaande wiel voor de 100ste keer gaan uitvinden? Niet onaardig bedoeld (in tegendeel, zelfs), maar als ik je terminologie zo lees, is het kennisniveau op dit gebied niet al te groot. Vandaar dat ik een bestaand CMS adviseer.

Als je het echt zelf wilt doen, zou ik gewoon bij de basis beginnen. Dat is een goed boek en/of goede tutorials. Check wel even of die wel up-to-date zijn!

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

Topicstarter
het gaat NIET om een scriptrequest, dat heb ik niet voor niets expliciet vermeld!

Ik kan wel een extra tabel aanmaken met de links erin. Die via een id verwijzen naar de naam. Maar ik kom er niet uit hoe ik dan die link als naam neerzet. Terwijl de naam gewoon hetzelfde blijft.

Simpele html variant zou zijn dit:
<a href="http://example/example.html">Example</a>

In mijn geval moet die href dus een querie zijn. En die Example is een deel van een record die uit een andere querie is weergegeven.

Ik kom daar niet wijs uit. hoe ik die link dus in die record kan verwerken. Heb al verschillende sites en foras erop nagelezen, maar ik kom er gewoon niet uit.
Hoe ik een querie in een link kan maken weet ik wel, daar gaat het niet om.
Of mijn idee erachter klopt niet (dat het dus niet met een aparte tabel moet) of ik zoek de verkeerde richting uit.

nogmaals, dit is GEEN SCRIPTREQUEST!

[ Voor 7% gewijzigd door Verwijderd op 05-05-2011 01:14 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op donderdag 05 mei 2011 @ 01:11:
het gaat NIET om een scriptrequest, dat heb ik niet voor niets expliciet vermeld!

[...]
Dat beweer ik nergens :?

Anyway, je kunt een query niet met een URL vergelijken. http://example/example.html kun je niet 1:1 omzetten naar SQL. Je plaatst geen volledige HTML-pagina in de database.

[ Voor 28% gewijzigd door Room42 op 05-05-2011 01:16 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

offtopic:
pssst, het is query. Je schrijft het nu al 8 keer fout.

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 20:27
code:
1
id | url | name


Ik neem aan dat je zoiets wilt maken? Dan zou je de gegevens uit de database op kunnen halen en eventueel met een for(each) loop kunnen itereren door alle items. Waarnaast je dan in je scripttaal de gegevens (HTML code in dit geval) extra toevoegt.

EDIT: Overigens is het mij compleet onduidelijk waarom je hier dan ook een id wilt gebruiken. Wil je twee tabellen aan elkaar 'knopen', dan moet je kijken naar de relatie en of dan een id nuttig is.

Echter denk ik dat je beter zelf eerst wat meer moet gaan lezen over databases en database-normalisatie.

[ Voor 35% gewijzigd door alex3305 op 05-05-2011 01:17 ]


Verwijderd

Topicstarter
nee maar het gaat dus ook niet om een CMS. Zodra ik weet hoe die link erin te krijgen is. Kan ik de complete database invullen en testpaginas gaan genereren. En vervolgens de hele database op de website werkend krijgen.

De website zelf is compleet klaar in php. Op het toevoegen van de queries na dan.

  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op donderdag 05 mei 2011 @ 01:16:
[...]


nee maar het gaat dus ook niet om een CMS. Zodra ik weet hoe die link erin te krijgen is. Kan ik de complete database invullen en testpaginas gaan genereren. En vervolgens de hele database op de website werkend krijgen.

De website zelf is compleet klaar in php. Op het toevoegen van de queries na dan.
Welke link waarin. Waar heb je het in godsnaam over :D

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 20:27
Verwijderd schreef op donderdag 05 mei 2011 @ 01:16:
[...]


nee maar het gaat dus ook niet om een CMS. Zodra ik weet hoe die link erin te krijgen is. Kan ik de complete database invullen en testpaginas gaan genereren. En vervolgens de hele database op de website werkend krijgen.

De website zelf is compleet klaar in php. Op het toevoegen van de queries na dan.
Even een nieuwe post, maar ik denk dat je een abstractielaag bedoeld. Een laag welke kan communiceren tussen jouw PHP code en de (My)SQL database. Hiervoor kun je verschillende in PHP ingebouwde componenten gebruiken waaronder mysql, mysqli en PDO. Waarbij de laatste mijn voorkeur heeft in verband met prepared statements, waardoor je dus eventuele content filtering over kunt laten aan PHP.

Verwijderd

Topicstarter
Room42 schreef op donderdag 05 mei 2011 @ 01:17:
[...]

Welke link waarin. Waar heb je het in godsnaam over :D
Kijk nou eens even naar het voorbeeld wat ik genoemd heb. De originele opzet is precies zoals ik het nu in verbeterde versie (met php en mysql) wil doen.

lijstje gegenereerd door een querie en van de eerste kolom heeft elke record een link naar een detailpagina.
Het genereren van die link naar de detaipagina, kom ik niet uit.

Het gaat enkel om simpele Select queries. Er wordt niets via de website aangevult of veranderd, dat doe ik extern. Je kunt ook niet zoeken, de lijsten worden gegenereerd dmv een querie welke in een pagina wordt weergegeven. Zoals origineel voorbeeld dat in html doet.

[ Voor 20% gewijzigd door Verwijderd op 05-05-2011 01:22 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op donderdag 05 mei 2011 @ 01:19:
[...]


Kijk nou eens even naar het voorbeeld wat ik genoemd heb. De originele opzet is precies zoals ik het nu in verbeterde versie (met php en mysql) wil doen.

lijstje gegenereerd door een querie en van de eerste kolom heeft elke record een link naar een detailpagina.
Het genereren van die link naar de detaipagina, kom ik niet uit.
Oh lol wat jij wilt is client-side een SQL-query doen. Dat kan natuurlijk niet. Daar heb je, zoals alex3305 uitlegt een server-side pagina voor nodig. De linkjes worden dan dus bijvoorbeeld:

<a href="http://example/load.php?page=example">Example</a>

En die load.php voert dan de query (;)) uit met als resultaat de gevraagde pagina.

Maar kijkt wat dat betreft eens naar de opbouw van een CMS. Want, nog steeds, zoals ik het nu lees begrijp ik uit jouw verhaal dat je elke pagina volledig in de database opgeslagen hebt.

[edit] Nu snap ik het denk ik nog beter: Je hebt alle iframes in de database opgeslagen, zoals home.htm, data.htm, report.htm, etc., etc. Maakt het niet veel fraaier, maar ik snap het.

[ Voor 19% gewijzigd door Room42 op 05-05-2011 01:28 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

Topicstarter
Room42 schreef op donderdag 05 mei 2011 @ 01:23:
[...]

Oh lol wat jij wilt is client-side een SQL-query doen. Dat kan natuurlijk niet. Daar heb je, zoals alex3305 uitlegt een server-side pagina voor nodig. De linkjes worden dan dus bijvoorbeeld:

<a href="http://example/load.php?page=example">Example</a>

En die load.php voert dan de query (;)) uit met als resultaat de gevraagde pagina.

Maar kijkt wat dat betreft eens naar de opbouw van een CMS. Want, nog steeds, zoals ik het nu lees begrijp ik uit jouw verhaal dat je elke pagina volledig in de database opgeslagen hebt.
nee pagina zal niet in de database opgeslagen worden. Enkel de pagina met de keuzelijst is een vaste pagina, en die is er gewoon. Als je vervolgens op een link klikt naar de detailpagina, wordt deze in een "nieuwe" lege pagina geladen, waar gewoon altijd de details in komen te staan, welke naam je ook aanklikt.
In weze zijn er dus 2 typen weergeefpagina's die wellicht ook tot 1 pagina gereduceerd kan worden.
Maar deze pagina staat niet in de database zelf. Dat is gewoon een standaard html/php pagina waarin de uitwerkingen van de queries wordt weergegeven.

De query vraagt dus geen pagina op, maar een aantal kolommen uit verschillende tabellen. Deze worden weergegeven op de pagina.

het origineel werkt ZONDER mysql database, ik ben daarom juist bezig met een verbeterde versie.

originele werkt gewoon simpel: data is de hoofdpagina. vanuit daar kun je naar de volgende pagina en die heeft een lijst met wat gegevens en links die weer naar volgende paginas leiden. Hier komt geen mysql, querie of php bij kijken. Dit is gewoon ouderwetse html. De opzet hiervan wil ik verwerken in een mysql database die wordt weergegeven via queries in 1 a 2 paginas. ipv dat er voor elke zaak een nieuwe pagina moet worden gemaakt, zoals nu het geval is.

ik wil overigens geen gebruik maken van een CMS, want ik wil weten wat er gebeurt. Heb in het verleden er regelmatig mee gewerkt, maar zodra er problemen ontstaan weet je niet meer waar je moet zoeken. Dat wil ik dus niet hebben.

[ Voor 21% gewijzigd door Verwijderd op 05-05-2011 01:33 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Hoe de oude werkt is me duidelijk en hoe de nieuwe zou moeten werken ook. Maar wat jij nou precies voor ogen hebt is mij niet duidelijk.

Kun je misschien anders wat relevante code en één database record posten?

edit:
Ja, wat alex3305 dus zegt :)

[ Voor 8% gewijzigd door Room42 op 05-05-2011 01:35 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 20:27
Indirect ben je gewoon een CMS aan het beschrijven. Ik denk dat je jezelf op deze materie - en welke ik al eerder aandroeg - moet gaan inlezen om te begrijpen wat je nu precies wilt doen. Dit zijn namelijk vrij basale vragen met betrekking tot database-ontwerp en software-architectuur (en eventuele databasekoppeling).

Verwijderd

Topicstarter
Room42 schreef op donderdag 05 mei 2011 @ 01:34:
Hoe de oude werkt is me duidelijk en hoe de nieuwe zou moeten werken ook. Maar wat jij nou precies voor ogen hebt is mij niet duidelijk.

Kun je misschien anders wat relevante code en één database record posten?

edit:
Ja, wat alex3305 dus zegt :)
Ik kom er dus niet uit hoe ik de link moet genereren die van de keuzelijst naar de detailpagina leid.

  • bullitkatcher
  • Registratie: Oktober 2010
  • Laatst online: 00:19
Dan moet je in de database tabel een extra rij zetten met de link.
Dan krijg je dus:
code:
1
2
3
4
5
//type is om te kijken of hij bij shake, breakdance, polyp, of anderen hoort
type | name | schausteller | hersteller | detail

en wordt dan gevuld met:
shake | Crazy shake | van der Wiel (NL) | Nothingham U.K. Shaker | /shakes/wiel.html

Dat zet je dan in een array met wat php:
PHP:
1
2
3
4
5
6
7
8
//ervan uitgaande dat je al een connectie hebt met je databse
//Ik heb even je shake database als voorbeeld gebruikt.
$get = mysql_query('SELECT *  FROM geschaefte WHERE type=shake');
echo '<table><tr><th>Name</th><th>Schausteller</th><th>Hersteller & Type</th></tr>';
while($get_row = mysql_fetch_assoc($get)){
            echo '<tr><td><a href="'.$get_row['detail'].'">'.$get_row['name'].'</a></td><td>'.$get_row['schausteller'].'</td><tr> ';
        }
echo '</table>';


just my 2 cents, ben namelijk nog maar net begonnen met php

[ Voor 8% gewijzigd door bullitkatcher op 05-05-2011 01:55 ]


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 17:08

TheDane

1.618

Verwijderd schreef op donderdag 05 mei 2011 @ 01:38:
[...]


Ik kom er dus niet uit hoe ik de link moet genereren die van de keuzelijst naar de detailpagina leid.
link naar detailpagina.php?id=$ID

en dan in detailpagina.php maak je een query
code:
1
$sql = "select * from table where id = ".intval($_GET['ID']);

En de resultaten van die query doe je op een of andere manier weergeven.
En 't genereren van die links in je keuzelijst is iets als:
code:
1
2
3
4
$sql = "select id,naam from table ";
while (loop door results) {
echo "<a href=detailpagina.php?id=$result['id']>$result['naam']</a>";
}


Maar nogmaals, een CMS is wat je zoekt, wat je wilt, en waarvan je helemaal niet hoeft te denken 'als er wat fout gaat...'

Verwijderd

Topicstarter
Met die laatste 2 posts kan ik denk ik al wat verder komen, ik ga daar eens mee aan de slag.

Nogmaals een CMS, is voorzover ik t begrijp iets voor luilakken die niks willen afweten van de achterliggende code. (Content Management System) dit is zoiets als microsoft publisher. En dat zoek ik dus echt niet. Ik wil dit zelf doen en zelf in elkaar draaien, maar ik heb daar dus enige hulp bij nodig.

  • Room42
  • Registratie: September 2001
  • Niet online
Ja, dat is duidelijk. Maar mij is niet duidelijk waar die link dus heen zou moeten. Maar dat is niet zo gek want je vertelt maar niet over je structuur.

De meest eenvoudige manier (maar echt super fout als beheersbaarheid je doel is!) is dat je gewoon databasetabel maakt met twee kolommen: `naam` en `content`.

Het record voor home(.htm) wordt dan:

`naam`:
code:
1
home


`content`:
HTML:
1
2
3
<h1>Wilkommen auf disney.com die Seite fúr Polyp, BreakDance und Shake Fans!</h1>

<p> De rest van de tekst. </p>


In de index.php plak je alles van index.htm, behalve alles van <iframe [...]> t/m </iframe>. Op dat stuk zet je een stuk PHP die de gewenste sub-pagina database ophaalt aan de hand van de GET-variabele $page.

De linkjes in de HTML worden dan: http://disney.com/index.php?page=home of http://disney.com/index.php?page=data

Maar goed, dan heb je dus alleen het laden van de pagina's aangepast. Voor het beheer zit je nog steeds met losse pagina's.

[ Voor 4% gewijzigd door NMe op 05-05-2011 02:15 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op donderdag 05 mei 2011 @ 01:55:
[...]

Nogmaals een CMS, is voorzover ik t begrijp iets voor luilakken die niks willen afweten van de achterliggende code. (Content Management System) dit is zoiets als microsoft publisher. En dat zoek ik dus echt niet. Ik wil dit zelf doen en zelf in elkaar draaien, maar ik heb daar dus enige hulp bij nodig.
Dat heb je echt heulemaal fout! Je schrijft het zelf, het is een Content Management System. Het CMS is er voor de gebruiker. Die kan op een comfortabele wijze de content van de site aanpassen.

Je kunt ook prima zélf een CMS bouwen (en dat ben je ook aan het doen).

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

Topicstarter
Room42 schreef op donderdag 05 mei 2011 @ 01:57:
Ja, dat is duidelijk. Maar mij is niet duidelijk waar die link dus heen zou moeten. Maar dat is niet zo gek want je vertelt maar niet over je structuur.

De meest eenvoudige manier (maar echt super fout als beheersbaarheid je doel is!) is dat je gewoon databasetabel maakt met twee kolommen: `naam` en `content`.

Het record voor home(.htm) wordt dan:

`naam`:
code:
1
home


`content`:
HTML:
1
2
3
<h1>Wilkommen auf disney.com die Seite fúr Polyp, BreakDance und Shake Fans!</h1>

<p> De rest van de tekst. </p>


In de index.php plak je alles van index.htm, behalve alles van <iframe [...]> t/m </iframe>. Op dat stuk zet je een stuk PHP die de gewenste sub-pagina database ophaalt aan de hand van de GET-variabele $page.

De linkjes in de HTML worden dan: http://disney.com/index.php?page=home of http://disney.com/index.php?page=data

Maar goed, dan heb je dus alleen het laden van de pagina's aangepast. Voor het beheer zit je nog steeds met losse pagina's.
nou voor het laden van de hoofdpaginas komt geen database in voor. het gaat om de database zelf. Die overigens gewoon nederlands zal worden.

De link moet naar de detailpagina van die specifieke record. En die detailpagina is uiteraard weer een uitwerking van een querie, plus een link terug naar de pagina met alle records onder elkaar.

als je nou naar het origineel kijkt, dat werkt precies zo. Alleen zal ik straks via een uitklapmenu de verschillende lijsten kunnen oproepen. Eigenlijk moet je beginnen op Datenbank, vervolgens 1 van de 4 aanklikken (straks is dat dus een uitklapmenu en heb je daar al die keuze) Dan wordt een querie uitgewerkt welke bij elk record de eerste kolom (NAAM) als een link weergeeft.
Die link stuurt je naar een pagina: Deitals, waarbij de detais van dat record worden weergegeven.

[ Voor 15% gewijzigd door NMe op 05-05-2011 02:15 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Verwijderd schreef op donderdag 05 mei 2011 @ 02:00:
[...]


nou voor het laden van de hoofdpaginas komt geen database in voor. het gaat om de database zelf. Die overigens gewoon nederlands zal worden.

De link moet naar de detailpagina van die specifieke record. En die detailpagina is uiteraard weer een uitwerking van een querie, plus een link terug naar de pagina met alle records onder elkaar.
Dat is precies wat ik schrijf (hoewel ik die tweede alinea weer echt niet kan volgen*) ;)

Wat ik nu geschetst heb is één statische pagina (index.php) met een stukje dynamiek erin (de details, waar jij het over hebt). Die dynamiek staat dus op de plek van de <iframe>.

* ik heb nog steeds problemen met jouw terminologie:
Een (database)record heeft geen detailpagina.
Een query heeft geen uitwerking.

[ Voor 12% gewijzigd door Room42 op 05-05-2011 02:04 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

Topicstarter
Room42 schreef op donderdag 05 mei 2011 @ 02:02:
[...]

Dat is precies wat ik schrijf ;)

Wat ik nu geschetst heb is één statische pagina (index.php) met een stukje dynamiek erin (de details, waar jij het over hebt). Die dynamiek staat dus op de plek van de <iframe>.
iframes gaan er net zo goed uit.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Sorry, maar hoe je hoofd- en detailpagina's maakt en hoe je de koppelingen daartussen regelt is webdevelopment les 1. Je bent gewoon een CMS aan het maken en hoe je dat het makkelijkst op kan zetten is écht wel te vinden op het internet. Dat jij blijkbaar niks vindt zal eerder komen door je aannames ("CMS is voor luilakken!!1" en "zoals Microsoft Publisher") en spelfouten ("querie") dan iets anders. Ga asjeblieft eerst eens uitzoeken wat je aan het doen bent voordat je daadwerkelijk iets gaat doen.

Dit topic heeft noch voor jou, noch voor ons enige zin zo. Doe eerst maar eens wat research, mag je dan gerichte vragen komen stellen.
Verwijderd schreef op donderdag 05 mei 2011 @ 02:04:
[...]

iframes gaan er net zo goed uit.
Daarom zegt hij ook "op de plaats van iframes".

[ Voor 13% gewijzigd door NMe op 05-05-2011 02:06 ]

'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.