Toon posts:

met mysql select naar meerdere html pagina's

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste,

Onderstaande script werkt.
Op voorwaarde dat er maar één antwoord uit de db komt.

Hoe moet het script zijn als er meerdere antwoorden komen die allemaal naar een andere html pagina moeten verwijzen ? En ik weet ook niet hoeveel antwoorden er kunnen komen.

Dank

<?php

include('connect.php');

$sql = "SELECT LAND FROM `test` WHERE `PRIJS` = 900";

if(!$result = $mysqli->query($sql))
{
trigger_error('Fout in query: '.$mysqli->error);
}
else
while($row = $result->fetch_assoc())
{
$host = $row['LAND'];
header("Location:$host.html");
exit;
}

?>

Alle reacties


Acties:
  • 0 Henk 'm!

  • commentator
  • Registratie: Mei 2004
  • Laatst online: 22:41
Maar hoe wil je dat de server voor jou gaat kiezen welke van die gevonden items de juiste is waar je naar te moet gaan?

Een optie zou kunnen zijn om in het geval van meerdere items een pagina met keuzelinkjes aan te bieden

Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Ik bezoek jou pagina en dan gaat je script draaien. Die haalt alle landen op met een prijs van 900. Als er 1 of meer resultaten zijn dan krijgt mijn browser na het eerste resultaat te horen dat hij een andere pagina moet bezoeken. Namelijk het eerste land met een prijs van 900. Daar gaat het script van die pagina laden.

Wil je me een voor een allerlei pagina's laten bezoeken? Of een keuzelijst aanbieden met allerlei landen met een bedrag van exact 900? In het laatste geval is de header niet wat je bedoelt. Maar eerder een <a href

👑


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@ajakkes, ik wil inderdaad een keuzelijst aanbieden van alle landen die aan de voorwaarde 900 voldoen

Acties:
  • +1 Henk 'm!

  • ShitHappens
  • Registratie: Juli 2008
  • Laatst online: 11-10 16:31
Dan zul je de regel exit; even weg moeten halen in de for-loop, linkjes gaan bouwen dat je zoiets krijgt als dit (pseudo code, dus nog wel even netjes escapes doen enzo):
PHP:
1
2
3
4
5
while($row = $result->fetch_assoc())
{
$host = $row['LAND'];
echo("<a href=$host.html>$host</a></br>");
}

