php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.08.2009, 23:40  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard input.value wird neu gesetzt, aber nicht übernommen

Hallo Zusammen

folgender Sachverhalt:
Ich erzeuge mittels PHP eine HTML-Seite auf der eine ganze Reihe von Paragraphen/<p> untergebracht sind.
In jedem dieser Paragraphen sind mehrere Formularelemente. So zum Beispiel auch ein INPUT-Feld, dessen value beim Erzeugen der Seite mit einem Datenbankwert gefüllt wird.
Der Grund, warum ich den Wert nicht einfach ausgebe, sondern in ein input eingebe, ist der, dass ich möchte, dass alle diese Werte in den Paragraphen editierbar sind.

Beim speichern der Änderungen will ich nicht jeden Paragraphen einzeln speichern, sondern alle Änderungen auf einmal. Da aber auch noch eine Funktion zum hinzufügen weiterer, neuer Paragraphen bereitsteht, kann ich keine IDs und Namen vergeben, über die ich die Formularfelder ansprechen kann.

Macht aber nix, da ich einfach am Ende den Inhalt des div-Containers in dem alle Paragraphen sind, per JS in einen String schreibe und danach ein Array mit den Paragraphen fülle. Das Prinzip selbst funktioniert soweit ganz gut.

Einziger Haken ist, dass wenn ich neue Werte in die Inputfelder eingebe, diese nicht im String stehen, sondern immer noch die alten.

Ich hab mir per JS mal den Inhalt eines der Inputfelder ausgeben lassen und siehe da:
Hier wird der neue Wert angezeigt.

Wie schaff ich es denn jetzt, dass die Werte auch mit in den String übernommen werden?


Das Problem ist hoffentlich klar geworden.
Schon mal besten Dank im voraus!
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...
Raiden ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.08.2009, 23:48  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zeig doch mal deinen Code
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 17.08.2009, 00:08  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard

Naja, ich glaub der Code bringt in dem Fall nicht viel, aber OK.
Ich versuchs mal auf die nötigen Zeilen zu reduzieren.

Hier das Konstrukt für die Ausgabe der Paragraphen im besagten div-Container (auf das Nötigste gekürzt):
PHP-Code:
<div id="vorschau">
<?php
    
// ermittel alle Fragen des ausgewählten Fragebogens
    
$fragen mysql_query("...");
        
    
// durchlaufe alle fragen
    
while( $frage mysql_fetch_array($fragen) ) {
                        
        echo ((
$frage["AntworttypID"]==4)?"<p id=\"headline\"":"<p").">";
?>
        <input type="text" value="<?=$frage["Fragetext"]?>" />
        <input class="delete" type="button" value="entfernen" 
            onclick="if( window.confirm('M&ouml;chten Sie diese Frage wirklich aus der Vorschau entfernen?') )  
                this.parentNode.parentNode.removeChild(this.parentNode); " />      
            
        // ==> Dieser Button gibt den neuen Wert aus!
        <input class="delete" type="button" value="&auml;ndern"
            onclick="alert(this.parentNode.childNodes[1].value);" />
        </p>
<?php    
    
}
?>
</div>
Die Speicherung als String:
PHP-Code:
    <h2 class="button">
        <
input id="fragebogen_speichern" name="fragebogen_speichern"
            
type="submit" value="Fragebogen speichern" 
            
onclick="document.getElementById('inhalt').value = document.getElementById('vorschau').innerHTML" />
    </
h2>
    <
input id="inhalt" name="inhalt" type="hidden" /> 
Danach wird $_POST["inhalt"] per explode() in ein Array gepackt und die einzelnen Paragraphen weiterverarbeitet.
Das Problem liegt aber davor, weil hier schon die alten Werte ankommen, obwohl die eigentlich (auch laut Test [siehe Kommentarzeile]) überschrieben sein sollten :-/
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...

