Dynamische Tabelle

Buba235

Erfahrenes Mitglied
Hallo Leute!


Ich hab mal wieder ein Problem und keine Lösung dafür... Vielleicht könnt ihr mir da helfen! Also ich hab eine Eingabemaske mit 10 verschiedenen Eingabemöglichkeiten (Name1, Name2, Name3, Name4, Name5, Name6, Name7, Name8, Name9, Name10), einem Zurücksetzen Button und einem Snden Button. Ich möchte jetzt eine kleine Textbox einfügen (hab ich schon gemacht), in der man eine Zahl schreiben kann. Schreibt man z.B. 10 in diese Textbox und klickt dann auf den Button daneben, dann soll in der Eingabemaske alles ganz normal angezeigt werden, nur die Eingabemöglichkeit Name6 soll dann insgesamt 10 mal dargestellt werden. Jetzt zu meiner Frage: Wie mach ich das denn überhaupt? Habt ihr da ne Ahnung?
Hier mal mein Code:

PHP:
<html>
   <head>
      <title>Eingabemaske - Datensatz anlegen</title>
   </head>

   <style type="text/css">
      td {
        font-size: 8pt;
      }
   </style>
   
</head>

<body>

<H3>Tabellen editieren</H3>
Bitte tragen Sie die Daten in die vorhergesehenen Felder ein und klicken Sie
anschließend auf den Button <u>"Datensatz anlegen"</u>.<p>
<link rel="stylesheet" type="text/css" href="http://2.9.153.47/irmonitor_neu/stylesheet/irmonitor.css">


<table border = "0">
    <form method = "GET" name = testform action = "op_view.php">
        <tr align = "center">
            <td  align = "center" height = "20px">
                <input type = "text" size = "1"     id   = "textMCC" > Anzahl der Realms</input>
                <input type = "submit" value = "senden"></br>
            </td>
        </tr>
    </form>
</table>

<?php

    $id = $_GET['id'];

    //Verbindung mit Datenbank herstellen
	$conid = mysql_connect("2.9.153.47", "root", "root") or die ("Datenbankserver nicht gefunden");

    //Datenbankauswählen
    mysql_select_db("wlan") or die ("Datenbank nicht gefunden");

    //Das braucht man glaub ich gar net!!
    $queryA = "select * from ip_data where ID = '$id'";

    //Query an MYSQL
    $result = mysql_query($queryA);
    $db=mysql_fetch_assoc($result);
?>

<form name="eingabe.php" action="eingabe_insert.php" method="post">
<table align="center" border="1" bordercolor="#666666" cellpadding="2" cellspacing="0" width="500">

    <tr bgcolor=#DDDDDD>
        <td align="center" colspan="4"><b>Datensatz anlegen</b></td>
    </tr>

    <tr bgcolor=#FF4040>
        <td align="left" valign="top" height="32">MCC (immer 3-stellig)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2" >
        <input name="MCC" size="1" maxlength="3" tabindex="1" value="<?php echo $db['MCC']; ?>"></td>
    </tr>

    <tr bgcolor=#FF4040>
        <td align="left" valign="top" height="32">MNC (immer 3-stellig)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2" >
        <input name="MNC" size="1" maxlength="3" tabindex="1" value="<?php echo $db['MNC']; ?>"></td>
    </tr>

    <tr bgcolor=#FF4040>
        <td align="left" valign="top" height="32" width="319">IRNetzbetreiber (z.B. Internet WLAN)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input name="IRNetzbetreiber" size="25" maxlength="50" tabindex="1" value="<?php echo $db['IRNetzbetreiber']; ?>"></td>
    </tr>

    <tr bgcolor=#FF4040>
        <td align="left" valign="top" height="32" width="319">Land</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input name="Land" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Land']; ?>"></td>
    </tr>

    <tr bgcolor=#00FFFF>
        <td align="left" valign="top" height="32" width="319">Ln_Operator</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input name="Ln_Operator" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Ln_Operator']; ?>"></td>
    </tr>

     <tr bgcolor=#00FFFF>
        <td align="left" valign="top" height="32" width="319">Ln_Country</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input name="Ln_Country" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Ln_Country']; ?>"></td>
    </tr>

    <tr bgcolor=#CAFF70>
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input type="text" name="Realm" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>
    </tr>

    <tr bgcolor=#98FB98>
        <td align="left" valign="top" height="32">Prefix (z.B. /IPASS)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input type="text" name="Prefix" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Prefix']; ?>"></td>
    </tr>

    <tr bgcolor=#FFA500>
        <td align="left" valign="top" height="32">IP-Adresse (z.B. 192.168.0.1)</td>
        <td align="left" valign="top" height="32" witdh ="692" colspan="2">
        <input name="IP_Adresse"  size="25" maxlength="20" tabindex="1" value="<?php echo $db['IP_Adresse']; ?>"</td>
    </tr>

    <tr bgcolor=#FFA500>
        <td align="left" valign="top" height="32">WBA (0, 1 oder 2)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2" >
        <input name="WBA" size="1" maxlength="1" tabindex="2" value="<?php echo $db['WBA']; ?>"></td>
    </tr>

    <tr bgcolor=#DDDDDD>
        <td align="center" width="319" >
        <input type="reset" name="reset" value="zurücksetzen" tabindex="25"></td>
        <td align="center" >
        <input type="hidden" name="id" value="<?php echo $_GET['id'] ?>">
        <input type="submit" name="anlegen" value="Datensatz anlegen" tabindex="26"></td>
    </tr>

