Felder dynamisch mit JS ändern
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
ausgabe
auswahl
code
eintragen
ersetzen
fehler
feld
funktion
http
inhalt
input
option
stelle
string
stunden
test
text
umbruch
url
vermeiden
-
Hey,
dieses Script sollte eigentlich aus einer DB die ID, den Titel, und den Text auslesen und dann je nach Auswahl der ID in der Dropdown liste den Text und inhalt in 2 input feldern anzeigen (den text in einer textarea).
Die ID zeigt es an, aber den titel und inhalt nicht...
<html> <head> <title>test</title> </head> <body> <?php $mysqlhost="localhost"; $mysqluser="mipzlul :D"; $mysqlpwd="ihopeucantseeit :)"; $db="datenbankname"; if (!$con=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd)) { die("Verbindung zum Server: Nein" . mysql_error()); } ?> <script type="text/javascript"> function ausfuellen() { var startthis = document.getElementById('optionsfeld').value eval(startthis);} function eintragen(id,wert) { document.getElementById(id).value=wert; } </script> <form action="newsscript.php" method="post"> <select name="cvbmnjfj" onChange="ausfuellen();" id="optionsfeld"> <option value="eintragen(nr1,feld1);eintragen(nr2,)"> </option> <?php mysql_select_db("$db") or die ("Database doesn't exist"); $result = mysql_query("SELECT id, titel, inhalt FROM newsscript ORDER BY id DESC"); while($row = mysql_fetch_array($result)) { $titel = $row['titel']; $inhalt = $row['inhalt']; $id = $row['id']; ?> <option value="eintragen(nr1,<?php echo "$titel"; ?>);eintragen(nr2,<?php echo "$inhalt"; ?>)"><?php echo "$id"; ?></option>; <?php } ?> <br> </select> <input type="Text" name="asdf" value="" id="nr1"> <br> <input type="Text" name="lol" value="" id="nr2"> <br> <input type="Submit" name="submitbutton" value="werte ändern"> </form> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
portal715 schrieb:
Hey,
dieses Script sollte eigentlich aus einer DB die ID, den Titel, und den Text auslesen und dann je nach Auswahl der ID in der Dropdown liste den Text und inhalt in 2 input feldern anzeigen (den text in einer textarea).
Die ID zeigt es an, aber den titel und inhalt nicht...
Der Grund dürfdte sein das das Du nr1 & nr2 ohne Gänsefüsschen übergibst.
So denkt js das es variabeln sind.
<option value="eintragen('nr1','<?php echo $titel; ?>');eintragen('nr2','<?php echo $inhalt; ?>')">
ungetestet
Beachte die ' '
Edit ich habe mir erlaubt die Gäsefüsschen im Echo zu entfernen, informiere Dich mal wann ' und " in php und javascript nötig sind (bzw wofür)
Beitrag zuletzt geändert: 2.11.2010 23:07:29 von simuliertes -
DANKE :)
ich hatte die davor schonmal dran aber irgendwie hab ich die weggemacht als ich rumprobiert hab :D
noch ein kleineres problem, wenn ich einen zeilenumbruch im text hab dann zeigt es den text nicht an.
ich glaube das liegt daran (nl2br)
da gibts bestimmt auch was oder?
(zu sehen auf http://portal715.bplaced.de/changebyid/script.php nummer 4 kann man nicht wirklich anwählen)
Beitrag zuletzt geändert: 2.11.2010 23:24:04 von portal715 -
portal715 schrieb:
da gibts bestimmt auch was oder?
(zu sehen auf http://portal715.bplaced.de/changebyid/script.php nummer 4 kann man nicht wirklich anwählen)
Umbrüche (im quelltext) solltest du an diese stelle ganz vermeiden.
<br> ist in input/option/text-felder auch wirkungslos.
bzw.
input und option-felder erlauben never ever Umbrüche.
ABER
textarea erlaubt umbrüche in der form \n
Wahrschenlich musst du aber folgendes schreiben \\n
Grund: \ ist dafür da Steuerzeichen einzuleiten oder zu verbergen.
Um im html code ein \ zu haben, muss im php code \\ - stehen.
Kurze & informative Lektüre dazu:
http://tut.php-q.net/de/output.html -Steuerzeichen in php
http://de.selfhtml.org/javascript/sprache/notationen.htm -Steuerzeichen in javascript
edito:
Wenn Du firefox hast wähle mal Extras->Fehlerkonsole.
Dort werden DIr alle javascript-fehler angezeigt.
Und eine erklärung warum 4 "nicht reagiert"
Fehler: unterminated string literal
Quelldatei: http://portal715.bplaced.de/changebyid/script.php
Zeile: 12, Spalte: 40
Quelltext:
eintragen('nr1','Test');eintragen('nr2','Test<br />
Beitrag zuletzt geändert: 3.11.2010 17:16:13 von simuliertes -
Umbrüche (im quelltext) solltest du an diese stelle ganz vermeiden
und durch /n ersetzen?
<br> ist in input/option/text-felder auch wirkungslos.
letztendlich soll das script ja auf einer website eingebaut werden und da sind zeilenumbrüche u-ä. ja fast pflicht
gibt es anstatt von nl2br nicht auch eine funktion von php die alle zeilenumbrüche in einem inputfeld automatisch zu /n umwandelt, mit denen hätte ich ja dann keine probs mehr :)
-
portal715 schrieb:
Umbrüche (im quelltext) solltest du an diese stelle ganz vermeiden
und durch /n ersetzen?
Wie gesagt:
in input-tags kannst Du sowieso keine zeilenumbrüche benutzen.
Also nicht DORT.
in textare-tags aber schon.
im html-code verwendest du selbstverständlich weiterhin <br> bei texten.
Soweit ich weiss gibt es keine funktion die zeilenumbrüche in "\\n" umwandelt, da müsstest Du dir eine funktion für selber schreiben.
Bzw mit str_replace
so in etwa:
$deintext = str_replace('\n','\\n',$deintext);
Beachte das unterschiedliche regeln für html-php und javascript -code bestehen.
Ich gebe Dir mal einen Beispielcode um die Unterschiede deutlich zu machen:
<html><head></head> <body> <?php echo "Hallo <br>\n umbruch<br>"; echo "Hallo <br>\\n umbruch<br>"; echo "Hallo umbruch<br>"; echo '<script type="text/javascript">'; echo "document.write(\"<textarea>Hallo <br>\\n umbruch<br></textarea>\");"; echo "document.write(\"Hallo <br>\\n umbruch<br>\");"; echo 'document.write("Hallo <br>\\n umbruch<br>");'; echo '</script>'; ?> <script type="text/javascript"> document.write("Hallo <br>\n umbruch<br>"); document.write("Hallo <br>\\n umbruch<br>"); </script> Hallo <br>\n umbruch<br> <textarea> Hallo <br>\n umbruch<br> </textarea> </body> </html>
schau Dir dabei auch mal den kompilierten html-quellcode an, wo dort umrüche sind...
Beitrag zuletzt geändert: 3.11.2010 17:52:41 von simuliertes -
okay,
hier komm ich nicht mehr weiter
ich muss bestimmt nur irgendwo was escapen
finds nur nicht
sitzt schon 3 stunden dran -.-
while($row = mysql_fetch_array($result)) { $titel = $row['titel']; $inhalt = $row['inhalt']; $id = $row['id']; $inhalt = str_replace('<br />','\\n',$inhalt); ?> <option value="eintragen('nr1','<?php echo $titel; ?>');eintragen('nr2','<?php echo $inhalt; ?>')"><?php echo "$id"; ?></option>; <?php } ?>
Fehler: unterminated string literal
Quelldatei: http://portal715.bplaced.de/changebyid/script.php
Zeile: 12, Spalte: 40
Quelltext:
eintragen('nr1','Test');eintragen('nr2','Test\n
Beitrag zuletzt geändert: 4.11.2010 17:21:37 von portal715 -
portal715 schrieb:
okay,
hier komm ich nicht mehr weiter
ich muss bestimmt nur irgendwo was escapen
finds nur nicht
sitzt schon 3 stunden dran -.-
var startthis = document.getElementById('optionsfeld').value; eval(startthis);}
Ich denke da fehlt ein ;
Klick mal bei der Fehlermeldung auf die Meldung. Dadurch springst Du in der Quellcode-anzeige direkt auf den Ursprung des Fehlers.
Beitrag zuletzt geändert: 4.11.2010 20:08:29 von simuliertes -
hmm bei mir im script ist das ; drin
ich glaub eher dass es an
<option value="eintragen('nr1','Test');eintragen('nr2','Test\\n mit Leerzeichen\\n Nextdingens')">4</option>;
demhier liegt oder? -
logisch wärs ja, weil der fehler in der funktion ist.
deshalb zeigt er auch auf die funktion, aber die funktion ist ja nur wegen diesen backslashes falsch bzw wird dadurch falsch.
ich brauch im javascript den code sodass ich im php ein \n bekomme...
bringst des hin? :P -
Ja \\n ist schon richtg.
Nur muss es sein:
<option value="eintragen('nr1','Test');eintragen('nr2','Test\\nmit Leerzeichen\\n
statt
<option value="eintragen('nr1','Test');eintragen('nr2','Test\\n mit Leerzeichen\\n
ich dachte das wäre klar
//das echo "blup \n sagsagh"; //und das echo "blup sagsagh"; //sind exakt das gleiche in der Ausgabe
..deswegen machst Du ja zwei \\
Beitrag zuletzt geändert: 4.11.2010 21:53:30 von simuliertes -
hmm ja soweit hab ichs verstanden, aber wie bekomm ichs so wie oben hin?!
€dit:
<form action="newsscript.php" method="post"> <p>Titel:</p> <br> <input type="text" name="titel" size="24" maxlength="100"> <p>Inhalt:</p> <br> <textarea name="newstext" rows="10" cols="50" </textarea> <br> <input type="submit" value="Hinzufügen"> </form> <?php $id = $_SESSION['login']; $oldtitel = $_POST["titel"]; $oldinhalt = $_POST["newstext"]; $titel = nl2br($oldtitel); $inhalt = nl2br($oldinhalt); if($titel and $inhalt != "") { mysql_select_db("$db") or die ("Die Datenbank existiert nicht, bitte wende dich an den Serveradministrator bzw. Provider"); $eintrag = "INSERT INTO script (name, titel, inhalt) VALUES ('$id', '$titel','$inhalt')";
Beitrag zuletzt geändert: 5.11.2010 8:50:40 von portal715 -
nl2br — Fügt vor allen Zeilenumbrüchen eines Strings HTML-Zeilenumbrüche ein
Die Zeilenumbrüche sind natürlich immer noch da .
simuliertes schrieb:
Wie gesagt:
in input-tags kannst Du sowieso keine zeilenumbrüche benutzen.
Also nicht DORT.
in textare-tags aber schon.
im html-code verwendest du selbstverständlich weiterhin <br> bei texten.
Soweit ich weiss gibt es keine funktion die zeilenumbrüche in "\\n" umwandelt, da müsstest Du dir eine funktion für selber schreiben.
Bzw mit str_replace
so in etwa:
$deintext = str_replace('\n','\\n',$deintext);
und..
simuliertes schrieb:
//das echo "blup \n sagsagh"; //und das echo "blup sagsagh";
//sind exakt das gleiche in der Ausgabe
So, alles wurde bereits gesagt. Alle Lösungen genannt.
Viel Erfolg, das war's für diesen Threat von meiner Seite.
Beitrag zuletzt geändert: 5.11.2010 10:10:28 von simuliertes -
Die Zeilenumbrüche sind natürlich immer noch da
ja ich brauch nur den code für die zeilenumbrüche, dann kann ich ja mit dem str_replace den code durch \\n ersetzen. ich find aber nirgendwo den code dafür...
und wenn ich den code für die zeilenumbrüche hab ist des ja auch kein problem mehr
//sind exakt das gleiche in der Ausgabe
ist mir auch klar, bis auf dass dass es so nicht wirklich geht,...
<option value="eintragen('nr1','Test');eintragen('nr2','Miep Miep')">2</option>;
-
wow, das geht ja wirklich nicht mit str_replace.
Hab ich mal rumgeschlaumeiert ohne es selber zu überprüfen.
Kurz gegoogelt
http://www.easy-coding.de/regular-expressions-auch-mit-zeilenumbruechen-t5877.html
.und das ist das Ergebniss:
<?php $test = " hallo usw und so fort und dann noch \n und weiteres in disem \n sinne, agfag sgs sadgsaghsahgs"; $test = preg_replace("/[\x0D\x0A]+/", " ", $test); echo "<textarea cols=150 rows=4>"; echo $test; echo "</textarea>"; ?>
Dann darfst Du nun nach den html,php und javascript-umbrüchen also noch die regular-expressions-Umbrüche kennenlernen.
Aber was genau /[\x0D\x0A]+/ bedeutet wird Dir sicher egal sein solange es läuft
-
ehrlich gesagt ja :)
mir gehn die fragen echt nie aus :D
<option value="eintragen('nr1','Hallo');eintragen('nr2','Test')">1</option>;
kann man es irgendwie (möglichs einfach natürlich :) ) schaffen dass man die id ( in diesem fall 1) per post übergeben kann?
$id = $_POST_select
oder so :D
€dit:
hab grad was gefunden,
<select name="TreFaISO_1"
ist das dann die variable?
Beitrag zuletzt geändert: 5.11.2010 22:40:08 von portal715 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage