Soms ga je aan jezelf twijfelen :-)
Maar deze opdracht print 1 lange lijn
while($row = $result->fetch_assoc()){
    $rawdata[] = $row;
    $i++;

echo htmlspecialchars($row['fei_id']). '\r\n' ;
}
i.p.v. alles onder elkaar. M.a.w. de \r\n wordt niet uitgevoerd. Ook niet als deze tussen "" staat.
Wat zie ik verkeerd??
\r\n is een speciale sequence, die altijd tussen "" gebruikt moet worden. Als alternatief kun je ook de constante PHP_EOL gebruiken, dus zo:
<?php
while($row = $result->fetch_assoc()){
$rawdata[] = $row;
$i++;
echo htmlspecialchars($row['fei_id']) . PHP_EOL;
}
?>
Een beetje logisch inspringen is overigens geen overbodige luxe, dan zie je tenminste ook in 1 oogopslag of je toevallig ergens een lus verkeerd toepast.
Ik raad aan om inderdaad de PHP_EOL constante te gebruiken. Deze bepaalt aan de hand van het OS welke line-breaks er gebruikt moeten worden. Normaal zijn dat deze.


Windows: '\r\n'
Mac (OS 9-): '\r'
Mac (OS 10+): '\n'
Unix/Linux: '\n'
Ben van Velzen op 14/08/2017 10:39:12

\r\n is een speciale sequence, die altijd tussen "" gebruikt moet worden. Als alternatief kun je ook de constante PHP_EOL gebruiken, dus zo:

Een beetje logisch inspringen is overigens geen overbodige luxe, dan zie je tenminste ook in 1 oogopslag of je toevallig ergens een lus verkeerd toepast.
Jouw oplosing werkt gedeeltelijk PHP_EOL (End Of Line) zegt het al, een nieuwe regel aan het eind van het scherm(lijn)

En dat is feitelijk het enige dat je onder normale omstandigheden nodig hebt. Alleen Windows wijkt hier iets af, maar niet op een strikte manier. Het HTTP protocol zegt dat je \n hoort te gebruiken als line ending, en je poept hier HTMl uit. Geen punt dus.
\r\n etc. zijn regelovergangen in TEXT-bestanden, niet in HTML-bestanden, tenzij je deze tekst afdrukt in een HTML-document in een preformatted text element (<pre>...</pre>) of equivalent (een codeblock <code>...</code>) zullen deze regelovergangen niet zichtbaar zijn op je scherm maar enkel in de broncode (wat weer weergegeven wordt als... een tekstbestand).

Om te forceren dat je een regelovergang hebt zou je een van de volgende dingen kunnen gebruiken:
- eenm preformatted text element,
- een paragraaf,
- een horizontal rule (<hr>),
- of, in het algemeen, een block level element zoals een div,
- of gewoon een ouderwetste linebreak (<br>)
Thomas van den Heuvel op 14/08/2017 16:21:36
................

- of gewoon een ouderwetste linebreak (<br>)
Een <br> gaat ook niet goed, dit is de output:

 <datalist id="FEI_ID"></br><option value= "103WJ89" /></br><option value= "103WO29" /></br><option value= "104BI79" /></br><option value= "104FA90" /></br><option value= "104FD26" /></br><datalist>


1. Je zet </br> neer.
2. Waar maak je je druk om? Het is maar een datalist. Of je nu newlines hebt of niet doet helemaal niet terzake.
3. Zit je toevallig te testen in IE? Die snapt vaak UNIX enters niet of negeert ze als je view source doet.
Ben van Velzen op 15/08/2017 10:18:22

1. Je zet </br> neer.
2. Waar maak je je druk om? Het is maar een datalist. Of je nu newlines hebt of niet doet helemaal niet terzake.
3. Zit je toevallig te testen in IE? Die snapt vaak UNIX enters niet of negeert ze als je view source doet.
Aangezien ik hier vaak verweten wordt dat er geen overzicht in mijn code zit. wilde ik het nu eens een keer 'netjes' doen. maar goed ik heb de test aan het werk zie hier

PHP en de HTML output hiervan zijn 2 verschillende dingen. Je PHP code is ook vaak een rommeltje, maar de HTML die als output komt is helemaal niet relevant hierbij.

Reageren