PDA

Volledige versie bekijken : dubbele regels


scorpes
%Europe/Berlin %605 %2005, 15:32
Ik heb een database met phpmyadmin gekoppeld aan mijn flash website. Maar ik heb het probleem als ik iets in mijn database typ, als ik een 1 enter geef en weer een regel tekst typ... dat via php naar mijn flash stuur, dat in flash 2 enters krijg, dus een regel overslaat terwijl dit niet de bedoeling is?,, hoe kan ik dit oplossen?

PHP:

$sql=mysql_query("SELECT * FROM mijn_tabel ORDER BY tabel_id ASC")
or die("&errorVar=ERROR: WRONG QUERY&errorVar= error");
if(mysql_numrows($sql)==0) {
echo"&errorVar=ERROR: RETURNED EMPTY&errorVar= error";
}else{
echo "&text=";
while($row=mysql_fetch_array($sql)) {
$text="$text"."$row[tabel_text]"."||";
}
echo"$text";
}


Flash:

System.useCodepage = true;
data = new LoadVars();
data.onLoad = Fillvalues;
data.sendAndLoad("http://62.194.37.178/text.php", data, "POST");
function Fillvalues() {
textArray = data.text.split("||");
textVar = textArray[0];
}

Flashingback
%Europe/Berlin %614 %2005, 15:44
$sql=mysql_query("SELECT * FROM mijn_tabel ORDER BY tabel_id ASC")
or die("&errorVar=ERROR: WRONG QUERY&errorVar= error");
if(mysql_numrows($sql)==0) {
echo"&errorVar=ERROR: RETURNED EMPTY&errorVar= error";
}else{
echo "&text=";
while($row=mysql_fetch_array($sql)) {
$text="$text"."$row[tabel_text]"."||";
}
echo nl2br("$text");
}

als ik je goed begrijp zou dit de oplossign moeten zijn.

scorpes
%Europe/Berlin %622 %2005, 15:56
hmm,, ik heb het net getest en volgens mij werkt het niet. :(
Ik heb de tekst van de dyn textbox wel op HTML staan.

Flashingback
%Europe/Berlin %638 %2005, 16:19
hmmm... dan heb ik geen idee van wat je juist bedoelt

latino
%Europe/Berlin %640 %2005, 16:22
dat probleem heb ik ook..haal nl2br weg en in je admn moet je gewoon 1 keer enteren dus zo:

Dit is een stukje tekst,en nu wil ik naareen nieuwe regel. Nu doe je gwoon een enter.
Dit is zeg maar de nieuwe paragraaf. In Flash zal het zo eruit komen te zien.:

Dit is een stukje tekst,en nu wil ik naareen nieuwe regel. Nu doe je gwoon een enter.

Dit is zeg maar de nieuwe paragraaf. In Flash zal het zo eruit komen te zien.:

Folkert
%Europe/Berlin %643 %2005, 16:26
je gebruikt de php functie om de \n en \r terug te zetten naar <br>.
Aangezien je een htmlTextField hebt word dat een linebreak in je textfield.
Helaas echter voor je is de \n niet weg want die word niet verwijderd met nltobr().
Beter die functie even weglaten, dan testen en als het dan nog zo is, dan even de \n\r en \r\n en \n strippen.
Of wellicht werkt deze (http://www.swapdepths.nl/index.php?s=newlines) oplossing voor je.

Roenes
%Europe/Berlin %739 %2005, 18:44
Gewoon in flash splitten op \r\n is toch ook voldoende?

function Fillvalues() {
textArray = data.text.split("||");
textVar = textArray[0].split("\\r\\n").join("\\n");
}
Dit zou toch naar behoren moeten werken? :)

Folkert
%Europe/Berlin %745 %2005, 18:53
kan ook wel degelijk. echter houd er dan wel rekening mee dat \r\n bestaat maar ook bv \n\r , dat ligt eraan op welk OS het bestand word gecreerd, verschil met bijvoorbeeld mac of windows.

latino
%Europe/Berlin %888 %2005, 22:19
je gebruikt de php functie om de \n en \r terug te zetten naar <br>.
Aangezien je een htmlTextField hebt word dat een linebreak in je textfield.
Helaas echter voor je is de \n niet weg want die word niet verwijderd met nltobr().
Beter die functie even weglaten, dan testen en als het dan nog zo is, dan even de \n\r en \r\n en \n strippen.
Of wellicht werkt deze (http://www.swapdepths.nl/index.php?s=newlines) oplossing voor je.


volgens mij zie ik hem nergens de \n\r toevoegen :confused:

scorpes
%Europe/Berlin %526 %2005, 13:38
dat probleem heb ik ook..haal nl2br weg en in je admn moet je gewoon 1 keer enteren dus zo:

Dit is een stukje tekst,en nu wil ik naareen nieuwe regel. Nu doe je gwoon een enter.
Dit is zeg maar de nieuwe paragraaf. In Flash zal het zo eruit komen te zien.:

Dit is een stukje tekst,en nu wil ik naareen nieuwe regel. Nu doe je gwoon een enter.

Dit is zeg maar de nieuwe paragraaf. In Flash zal het zo eruit komen te zien.:

Dit wil ik juist niet hebben, ik wil dat als ik in mijn admin een enter doe,, dat die naar de volgende regel gaat en niet naar de volgende paragraaf.


function Fillvalues() {
textArray = data.text.split("||");
textVar = textArray[0].split("\r\n").join("\n");
}

Dit heb ik geprobeerd maar het werkt niet. Hij slaat bij 1 enter nog steeds een regel over.

Beter die functie even weglaten, dan testen en als het dan nog zo is, dan even de \n\r en \r\n en \n strippen.
Wat bedoel je met strippen?

Thomaz
%Europe/Berlin %556 %2005, 14:21
Wat handig is, is om eerst in flash te kijken hoe de regels worden afgebroken (bij het afspelen op ctrl+alt+v drukken).

Stel dat er het volgende staat:

MijnVar = "dit is de eerste regel \n\r\n\r Dit is de 2e regel"

dan kun je in je php het volgende doen:

$text.=ereg_replace('\n\r\n\r', '\n', $row[tabel_text]."||");

Zo vervang je dubbele linebreaks door 1 linebreak.

scorpes
%Europe/Berlin %583 %2005, 15:00
wow dat is een handige tip, dat ctrl+alt+v!!!
bij mij staat er dit:
Regel1<br />\r\nRegel2<br />\r\nRegel3<br />\r\nRegel4<br />\r\n
ik ga ff testen met de php, bedankt

scorpes
%Europe/Berlin %593 %2005, 15:15
Waaa volgens mij is het gelukt,, met dat ereg_replace :D
ik heb dit gedaan:
$text.=ereg_replace('<br />\r\n', '\n', $row[tabel_text]."||");
En nu werkt het goed ;)
Allemaal bedankt voor jullie hulp!

Roenes
%Europe/Berlin %716 %2005, 18:11
Ondanks dat je al geholpen bent nog een paar dingen:

Scorpes, dat dit:
function Fillvalues() {
textArray = data.text.split("||");
textVar = textArray[0].split("rn").join("n");
}niet werkt is niet vreemd. Je hebt het script niet juist overgenomen. er moeten nog slashes (\) tussen.

Thomaz, goeie tip alleen hou je nu niet rekening met de opmerking van folkert. Je hebt verschillende soorten linebreaks: \r\n, \n\r en \n (en misschien nog wel meer). Dat is dus per systeem afhankelijk zoals folkert zegt. Dus bij Scorpes werkt het strippen nu wel maar als iemand met een ander systeem (bv mac) kijkt zal het dus niet werken omdat deze een andere stripmethode gebruikt.

Daarom zou je eigenlijk op alle manieren moeten kijken of er gestript kan worden :)

Thomaz
%Europe/Berlin %675 %2005, 17:12
Thomaz, goeie tip alleen hou je nu niet rekening met de opmerking van folkert. Je hebt verschillende soorten linebreaks: \r\n, \n\r en \n (en misschien nog wel meer). Dat is dus per systeem afhankelijk zoals folkert zegt. Dus bij Scorpes werkt het strippen nu wel maar als iemand met een ander systeem (bv mac) kijkt zal het dus niet werken omdat deze een andere stripmethode gebruikt.

Daarom zou je eigenlijk op alle manieren moeten kijken of er gestript kan worden :)

Folkert heeft het over het aanmaken van (txt)bestanden op verschillende systemen. Scorpes tikt de regels echter direct in zijn database. Deze zal dus altijd dezelfde linebreak aanhouden omdat de database geinstalleerd is op 1 bepaald OS.

Roenes
%Europe/Berlin %680 %2005, 17:19
Thomaz, je hebt helemaal gelijk. Ik had folkert's reactie nog in me hoofd en dacht dat hij zei dat het te maken had op welk platform je je applicatie laad. Maar dat was niet zo. :)

dioneo
%Europe/Berlin %874 %2005, 21:59
Ik doe de omzetting in php, omdat dat sneller werkt. Hier gebruik je namelijk een precompiled functie (altijd sneller dan scripted functie). Bovendien bestaan je flash-oplossing uit drie stadia:
-zoek de newline
-maak er een array van
-join op mijn eigen newline
Hier doe je het in 1 adem door;
$message = preg_replace("/(\015\012)|(\015)|(\012)/","<br>", $message);
Werkt vollediger en dus correcter dan nl2br

De Kale
%Europe/Berlin %348 %2005, 09:22
maar als je een generiek content management systeem maakt, waar meerdere mensen, op meerdere os'en op kunnen werken, heb je een probleem.

windows: \r\n
linux: \n
mac: \r

laadt je xml in heb je geen nl2br() achtige dingen, doe dan zoeits als dit:
normalData = myData.firstChild.nodeValue.split("\r\n").join("\n");

of je de xml dan in windows, mac of linux heb ingetikt maakt dan niets uit:
mac en linux hebben maar 1 linefeed. Die van windows (2) vervang je dan door 1.

via php kun je met een regular expression alle newlines vervangen:
function nl2br_kale($str){
$tmp = nl2br($str);//html <br>
$tmp = eregi_replace('\r|\n','',$str);//strip nu alle linefeeds weg
return $tmp;
}