Geändert von Raiden (17.08.2009 um 00:13 Uhr).
Raiden ist offline   Mit Zitat antworten
Alt 17.08.2009, 14:01  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

document.getElementById('inhalt').value = document.getElementById('vorschau').innerHTML
Da liegt der Fehler!
Du füllst die input-Elemente, bzw. deren value, per
PHP-Code:
<input type="text" value="<?=$frage["Fragetext"]?>" />
und greifst dies dann wieder ab.
Das value-Attribut wird momentan noch nicht geändert. Guck dir das am besten mal mit Firebug an.
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 17.08.2009, 14:07  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard

Ok, das ist schon mal gut zu wissen, danke!

Da ich in erster Linie mit Opera teste und entwickel hab ich Firebug noch nicht benutzt. Was genau meinst du soll ich mir denn mit Firebug anschauen?

Im Grunde brauch ich einen Weg die Variablen zu ändern, bevor ich sie wieder auslese. Hast du da noch einen Ansatz für mich? ich dachte nämlich bisher, dass die bloße Eingabe in das Inputfeld schon reichen würde.
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...
Raiden ist offline   Mit Zitat antworten
Alt 17.08.2009, 15:31  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Raiden Beitrag anzeigen
Da ich in erster Linie mit Opera teste und entwickel hab ich Firebug noch nicht benutzt. Was genau meinst du soll ich mir denn mit Firebug anschauen?
Du kannst dir auch mit den Opera Entwicklerwerkzeugen den Quelltext anzeigen lassen – brauchst also nicht unbedingt Firefox + Firebug.
Was du dort siehst, ist immer der tatsächlich aktuelle Quelltext (bzw. DOM), also auch neu per JavaScript hinzugefügte Elemente stehen mit drin.
Dort hättest du dann gesehen, dass der Browser nicht automatisch die value-Attribute der input-Elemente ändert.
Zitat:
Zitat von Raiden Beitrag anzeigen
Im Grunde brauch ich einen Weg die Variablen zu ändern, bevor ich sie wieder auslese.
Sorry, das habe ich nicht verstanden. Welche Variablen, wo ein und wo wieder auslesen?
Zitat:
Zitat von Raiden Beitrag anzeigen
Hast du da noch einen Ansatz für mich?
Am einfachsten währe es, jedem neu angelegten input-Element einen Namen zu geben (zum Beispiel name="fragetexte[]") und diese dann per AJAX POST an dein PHP-Script zu schicken.
Auf PHP Seite hast du dann ein Array das du durchlaufen kannst.
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 17.08.2009, 15:59  
Benutzer
 
Benutzerbild von Raiden
 
Registriert seit: 13.06.2009
Beiträge: 58
PHP-Kenntnisse:
Anfänger
Raiden befindet sich auf einem aufstrebenden Ast
Raiden eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von phpdummi Beitrag anzeigen
Du kannst dir auch mit den Opera Entwicklerwerkzeugen den Quelltext anzeigen lassen – brauchst also nicht unbedingt Firefox + Firebug.
Was du dort siehst, ist immer der tatsächlich aktuelle Quelltext (bzw. DOM), also auch neu per JavaScript hinzugefügte Elemente stehen mit drin.
Dort hättest du dann gesehen, dass der Browser nicht automatisch die value-Attribute der input-Elemente ändert.
Ja, den Quelltext und die DOM-Struktur hab ich mir mit Dragonfly (Opera-Tool) schon angesehen und auch versucht Fehler zu finden.
Genau dabei bin ich zu der Einsicht gekommen, dass die input-values nicht durch die eingabe von text neu beschrieben werden.

Zitat:
Zitat von phpdummi Beitrag anzeigen
Sorry, das habe ich nicht verstanden. Welche Variablen, wo ein und wo wieder auslesen?
Sorry, hab mich unklar ausgedrückt.
Mein Problem ist ja, dass, obwohl ich neuen Text in die schon gefüllten Input-Felder eingebe, dieser Text nicht in die DOM-Struktur übernommen wird. Zumindest denke ich das, weil beim Auswerten des Skripts noch die alten Werte drin stehen. Nur die Direktprüfung via alert(myInput.value) ergibt den neu eingetragenen Wert.