</table>


<p><U><b>Folgende Dinge sind zu beachten:<p></U></b>
<li>MCC, MNC, IRNetzbetreiber, Land, Ln_Operator und Ln_Country sind <b>immer</b> zu befüllen! Außer für einen Netzanbieter sind mehrere Realms
vorhanden. Sollte dies der Fall sein, so kann in der Textarea die Anzahl der Realms eingetragen werden!<br></li>
<li>Wenn Ln_Operator oder Ln_Country ausgefüllt wurde, so <b>muss</b> das andere Feld ebenfalls befüllt werden!<br></li>
<li>Wenn die IP-Adresse oder das Feld WBA befüllt wurde, so <b>muss</b> das jeweilige andere Feld ebenfalls befüllt werden!<br></li>
<li>Wenn das Feld Realm befüllt wurde, so kann das Feld Prefix <b>nicht</b> befüllt werden und umgekehrt!<br></li>
<li>Die Farben kennzeichnen die Felder, die zusammengehören und somit zusammen ausgefüllt werden müssen!</li>
<p align="center"><font face="Arial" size="1">V 1.3 (by ErstellerTOps 56-D)</font></p>
</form>
</body>
</html>


Gruß
Buba
 
Ich nehme mal an, dass op_view.php der Name der Datei ist, in dem die Eingabemaske liegt, ansonsten müsstest du das in dem Formular, in dem man die Anzahl realms angeben kann, anpassen...
Dann so:
PHP:
...
     <tr bgcolor=#00FFFF>
        <td align="left" valign="top" height="32" width="319">Ln_Country</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input name="Ln_Country" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Ln_Country']; ?>"></td>
    </tr>

<?php
$realms = $HTTP_GET_VARS["textMCC"];
if (!isset($realms)) $realms=1;
for ($r=0; $r<$realms; $r++) {
?>
    <tr bgcolor=#CAFF70>
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input type="text" name="Realm" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>
    </tr>
<?php } ?>

    <tr bgcolor=#98FB98>
        <td align="left" valign="top" height="32">Prefix (z.B. /IPASS)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input type="text" name="Prefix" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Prefix']; ?>"></td>
    </tr>
...
 
Hallo!


Danke für die Antwort, nur leider klappt das nicht so. Es ändert sich leider an meiner Tabelle gar nichts. Ich hab alle Änderungen angepasst, aber nach dem Absenden der Anzahl wird die Tabelle immer noch genauso angezeigt wie vorher. Das soll aber nicht sein. Nach dem Absenden sollen mehrere Zeilen mit Realms vorhanden sein. Könnt ihr mir da helfen?



Gruß
Buba
 
Hmm und wieder das selbe *G*
@DeeJTWorK das was du machst ist die Variable immer wieder zu überschreiben ob das sin der Sache ist? G
Realm im HTML hatt zwar immer nen anderen Wert aber PHP bekommt nur das letzte Feld übermittelt also den Letzen Wert der Datenbank


also
Du kannst in HTML auch Arrays mehr oder wenniger für PHP schon vordefinieren
dazu musst du dir einen Namen aussuchen

<input type="text" name="blub[]" value="irgend nen wert">

auf php seite gibt es dann die Variable blub allerdings und das ist der Vorteil an dem ganzen dieses mal als Array.

und da blub[] als Array nun da ist kannste auch auf die Werte zugreifen