[ Voor 13% gewijzigd door ShitHappens op 16-05-2016 23:27 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@shitHappens, bedankt voor die code. Heb ze getest met 2 landen die aan de voorwaarde 900 voldoen.
Ik krijg een scherm met de naam vd 2 landen die ik moet aanklikken om hun html pagina te openen.
De bedoeling is echter dat ze automatisch geopend worden. Is dat mogelijk ?

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 00:11
Je kunt de links met javascript in aparte vensters laten openen. Je geeft de urls dan mee aan javascript en laat die de nieuwe vensters openen als de pagina geladen is. Of dit echter een fijne ervaring is als gebruiker durf ik sterk te betwijfelen. Ook kan een popup blocker hier wel eens op de rem gaan trappen.


code:
1
2
3
<script language="javascript">
window.open('url', '_blank');
</script>


Je kunt zelf even uitvogelen hoe je dit javascript met PHP kunt echo-en waarbij je 'url' moet vervangen door de correcte pagina's.

[ Voor 26% gewijzigd door Morrar op 17-05-2016 00:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt Morrar, even testen

Acties:
  • 0 Henk 'm!

  • ShitHappens
  • Registratie: Juli 2008
  • Laatst online: 11-10 16:31
Verwijderd schreef op maandag 16 mei 2016 @ 23:57:
@shitHappens, bedankt voor die code. Heb ze getest met 2 landen die aan de voorwaarde 900 voldoen.
Ik krijg een scherm met de naam vd 2 landen die ik moet aanklikken om hun html pagina te openen.
De bedoeling is echter dat ze automatisch geopend worden. Is dat mogelijk ?
Ja wat wil je nou? :P Eerder zei je nog:
Verwijderd schreef op maandag 16 mei 2016 @ 23:16:
@ajakkes, ik wil inderdaad een keuzelijst aanbieden van alle landen die aan de voorwaarde 900 voldoen
Dat is heel wat anders dan automatisch openen. Overigens is het automatisch opengooien van schermen niet echt gebruikersvriendelijk (en gewoon hels op mobiele apparaten/verbindingen).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb me niet goed uitgedrukt over die keuzelijst aanbieden, sorry.
Eigenlijk wil ik iets zoals hier http://www.randocheval.com/ waar je nadat je "cherchez votre voyage" ingevuld hebt in een pagina terecht komt met keuzemogelijkheden.
Als ik in die broncode kijk zie ik dat de keuze's via een form naar een .php file gestuurd worden die dan ... ?
Geraak er niet wijs uit.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Met een HTML formulier. In de postfile kijk je dan wat je resultaten zijn. Zijn het er meer dan 1 dan kan je een pagina serveren die een lijst toont met opties. Is er maar 1, dan kan je direct doorlinken zoals je nu doet.

Dus je maakt op de startpagina een <form action="post.php"> <input type="text" name="price" /></form> aan.

In je post.php haal je die waarde op ($_POST) en gebruik je die waarde in je query. Denk om SQL-injectie (google maar).

Dan kan je met een mysqli_num_rows bekijken hoeveel resultaten je hebt.

[ Voor 41% gewijzigd door Guillome op 17-05-2016 13:32 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Toon eens een klein beetje meer zelfredzaamheid. Je maakt je er in dit topic wel erg makkelijk vanaf terwijl het toch echt je eigen probleem is. Onderzoek antwoorden die je niet begrijpt en denk vooral zelf eventjes na over wat je wil en schrijft dat ook eenduidig uit. Het is nu na je laatste post pas duidelijk dat je eigenlijk gewoon een lijst met resultaten wil hebben.

Wat begrijp je daar niet aan? Wat lukt je niet? Waarom niet? Heb je zelf al oplossingen gevonden die om wat voor reden dan ook niet werkten of niet goed genoeg waren? Waarom waren die niet goed? Oftewel: De Quickstart. Niemand hier heeft zó veel tijd te veel dat we allemaal graag jouw stappen nog eens tevergeefs opnieuw doorlopen.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@NMe Dat het mijn eigen probleem is ben ik me wel bewust. En de antwoorden die ik hier gekregen heb begrijp ik en heb ik toegepast. Door die antwoorden ben ik mer van bewust geworden dat ik verkeerd bezig was en heb daarom die link vd website "Randocheval" vermeld om duidelijk te maken wat ik zoek.
Ik ben nu al een paar weken bezig met dat te proberen op te lossen maar het lukt me niet, daarom zoek ik ook hulp hier op het forum.

Samengevat, wat wil ik bereiken:
Iets zoals hier http://www.randocheval.com/ waar je nadat je "cherchez votre voyage" ingevuld hebt in een pagina terecht komt met keuzemogelijkheden.
Ik veronderstelde dat die pagina met keuzemogelijkheden door middel van php en een db gemaakt wordt maar ben daar nu niet zo zeker meer van.
Met mijn script op mijn eerste post kom ik niet aan wat ik zoek.

Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Als ik je nu goed begrijp wil je dit:
ShitHappens schreef op maandag 16 mei 2016 @ 23:26:
Dan zul je de regel exit; even weg moeten halen in de for-loop, linkjes gaan bouwen dat je zoiets krijgt als dit (pseudo code, dus nog wel even netjes escapes doen enzo):
PHP:
1
2
3
4
5
while($row = $result->fetch_assoc())
{
$host = $row['LAND'];
echo("<a href=$host.html>$host</a></br>");
}
Maar dan niet een link naar $host.html, maar de inhoud van $host.html op je pagina tonen.

In het huidige tempo gaat het nog wel even duren voordat je resultaat gaat lijken op je voorbeeld pagina.

Maar kijk eens naar include("$host.html");

👑


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Verwijderd schreef op dinsdag 17 mei 2016 @ 13:43:
Samengevat, wat wil ik bereiken:
...
Met mijn script op mijn eerste post kom ik niet aan wat ik zoek.
Mijn bericht gelezen?

[ Voor 60% gewijzigd door Guillome op 17-05-2016 13:57 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja Guillome, nadat ik gepost had :-)

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Kan je er wat mee?

[ Voor 30% gewijzigd door Guillome op 17-05-2016 14:07 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • revertive
  • Registratie: Maart 2008
  • Laatst online: 15-01 14:03
Wat heb je zelf nou al uitgezocht want het lijkt erop dat je graag wilt dat anderen het voor je uitzoeken. Je hebt het schijnbaar voor mekaar gekregen om data uit een database op te vragen nou moet je nog wat gaan doen met die data, hier zijn een hele boel voorbeelden van te vinden met Google.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Guillome schreef op dinsdag 17 mei 2016 @ 13:17:


Dan kan je met een mysqli_num_rows bekijken hoeveel resultaten je hebt.
Ja dat begrijp ik. Maar die resultaten omzetten in een pagina zoals bij "Randocheval" kan ik niet.
Kijk aub eens bij http://www.randocheval.com/ en klik bij "cherchez votre voyage" in het eerste vak" toute destinations" kies "Albanië" en dan het vak "ok".
Kijk nu eens naar de broncode vd opgeroepen pagina. Daar zit mijn probleem

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Als jij nou eerst basic-php leert, dan zie je vanzelf dat jouw antwoord exact al een paar keer in dit topic staat..

Je kan op internet opzoeken hoe je door je mysqli resultaten loopt en HTML print met de gegevens van de desbetreffende rijen.

[ Voor 35% gewijzigd door Guillome op 17-05-2016 14:36 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmm zal aan mijn bril en mijn verstand liggen denk ik

Acties:
  • 0 Henk 'm!

  • Goudstalen
  • Registratie: Juni 2012
  • Laatst online: 10-10 10:14
Zoals eerder aangegeven moet je inderdaad uitlezen wat de gebruiker bij de dropdowns heeft ingevuld. Dan kun je vervolgens de bijbehorende reizen/resultaten die voldoen aan de aangegeven criteria uit de database halen met een query en deze vervolgens op de nieuwe pagina (die opent na op OK te klikken) tekent.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DGonlag2 schreef op dinsdag 17 mei 2016 @ 14:45:
en deze vervolgens op de nieuwe pagina (die opent na op OK te klikken) tekent.
Hoe dat moet ben ik dus aan het zoeken

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

En dat is echt heel erg basic. Lees gewoon eens een tutorial over PHP + Mysqli + Html Form.

[ Voor 15% gewijzigd door Guillome op 17-05-2016 14:49 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik doe mijn best

Acties:
  • 0 Henk 'm!

  • Goudstalen
  • Registratie: Juni 2012
  • Laatst online: 10-10 10:14
Volgens mij is het ook allemaal al zo'n beetje gezegd.

Ik ben er zelf niet heel erg in thuis, maar volgens mij zit het ongeveer zo:
In $_POST kun je de gegevens opvragen van de ingevulde dropdowns. Deze opties/dropdowns kun je dan in een formulier zetten en de actie op de knop 'zoeken'/'ok' zetten.
Deze gegevens gebruik je vervolgens om een query op te stellen. De gegevens die je terug krijgt zijn dan als het goed is alle landen en die zitten dan in een array.
Deze kun je vervolgens met behulp van een loop (while bijvoorbeeld) al die landen op het scherm toveren.

Acties:
  • +1 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 10-10 17:57
Wat op die website te zien is, is niet meer dan zoekvelden en zoekresultaat.

Je hebt een invoerformulier, deze submit je, je PHP zoek de resultaten en geeft een lijstje terug.
Dit lijstje is vaak een samenvatting of beknopte stuk informatie met een link naar de gewenste pagina dat meer informatie bevat.
Waar jij dus:
PHP:
1
echo("<a href=$host.html>$host</a></br>");

hebt staan, moet je die gewoon uitbreiden met wat je als samenvatting per resultaat wilt tonen.
Dat is bij randocheval niet anders: Bovenin staat het invoerformulier, daaronder de resultaten.

Echter, in je select query heb je maar 1 veld dat je ophaalt (land). Dus meer kun je niet tonen.
Je moet dus meer informatie ophalen als je dat wilt kunnen tonen.
En je hebt nu enkel een vaste prijs. Dit moet dan een waarde uit je invoerformulier zijn, die je moet inlezen.
En als je meerdere invoervelden wilt gebruiken, dan zul je uiteindelijk ook je query zelf moeten opstellen a.d.h.v of een waarde aanwezig is, ipv nu vast één zoekcriteria.

Je voorbeeldsite gebruikt o.a. de gegevens: land, titel, samenvatting, periode, duur, prijs, linkje naar detail pagina.
En dan in een in een html formaat gezet.
Waar jouw samenvatting dus bestaat uit één regel, hebben zij dat tussen <tr> en </tr> staan.

Dus om je wat meer op weg te helpen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
include('connect.php');
include('zoekformulier.php');

$sql = "SELECT LAND, PRIJS FROM `test` WHERE PRIJS = ".mysql_real_escape_string($_POST[zoek_prijs]);

echo("<table>");
echo("<th><td>gevonden landen</td><td>Prijs</td></th>");

if(!$result = $mysqli->query($sql))
{
trigger_error('Fout in query: '.$mysqli->error);
}
else
while($row = $result->fetch_assoc())
{
$host = $row['LAND'];
$prijs = $row['PRIJS'];
echo("<tr><td><a href='details.php?id=$host'>$host</a></td><td>$prijs</td></tr>");
}

echo("</table>");
?>


Meer informatie kun je vinden door te zoeken naar form handling of query form.

let the past be the past.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt SPee, denk dat ik daar mee verder kan. Ga dat vanavond uitproberen

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 11-10 02:00

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Verwijderd schreef op dinsdag 17 mei 2016 @ 14:32:
[...]


Ja dat begrijp ik. Maar die resultaten omzetten in een pagina zoals bij "Randocheval" kan ik niet.
Kijk aub eens bij http://www.randocheval.com/ en klik bij "cherchez votre voyage" in het eerste vak" toute destinations" kies "Albanië" en dan het vak "ok".
Kijk nu eens naar de broncode vd opgeroepen pagina. Daar zit mijn probleem
Je beseft je dat die broncode die jij in je browser ziet alleen de HTML (en aanverwante zaken) bevat hè en niet de server code (PHP of net wat ze gebruiken) waarmee die pagina gegenereerd is?

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat besef ik

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Morrar schreef op dinsdag 17 mei 2016 @ 00:07:
Je kunt de links met javascript in aparte vensters laten openen. Je geeft de urls dan mee aan javascript en laat die de nieuwe vensters openen als de pagina geladen is. Of dit echter een fijne ervaring is als gebruiker durf ik sterk te betwijfelen. Ook kan een popup blocker hier wel eens op de rem gaan trappen.


code:
1
2
3
<script language="javascript">
window.open('url', '_blank');
</script>


Je kunt zelf even uitvogelen hoe je dit javascript met PHP kunt echo-en waarbij je 'url' moet vervangen door de correcte pagina's.
Of je geeft de links gewoon een target="_blank" mee, dan heb je geen vuile JS nodig. :) Ook denk ik niet, dat dit de oplossing is wat TS zoekt. ;)

[ Voor 3% gewijzigd door CH4OS op 17-05-2016 19:35 ]


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 00:11
CH40S schreef op dinsdag 17 mei 2016 @ 19:30:
[...]
Of je geeft de links gewoon een target="_blank" mee, dan heb je geen vuile JS nodig. :) Ook denk ik niet, dat dit de oplossing is wat TS zoekt. ;)
Initieel wilde de TS dat de links *automatisch* geopend werden in nieuwe tabs / windows. Dat zou je kunnen doen met Javascript, maar niet met een link. Bijvoorbeeld onload met een function die window.open() gebruikt voor de URLs.

Maar goed, inmiddels is duidelijk dat de TS gewoon een resultaten pagina / overzicht wil met daarin informatie + links, dus is dit inderdaad niet meer relevant :)

Nu komt het neer op:
1) HTML met zoekformulier, posten naar (bijvoorbeeld) search.php
2) In search.php de variabelen uitlezen uit $_POST en daarop zoeken mbv SQL
3) In search.php de output voor de resultaten pagina(s) in genereren en terugsturen naar de browser

Overigens zou ik sterk het gebruik van een template (engine) aanraden voor het genereren van HTML output in PHP (smarty zou een optie kunnen zijn voor zelfbouw projectjes).

[ Voor 25% gewijzigd door Morrar op 17-05-2016 21:38 ]


Acties:
  • 0 Henk 'm!

  • q-enf0rcer.1
  • Registratie: Maart 2009
  • Laatst online: 09-10 14:44
Het is overigens helemaal niet verstandig een filterpagina zoals dit met php maken. Hier is JavaScript juist veel sterker in omdat je de pagina dan niet continu hoeft te verversen.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Waarom vertelt iedereen in een iets ander jasje hetzelfde verhaal :P Heb ik op pagina 1 al gedaan, en ik was ook niet de 1e. Doe gewoon een tutorial of een andere tutorial? 5 minuten zoekwerk.

En @diegen boven mij, dat is zeker mooier, maar denk dat dat te hoog gegrepen is op dit moment voor de TS :)

edit:
Lol@GewoonRoy. Zelfde verhaal nogmaals :P

edit: trixor, jij ook :P Hoeveel varianten komen er nog? haha

[ Voor 23% gewijzigd door Guillome op 18-05-2016 11:21 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • GewoonRoy
  • Registratie: Februari 2013
  • Laatst online: 04-10 12:02
Hallo Wiack. Als ik het goed begrijp wil je op basis van verschillende keuzes een ander resultaat krijgen. Vervolgens dit resultaat tonen in een lijst welke verwijst naar een pagina. Het is niet erg als dit basis PHP + MySQLi + HTML is. Zodoende ben je er mee bezig om er wat van op te steken.

In eerste instantie lijkt mij dat je opties / keuzemogelijkheden wilt aanbieden aan de gebruiker. Dit doe je door middel van een formulier (HTML) welke gesubmit kan worden. Nadat je gesubmit hebt ga je het formulier afhandelen (PHP) voordat je een query uitvoert. Door het submitten van het formulier weet je welke keuze er gemaakt is. Door deze keuze mee te nemen in je query (MySQLi) zullen er relevante resultaten terug gegeven worden. Deze resultaten kan je doorlopen middels PHP en vervolgens tonen middels HTML.

In je database moet elk resultaat wel een waarde hebben die overeenkomt met de keuzemogelijkheid zodat je dat met elkaar kan vergelijken. Succes!

Acties:
  • 0 Henk 'm!

  • Montaner
  • Registratie: Januari 2005
  • Laatst online: 10-10 13:14
In plaats van steeds een URL van een website te herhalen, kijk eens wat ze daar doen.

Stap 1: Het formulier waar de gegevens worden ingevuld:
HTML:
1
<form action="choose.php" method="post">


De actie verwijst naar de pagina waar de je met 'OK' knop naar toe gaat, de method laat zien of de gegevens met POST of met GET worden verstuurd. Waarbij in het laatste geval de waardes via de URL worden meegegeven (niet zo netjes).

Stap 2: de pagina choose.php
Op deze pagina worden de POST waardes uitgelezen (google eens op PHP POST) en wordt de query opgebouwd. Nadat de query opgebouwd is en de resultaten er zijn, wordt er een loop gestart zoals 'ShitHappens' heeft beschreven.

Kortom: op pagina 1 heb je een formulier, die stuurt de waardes naar pagina 2 en laat de resultaten zien.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Inderdaad dikwijls hetzelfde verhaal hier. Maar ik ben toch door velen heel goed geholpen.
Nu ben ik bezig met het script van SPee en het lukt me vrij aardig. Bedankt iedereen.
Pagina: 1