• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07

[PHP] While loop met AJAX

  • Reza
  • 17 augustus 2015 om 21:44
  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 17 augustus 2015 om 21:44
    • #1

    Hallo,

    ik loop momenteel vast op een klein probleem waardoor ik niet echt meer helder kan kijken naar de code.
    Voor een klant van mij heb ik een zoekfunctie gemaakt, waarbij er gezocht moet worden in de DB bij bepaalde criteria. Dit lukt allemaal, echter komt er telkens maar een zoekresultaat uit...

    Nu is de oplossing dus een while loop, echter gebruik ik ook nog AJAX om alles dynamisch te laten verlopen, waardoor het toch iets lastiger is.

    De code is nu wat rommelig, dit komt doordat ik nu alles aan het uit proberen. De query zal later ook herschreven worden naar een prepared statement dus veiligheid is geen probleem.

    PHP
    $queryPlayer = $mysqli->query("SELECT * FROM spelers WHERE positie = '".$mysqli->real_escape_string($inputPosition)."' AND geboortedatum LIKE '".$strConvert."' AND geslacht = '".$mysqli->real_escape_string($inputSex)."' AND provincie = '".$mysqli->real_escape_string($inputState)."'");
    			
    			while($arrayPlayer = $queryPlayer->fetch_array())
    			{
    				$html 	= array();
    				$html[]	= '<div class="container"><div class="row margin-small"><div class="col-md-2 col-sm-3">';
    				$html[]	= '<div class="player-spotlight"><strong>'.$arrayPlayer["voornaam"].' '.$arrayPlayer['achternaam'].'<span>'.floor((time() - strtotime($arrayPlayer['geboortedatum'])) / 31556926).' jaar</span></strong>';
    				$html[]	= '<figure><img src="img/player.png" alt="A. de Brecht" />';
    				$html[]	= '<div class="player"><strong>'.$arrayPlayer['positie'].'</strong>';
    				$html[]	= '<div class="clearfix"></div><span>'.$arrayPlayer['woonplaats'].'</span>';
    				$html[]	= '</div></figure>';
    				$html[]	= '<a href="profielpagina/'.$arrayPlayer['id'].'/'.strtolower($arrayPlayer['voornaam'].$arrayPlayer['achternaam']).'" class="btn btn-green btn-block">Bekijk profiel en <img src="img/icn-camera.png" alt="Films" /></a>';
    			}
    			if($arrayPlayer == false)
    			{
    				$notFound = 1;
    			}
    		}
    		header('Content-Type: application/json');
    		$aVariables = array('error' => $error, 'nietgevonden' => $notFound, 'html' => $html);
    		echo json_encode($aVariables);
    Toon Meer

    Door middel van json_encode stuur ik alles terug naar een Javascript bestand, hier werd alles goed uitgelezen en weergeven, echter laat $html maar één resultaat zien terwijl de query er op dit moment twee ophaalt. Er zijn dus wel degelijk twee records.

    Zou iemand dus misschien weten waaraan het ligt? Wellicht is het iets simpel of klopt er iets niet aan de while loop.

    Bij voorbaat dank,
    Reza.

    Met vriendelijke groet,
    Reza.

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Luc
    Software Engineer
    Ontvangen Reacties
    44
    Berichten
    1.986
    • 17 augustus 2015 om 22:33
    • #2

    dit komt omdat je html in de while loop aanmaakt. Haal de eerste $html = weg en maak deze boven de loop aan d.m.v $html = ''

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • stijnhau
    Student
    Ontvangen Reacties
    3
    Berichten
    174
    • 17 augustus 2015 om 22:33
    • #3

    Je initialiseert iedere keer in de while je $html array.
    Waarom is dat een array?
    Moet dat geen tekst zijn waar je steeds aan append?

    Check mijn projecten op stijnhau.be

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 17 augustus 2015 om 22:44
    • #4

    Bedankt beide voor jullie reacties.

    Ik had van $html als laatste een array gemaakt, daarvoor was het een lege string waar ik steeds tekst bij toevoegde.

    PHP
    $html = ""
    $html .= 'Nieuw'

    Dit had ik dus eerst, wat Luc ook bedoeld.

    Edit:
    Door nog een klein stuk aan te passen, werkt alles nu. Bedankt Luc en Stijnhau!

    Met vriendelijke groet,
    Reza.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 18 augustus 2015 om 21:51
    • #5

    Uhm, waarom retourneer je HTML als JSON :/.

    Doe (bij voorkeur) een van de twee volgende dingen:
    - retourneer het gewoon als HTML; als je een AJAX-call doet via jQuery kun je een "hint" meegeven over het te verwachten reponstype (dataType, met als waarde json of html)

    of, wellicht beter,
    - retourneer alleen relevante data als JSON, en genereer de HTML in je callback-functie

    Voordeel van de laatste methode is dat er veel minder data over de lijn gaat.

    Ik zou je afraden om in MySQLi over te stappen naar prepared statements. Dit is namelijk nogal ... ruk. Daarnaast heeft het geen enkele toegevoegde waarde en wordt alles mogelijk trager.

    Prepared statements in MySQLi zijn namelijk "echte" native prepared statements in-the-MySQL-sense-of-the-word, oftewel, elke SELECT-query resulteert in het daadwerkelijk uitvoeren van TWEE queries (1x voor de prepare, 1x voor de execute). En dan is de syntax van prepared statements in MySQLi nogal omslachtig.

    Dan nog iets heel anders: in alle discussies over het escapen van DATA heb je altijd te maken met een CONTEXT (HTML, SQL, et cetera) maar wat nogal eens altijd wordt vergeten is dat al die escaping functionaliteit alleen goed werkt als je op de correcte manier omspringt met je character encoderingen.

    Heb je bijvoorbeeld al gedacht aan de character encoding (CE) van:
    - je code-bestanden zelf, met welke CE zijn je PHP/HTML/etc-bestanden opgeslagen (wellicht minder doorslaggevend qua security, maar daarom niet minder belangrijk)
    - het gegenereerde HTML-document middels meta tag of PHP-header()
    - de connectie met je database middels een set_charset() functie
    - de CE van je tabellen
    - de CE waarmee de data in deze tabellen (daadwerkelijk) is opgeslagen?

    Ook in de Content-Type header van je JSON-respons zie ik geen CE aanduiding...

    Kun je bijvoorbeeld het volgende stukje goed tonen/transporteren:

    Citaat

    A good day, World!
    Schönen Tag, Welt!
    Une bonne journée, tout le monde!
    يوم جيد، العالم
    좋은 일, 세계!
    Một ngày tốt lành, thế giới!
    こんにちは、世界!

    Toon Meer

    ?

    Bewerkt 6 keer, laatst door FangorN (18 augustus 2015 om 22:20).

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 19 augustus 2015 om 02:41
    • #6

    Bedankt FangorN, zeer geïnteresseerd door wat je van mij vraagt.
    Nu heb ik hetzelfde systeem op mijn eigen site, waar ik dezelfde methodes gebruik(hiermee bedoel ik een dezelfde programmering).

    http://prntscr.com/869d4j -> Je kan hier zien dat ik dat invoeg
    http://prntscr.com/869dus -> Hier kan je zien dat ik het wel degelijk opsla
    http://prntscr.com/869e3g -> Nu je de URL bezoekt, zie je dus het resultaat.

    Nu is dit mijn eigen website, een project waar ik een tijdje niets mee heb gedaan. Alles is zelf gemaakt, behalve de editor en notify stukje. Ik denk dus dat jij dit bedoelde, of zit ik verkeerd...

    Met vriendelijke groet,
    Reza.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 19 augustus 2015 om 20:58
    • #7

    Simpelweg omdat iets juist wordt weergegeven wil niet zeggen dat iets juist is opgeslagen.

    MySQL is redelijk intelligent als het gaat om vertalingen tussen verschillende character encoderingen dus het kan zijn dat daarom alles op dit moment goed getoond wordt... totdat je je CE van je document / je database-connectie een keer instelt.

    Het afwezig zijn van een CE-aanduiding in je Content-Type header van je JSON-response was mijn voornaamste aanleiding om hierop te reageren, naast de wat rare opzet van deze JSON-response dus... Dit zou wat mij betreft gewoon text/html moeten zijn (met CE) omdat het HTML is, geen JSON.

    Ik zou zeggen, denk er nog eens over na en controleer via je browser developer tools eens wat je CE van je document / AJAX response is en controleer of je een _set_charset() functie aanroept bij het maken van je database-connectie...

    EDIT: en het is dus beter om overal expliciet een "charset" in te stellen in je header()s.

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 21 augustus 2015 om 14:32
    • #8

    Wellicht ben ik het vergeten te melden, maar MySQL heeft hier niets mee te maken.
    De editor voert alles via JS/AJAX door naar een ander PHP script en deze past de file direct aan.

    Alles wordt dus ook via de URL goed doorgegeven ;)

    Met vriendelijke groet,
    Reza.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 21 augustus 2015 om 17:05
    • #9

    Wijkt dit niet af van je oorspronkelijke vraagstelling, daar heb je het wel over een database?

    Ik begrijp het niet helemaal meer? Speelt het oorspronkelijke probleem nog of is er een ander probleem?

    Ik denk dat we hier met zijn allen proberen dit soort vraagstukken op te lossen, of andere en mogelijk betere werkwijzen aan te dragen, maar die moeten dan wel gebaseerd zijn op een kloppend verhaal, anders gaan we niet van eenzelfde uitgangspunt uit en sluiten de adviezen hier niet bij aan...

    Dus eh... Geef ff opnieuw een situatieschets en vertel daarbij wat het probleem precies is - als er uberhaupt nog een probleem speelt.

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 21 augustus 2015 om 17:26
    • #10

    Ik weet niet of je hebt opgelet, maar jouw eerste reactie kwam nadat ik al had gezegd dat het was opgelost.

    Mijn probleem was, dat ik maar één resultaat kreeg i.p.v. meerdere. Dat was opgelost door paar kleine aanpassingen.

    Nu had jij in je eerste reactie twijfels over mijn manier van gebruik, waarop ik een test uitvoeren op mijn eigen site (dus niet die van mijn klant). Er is dus helemaal geen probleem, ik antwoordde echter alleen maar op jouw berichten...

    Op mijn huidige site maak ik bij mijn editor geen gebruik van een database, echter is de code etc. allemaal hetzelfde als die van mijn klant. Topic kan gesloten worden, het werd in eerste instantie alleen maar opengehouden voor extra commentaar ^^

    Met vriendelijke groet,
    Reza.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design