HTML:
<input type="text" name="blub[]" value="irgend nen wert1">
<input type="text" name="blub[]" value="irgend nen wert2">
<input type="text" name="blub[]" value="irgend nen wert3">
<input type="text" name="blub[]" value="irgend nen wert4">
<input type="text" name="blub[]" value="irgend nen wert5">

PHP:
$blub = $_REQUEST['blub']; // oder get bzw post is ja egal
 
for($i = 0; $i < count($blub); $i++){
echo $blub[$i]."<br>";
}

verstanden was gemeint wird?
 
Zuletzt bearbeitet:
Hallo!

Also so ganz hab ich das nicht verstanden. Ich hab begriffen was mit den Arrays gemeint ist und warum das da aufgerufen wird, aber ich weiß nicht wie ich das in meinen Code einbinden kann. Ich hab es so gemacht:

PHP:
...

    <tr bgcolor=#CAFF70> 
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td> 
        <td align="left" valign="top" height="32" width="692" colspan="2"> 
        <input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td> 
    </tr> 

<?php
    $Realm = $_POST['Realm'];
    for ($i = 0; $i < count($Realm); $i++) {
        echo $Realm[$i]."<br>";
    }
?>


Also eigentlich hab ich das so gemacht wie du es mir gezeigt hast - es geht nur nicht. Was mach ich denn da falsch?
 
nur die klammer [] beim Namen fehlt und dann haste auf deiner seite zich Realms mit unterschiedlichen Werten in einem Array
ausserdem musste in deinem Beispiel auch auf das Array von der Datenbank oder was auch immer zugreifen sonst wirste ja nie mehrere inputs bekommen
in deinem Beispiel

<input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>

hast du ja nur genau einen einzigen erstellt :) deswegen gibt er unten auch nur einen einzigen aus
 
Zuletzt bearbeitet:
Hallo!


Also ich hab das jetzt mal so gemacht:

PHP:
... 

    <tr bgcolor=#CAFF70>  
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>  
        <td align="left" valign="top" height="32" width="692" colspan="2">  
        <input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>  
    </tr>  

<?php 
    $Realm[] = $_POST['Realm']; 
    for ($i = 0; $i < count($Realm); $i++) { 
        //echo $Realm[$i]."<br>"; 
?>
        <tr bgcolor=#CAFF70>  
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>  
        <td align="left" valign="top" height="32" width="692" colspan="2">  
        <input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>  
    </tr> 
        <tr bgcolor=#CAFF70>  
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>  
        <td align="left" valign="top" height="32" width="692" colspan="2">  
        <input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>  
    </tr> 
        <tr bgcolor=#CAFF70>  
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>  
        <td align="left" valign="top" height="32" width="692" colspan="2">  
        <input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>  
    </tr> 
<?php    }  ?>
?>

Jetzt ist es eben der Fall, dass immer 4 solche Zeilen in der Tabelle angezeigt werden. Das soll aber nicht sein - es soll ja immer nur eine Zeile angezeigt werden und erst dann genauso viele Zeilen, wie eingegeben werden. Mit diesem Button:

PHP:
<table border = "0"> 
    <form method = "GET" name = testform action = "eingabe.php"> 
        <tr align = "center"> 
            <td  align = "center" height = "20px"> 
                <input type = "text" size = "1"     id   = "textRealm" > Anzahl der Realms</input> 
                <input type = "submit" value = "senden"></br> 
            </td> 
        </tr> 
    </form> 
</table>
 
Eigentlich fand ich meine Lösung ganz gut, nur dass ich eben die eckigen Klammern vergessen hab. Also so:
PHP:
<?php
$realms = $HTTP_GET_VARS["textRealm"];
if (!isset($realms)) $realms=1;
for ($r=0; $r<$realms; $r++) {
?>
    <tr bgcolor=#CAFF70>
        <td align="left" valign="top" height="32">Realm (z.B. @irgendwas.de)</td>
        <td align="left" valign="top" height="32" width="692" colspan="2">
        <input type="text" name="Realm[]" size="25" maxlength="50" tabindex="1" value="<?php echo $db['Realm']; ?>"></td>
    </tr>
<?php } ?>
Das müsste dann soweit tun. Wie speicherst du denn die Realms in der Datenbank? Zumindest bei dieser Anzeige wird immer wieder der gleiche Realm ausgegeben:
PHP:
<?php echo $db['Realm']; ?>
 
Zurück