SQL Daten von Selectbox an Textfelder übergeben

ctacont

Grünschnabel
Hallo,

ich brauche unbedingt Hilfe.

Ich hab bisher das gemacht:
PHP:
<?php

$sqlhost="localhost";
$sqluser="root";
$sqlpw="";
$sqldb="personal";

$sqlbf=mysql_connect($sqlhost,$sqluser,$sqlpw)or die (mysql_error()."Keine Verbindung zur DB möglich");
mysql_select_db($sqldb,$sqlbf)or die (mysql_error()."Datenbank existiert nicht");

$sqlbefehl ="Select ID,Vorname,Nachname From inhalte";
$ergebnis = mysql_query($sqlbefehl)or die(mysql_error());

$arrData = array();
while ($row = mysql_fetch_array($ergebnis))
{
    $arrData[] = $row;
}
?> 

<html>
   <head>

   <script type="text/javascript">

                             function SelectAuswahl ()
                                {
                                      var arrData=new Array();
                                           <?php
                                               foreach($arrData as $nI => $nId)
                                               echo "arrData[".$nI."]=".$nId[ID].$nId[Vorname].";<br>";
                                            ?>
                                }
    </script>

   </head>
   <body>
      <form name="Testform" action="">
         <select name="Auswahl" size="10" onchange="SelectAuswahl()">
         <?php
         // Daten in Select-Box
            foreach($arrData as $nId)
               echo '<option>'.$nId['ID']." - ".$nId['Vorname']." - ".$nId['Nachname']."</option>\n";
         ?> 
         </select>
      
    ID : <input type="text" name="id" /> 
    Vorname :  <input type="text" name="vorname" />
    Nachname :  <input type="text" name="nachname" />
       </form> 
         
   </body>
</html>


Ich versuche Dateninhalte von der Select-Box (Inhalte aus Datenbank),
die Selektiert und mit "onchange" ausgeführt werden, an die Textfelder zu übergeben,
aber vergebens... bitte um Hilfe.

Die Textfelder sind diese:
PHP:
    ID : <input type="text" name="id" /> 
    Vorname :  <input type="text" name="vorname" />
    Nachname :  <input type="text" name="nachname" />


Ich bin für jede Hilfe sehr sehr dankbar!



lg ctacont
 
Ich hatte vorhin diesen Abschnitt so:
PHP:
<?php
        foreach($arrData as $nI => $nId)
        echo "arrData[".$nI."]=".$nId.";\n";
      ?> 
      var nIdSel=document.Testform.Auswahl.selectedIndex;
      if(nIdSel>-1)
         if(nIdSel<arrData.length){
             
            document.Testform.id.value = arrData[nIdSel];
            document.Testform.vorname.value = arrData[nIdSel];
            document.Testform.nachname.value = arrData[nIdSel];
 
         }

Natürlich werde ich mich umschauen.
Aber der Teil ist für mich wirklich sehr wichtig.
Es wär super, wenn Du mir helfen könntest.


lg ctacont
 
Du mischst da irgendwie Javascript und PHP.

Sollte es ev. so heissen?
PHP:
document.Testform.id.value = <?php echo arrData[nIdSel]; ?>;

Ich hab keine Ahnung was dein Javascript machen sollte.
 
Hallo,

ich hatte mal das geschrieben (funktionierender Code):
PHP:
<table>
<tr>
    
<td>
<?php

$sqlhost="localhost";
$sqluser="root";
$sqlpw="";
$sqldb="personal";

$sqlbefehl=mysql_connect($sqlhost,$sqluser,$sqlpw)or die (mysql_error()."Keine Verbindung zur DB möglich");
mysql_select_db($sqldb,$sqlbefehl)or die (mysql_error()."Datenbank existiert nicht");

$sqlbefehl ="Select * From inhalte";
$ergebnis = mysql_query($sqlbefehl)or die(mysql_error());
?>

<form name="formular" method="post" action="<?php echo $_SERVER[PHP_SELF]; ?>">
    <input type="submit" name="submit" value="SENDEN">
<select name="menu" size=10>  
<?php
while($row=mysql_fetch_array($ergebnis)){
      echo "<option value='".$row['ID']."'>".$row['ID']." : ".
                                             $row['Vorname']." - ".
                                             $row['Nachname'].

           "</option>";
    
}
?>
</select>
</form>
</td>

<td>
<?php

$sqlbefehl ="Select ID, Vorname, Nachname, Geschlecht From inhalte where ID = '$_POST[menu]' ";
$ergebnis = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);

while($row=mysql_fetch_array($ergebnis)){
echo
"ID        : ".$row['ID']. "<br>" . 
"Vorname  :".$row['Vorname']. "<br>" .
"Nachname :".$row['Nachname']. "<br>" .
" ";
}
?>
</td>

</tr>
</table>

Erkärung:
Ich selektiere in der Select-Box einen Sql-Datensatz.
Per Submit Button POSTE ich den Wert an die Textfelder (Anzeige gleich neben der Select - Box)

Meine Absicht ist, daß ich den Select - Inhalt nicht mit SUBMIT übermitteln möchte, sondern per "onchange".
Und hier habe ich meine Schwierigkeiten.


lg ctacont
 
Zuletzt bearbeitet:
Hallo yaslaw,

ich hab mir die ganze Sache mal angeschaut und versucht zu verstehen
mit AJAX.

Könntest du vielleicht bitte ein bisschen weiterhelfen. Ich komm durcheinander.
Nichts klappt!

lg ctacont
 
Also, ich habe bei mir das folgende script, das ich immer verwende

ajax.js
Java:
var httpObject = null;
var tagId;
var ajaxFileName = 'ajax.php';

// Get the HTTP Object
function getHTTPObject(){
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) return new XMLHttpRequest();
    else {
        alert("Your browser does not support AJAX.");
        return null;
    }
}

// Change the value of the outputText field
function setOutput(){
    if(httpObject.readyState == 4){
        document.getElementById(tagId).innerHTML = httpObject.responseText;
    }
}

// Implement business logic
function ajax(inFunctionName, inTagId, inArgList){


    httpObject = getHTTPObject();
    tagId = inTagId;

    var get = ajaxFileName + "?ajax=" + inFunctionName  + "&tagId=" + tagId + "&" + inArgList;

    if (httpObject != null) {
        httpObject.open("GET", get, true);
        httpObject.send(null);
        httpObject.onreadystatechange = setOutput;
    }
}

Dann hab ich eine Datei, die per php das resultat ausarbeitet
ajax.php
PHP:
function inlet(){
    $html = $_GET['newtext'];
    return $html;
}
$function = $_GET['ajax'];
echo $function();

und noch der Einbau auf deiner Seite
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <script type="text/javascript" src="ajax.js"></script>
    </head>
    <body>
        <div id="teststring">foo</div>
        <div align="center">
            <a href="javascript:ajax('inlet', 'teststring', 'newtext=bar');" title="test">
                test ajax
            </a>            
        </div>
    </body>
</html>
 
Zuletzt bearbeitet:
Zurück