Zitat:
Zitat von phpdummi Beitrag anzeigen
Am einfachsten währe es, jedem neu angelegten input-Element einen Namen zu geben (zum Beispiel name="fragetexte[]") und diese dann per AJAX POST an dein PHP-Script zu schicken.
Auf PHP Seite hast du dann ein Array das du durchlaufen kannst.
Das stimmt.
Wenn ich nicht zusätzlich durch den Benutzer auch neue Fragen hinzufügen lassen würde (die ja noch keine ID haben), würde ich die FrageID aus der DB als Name verwenden um so die Texte korrekt abzufragen.

... Darüber hatte ich schon nachgedacht, aber es aus grade genanntem Grund verworfen. Doch je länger ich darüber nachdenke, desto mehr könnt ich den Kopf an die Wand klatschen
Es muss ja nicht die FrageID aus der DB sondern einfach eine fortlaufende Nummer sein ^^
Das einzige was ich dann noch beachten muss, sind die Funktionen zum hoch- und runter-verschieben.

Danke!
__________________
Es gibt Tage da verliert man und es gibt Tage da gewinnen die anderen ...
Raiden ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Variable wird nicht übernommen mastertnt PHP Tipps 2009 16 24.06.2009 23:56
[Erledigt] Session Variable wird nicht übernommen mastertnt PHP Tipps 2009 7 13.02.2009 00:18
[Erledigt] Cookie wird nicht gesetzt und Fehlermeldung! litterauspirna PHP Tipps 2008 7 07.08.2008 20:10
Wie wird ein Array-Index auf null gesetzt? Wilfer PHP Tipps 2008 4 17.07.2008 11:43
Umlaute ä,ö,ü und ß werden beim SQL Import nicht übernommen Plague Datenbanken 7 17.09.2007 17:28
Variable aus importierte Datei nicht übernommen nieselfriem PHP Tipps 2006 3 28.05.2006 11:34
auto_increment wird nicht übernommen snatch-ic Datenbanken 12 27.04.2006 16:45
Session-Cookie wird nicht gesetzt, ohne Fehlermeldung Dr_Enquinox PHP Tipps 2006 13 20.02.2006 07:33
Änderungen in der php.ini werden nicht übernommen Server, Hosting und Workstations 9 22.08.2005 12:27
Browser abfragen, ob ein Cookie gesetzt werden kann PHP Tipps 2005 9 11.04.2005 18:24
PHP Conten array nicht übernommen als PHP! PHP Tipps 2005 2 04.04.2005 18:27
gesetzt oder nicht gesetzt? wenn isset nicht reicht DerDesian PHP Tipps 2005 2 08.03.2005 11:40
Root passwort gesetzt PHP Tipps 2005 4 28.02.2005 10:58
cookie wird nicht gesetzt - ( vorher KEINE ausgabe ) PHP Tipps 2005 4 14.02.2005 13:34
variablen werden nicht übernommen PHP Tipps 2004-2 9 02.12.2004 17:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/javascript-ajax-und-mehr/58111-input-value-wird-neu-gesetzt-aber-nicht-uebernommen.html, input value wird nicht angezeigt, getelementbyid input value, input value, javascript input value, html input value wird nicht angezeigt, document.getelementbyid value, input value nicht angezeigt, automatische ajax abfrage bei gefüllten input feld, document.getelementbyid input value, php wert in input value, input value nicht übernommen, einen bestimmten datenbankwert per ajax abfragen, input value getelementbyid, dom input value, javascript input getelementbyid value, getelementbyid value input, javascript html getelementbyid value, this.input.value javascript, javascript value input form speichert nicht

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum