kostenloser Webspace werbefrei: lima-city


Formular mit PHP erstellen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Hallo leute ich habe mal wieder ein Problem und hoffe das ihr mir helfen könnt.
    Also ich möchte via php ein Forular erstellen dh in einer while-schliefe. Ich habe um die formulare zu unterscheiden als name eine id genommen welche ich aus einer Datenbank auslese dh es gbit zu jeder ausgegebnene Zelle der Datenbank ein formular.
    Hier ersteinmal der Code:
    <?php
    		$sql = ("SELECT * FROM layout WHERE `userid` = '$uid'");
    		$lql = mysql_query($sql) or die(mysql_error());
    		while($lpl = mysql_fetch_assoc($lql)){
    
    			echo"
    			<form action=\"javascript:get(document.getElementById('$id'));\" name=\"$id\" id=\"$id\">
    			<input type=\"text\" title=\"url:.\" value=\"$lpl[content]\" class=\"wi40\" id=\"rss_url\"/>
    			<input type=\"text\" title=\"menge\" value=\"$id=$lpl[anzahl_news]\" class=\"wi40\" id=\"anzahl_news\"/>
    			<input type=\"text\" title=\"id\" value=\"$lpl[id]\" class=\"wi40\" id=\"id\"/>
    			<br>
    			<input type=\"submit\" name=\"$id\" value=\"Normal Submit Button\"id=\"$id\">
    			</form>
    			<br><br>
    			</div>";
    			?>

    So die forumlare werden erstellt jetzt habe ich allerdings das problem das egal auf welchen Button ich klicke immer das zu letzt ausgegeben fomular übergeben wird. Alle formulare werden an einen ajax post gesendet
    <script type="text/javascript" language="javascript">
       var http_request = false;
       function makePOSTRequest(url, parameters) {
          http_request = false;
          if (window.XMLHttpRequest) { // Mozilla, Safari,...
             http_request = new XMLHttpRequest();
             if (http_request.overrideMimeType) {
             	// set type accordingly to anticipated content type
                //http_request.overrideMimeType('text/xml');
                http_request.overrideMimeType('text/html');
             }
          } else if (window.ActiveXObject) { // IE
             try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
          }
          if (!http_request) {
             alert('Cannot create XMLHTTP instance');
             return false;
          }
          
          http_request.onreadystatechange = alertContents;
          http_request.open('POST', url, true);
          http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          http_request.setRequestHeader("Content-length", parameters.length);
          http_request.setRequestHeader("Connection", "close");
          http_request.send(parameters);
       }
    
       function alertContents() {
          if (http_request.readyState == 4) {
             if (http_request.status == 200) {
                //alert(http_request.responseText);
                result = http_request.responseText;
                document.getElementById('myspan').innerHTML = result;            
             } else {
                alert('There was a problem with the request.');
             }
          }
       }
       
       function get(obj) {
    var poststr = "rss_url=" + escape(encodeURI(
    document.getElementById("rss_url").value )) +"&anzahl_news="+
    escape(encodeURI( document.getElementById("anzahl_news").value )) 
    +"&id=" +escape(encodeURI( document.getElementById("id").value ));
          makePOSTRequest('post.php', poststr);
       }
    </script>

    Ich hoffe ihr versteht was ich mein und könnt mir helfen mein problem zu lösen
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    Hi,

    kann ich dir ganz klar Sagen, du greifst auf die Variable $id zu, die nicht existiert ;) Sollte stattdessen vermutlich $lpl['id'] heißen.
    Ausserdem vergisst du bei den Zugriffen auf das Array immer die Anführungzeichen beim Bezeichner.
    Korrekt:

    <?php
    		$sql = ("SELECT * FROM layout WHERE `userid` = '$uid'");
    		$lql = mysql_query($sql) or die(mysql_error());
    		while($lpl = mysql_fetch_assoc($lql)){
    
    			echo '<form action="javascript:get(document.getElementById(' . $lpl['id'] . '));" name="' . $lpl['id'] . '" id="' . $lpl['id'] . '">';
    			echo '<input type="text" title="url:." value="' . $lpl['content'] . '" class="wi40" id="rss_url">';
    			echo '<input type="text" title="menge" value="'$lpl['anzahl_news']. '" class="wi40" id="anzahl_news">';
    			echo '<input type="text" title="id" value="' . $lpl['id'] , '" class="wi40" id="id"/>';
    			echo '<br>
    			<input type="submit" name="' . $lpl['id'] . '" value="Normal Submit Button" id="' . $lpl['id'] . '">
    			</form>
    			<br><br>
    			</div>';
    			?>
  4. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Ich habe deine idee mal probiert allerdings ohne erfolg ich habe die $id eigl in ieriner vairable gespeichert also:
    $id=$lpl[id]
    hab halot nit den ganzen code gepostet.

    Ich glaube mal das der Fehler eher hier liegt:
    function get(obj) {
    var poststr = "rss_url=" + escape(encodeURI(
    document.getElementById("name").value )) +"&anzahl_news="+
    escape(encodeURI( document.getElementById("menge").value )) 
    +"&id=" +escape(encodeURI( document.getElementById("id").value ));
          makePOSTRequest('post.php', poststr);
       }

    die daten werden ja über
    document.getElementById("name").value
    bekommen allerdings hat doch jedes Formular die gleichen ids bei diesen Feldern und so kann doch javascript nicht unterscheiden von welchem forular er nun diese Felder nehmen soll
    ich hoffe ihr versteht wie ich das meine und könnt mir eine lösung meines problemes geben.
  5. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    OK, jetzt seh ich das Problem, sorry.

    Du verwendest die ID's (menge_news, name...) mehrfach. ID's müssen immer eindeutig sein. Sonst weiß getElementById ja nicht welches Element du ansprechen willst. Häng mal an deine ID's die $id an, also z.B.
    echo '<input type="text" title="url:." value="' . $lpl['content'] . '" class="wi40" id="rss_url' . $id .'">';


    Der get()-Funktion Übergibst du dann kein Element sondern nur die ID:

    echo '<form action="javascript:get(' . $lpl['id'] . ');" name="' . $lpl['id'] . '" id="' . $lpl['id'] . '">';


    Und in der get()-Methode greifst du dann folgendermaßen auf die Elemente zu:
    function get(id) {
    var poststr = "rss_url=" + escape(encodeURI(
    document.getElementById("name" + id).value )) +"&anzahl_news="+
    escape(encodeURI( document.getElementById("menge" + id).value )) 
    +"&id=" +escape(encodeURI( document.getElementById("id" + id).value ));
          makePOSTRequest('post.php', poststr);
       }


    Und Vorsicht: Deine Form hat auch die selbe ID wie dein Submit-Button, nämlich die $id
  6. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Hey das funktioniert jetzt alles Spitze besten dnak erstmal
    Kannst du mir vlt noch helfen und mir sagen wie in diesen code eine checkbox auswertung mache sodass nur dann wenn die checkbox true ist das element mit überleifert wird ?
    function get(id) {
    var poststr = "rss_url=" + escape(encodeURI(
    document.getElementById("rss_url"+id).value )) +"&anzahl_news="+
    escape(encodeURI( document.getElementById("anzahl_news"+id).value )) 
    +"&id=" +id +"&check="+
    escape(encodeURI( document.getElementById("check"+id).value ));
          makePOSTRequest('saverss.php', poststr);
       }

    Bei dem beispiel bekomme ich nur den name der checkbox überliefert
    Ich habe diesen Code mir gedacht aber weiss nicht wie ich ihn einbauen soll.
    if(document.getElementsByid("check"+id).checked == true)


    nikic: Code-Tags korrigiert.

    Beitrag zuletzt geändert: 18.10.2009 11:54:30 von nikic
  7. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    Wenn ich es richtig verstanden habe willst du den Teil &check=... nur an den String anhängen, wenn die checkbox angehakt ist.Das kannst du einfach mit einer if-Abfrage machen, die nötige abfrage hast du ja schon ;)

    function get(id) {
     var poststr = "rss_url=" + escape(encodeURI(
     document.getElementById("rss_url"+id).value )) +"&anzahl_news="+
     escape(encodeURI( document.getElementById("anzahl_news"+id).value )) 
     +"&id=" +id;
     if(document.getElementsByid("check"+id).checked == true) {
      poststr += "&check="+ escape(encodeURI( document.getElementById("check"+id).value ));
     }
     makePOSTRequest('saverss.php', poststr);
    }
  8. Autor dieses Themas

    goldschau

    goldschau hat kostenlosen Webspace.

    Ich habe dne code gerade mal probiert so wie du ihn geschrieben hast allerdings bekomme ich da gar keine übertragung mehr zu stande. mir ist eigl egal ob ich nur dann an den string anhänge wenns postiv ist das eigentliche was ich will ist das ich auf der php seite auf die ich übertrage herrausfinde ob die checkbox betätigt wurde oder nicht.
  9. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    Sorry, hatte einen Fehler im Code, die funktion heißt getElementById() statt getElementsById() (also Element singular)
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!