kostenloser Webspace werbefrei: lima-city


Dynamische Tabelle mit php auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Ich habe mir eine Dynamische Tabelle mit java erstellt. Diese tabelle möchte ich nun mittels php auslesen. Das funktioniert bei mir mit normalen Tabellen auch ganz gut, aber wie kann ich php bei solchen Tabellen sagen wie die einzelnen Textblöcke heißen. Ich habe zwar Namen angegeben aber die helfen mir ja bei mehereren Spalten nicht.

    kann mir jemand helfen?

    Hier der Code:
    <html>
    <head>
    <script language="JavaScript1.2">
    
    function delete_row ()
    {
       var Knoten = document.getElementById ('tabdim').lastChild;   //Letzte Zeile der Tabelle ermitteln
       document.getElementById ('tabdim').removeChild(Knoten);   //Letzte Zeile der Tabelle entfernen
    }
    
    function clone_this_dim(){
    
        NewRow = document.getElementById('tabdim').lastChild.cloneNode(true);
        document.getElementById('tabdim').appendChild(NewRow);
        
        var i = document.getElementById('tabdim').childNodes.length;
        
        for(j=0;j<document.getElementById('tabdim').lastChild.getElementsByTagName('input').length;j++){
            
            if(j == 0){
                var spalte = 'c_measures';
            }
            
            else if(j == 1){
                var spalte = 'tolerance';
            }
            
            else if(j == 2){
                var spalte = 'f_result';
            }
            
            else if(j == 3){
                var spalte = 'yesno';
            }
            
            var zeile = 'dim_';
            var newname = zeile + spalte + i;
            
            document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].setAttribute('name', newname);
            //var name = document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].name;
            document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].value='';
            document.getElementById('dim_zeilen').setAttribute('value', i);
            
        }
    }
    
    </script>
    </head>
    <body>
    <table cellpadding="0" cellspacing="0" border="1" id="names" bgcolor="#C0C0C0">
    <tr><td width="146">Bestell-Nr.</td><td width="224">Produktbezeichnung</td><td width="86">Preis in €</td></tr>
    </table>
    
    <form method="post" name="test">
    <table cellpadding="0" cellspacing="0" border="1" id="tabdim">
    
    
    
                        <tr>
                               <td align="center"><font size="1"><input type="text" name="bestellnr1" size="20"></font></td>
                            <td align="center"><font size="1"><input type="text" name="bezeichnung1" size="33"></font></td>
                            <td align="center"><font size="1"><input type="text" name="preis1" size="10"></font></td>
                   
                        </tr>
    
                    </table>
                    <input type="hidden" name="dim_zeilen" id="dim_zeilen" value="1"><input type="button" value=" + " onClick="clone_this_dim()"><input type="button" value=" - " onClick="delete_row()">
    </body>
    </html>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. wenn du mysql 5 hast, dann:
    1. du hast eine (unechte) datenbank, namens 'informations_schema', die du so mal inspizieren kannst:
    mysql> show tables from informations_schema;

    das ergebnis ist etwa so:
    +---------------------------------------+
    | Tables_in_information_schema          |
    +---------------------------------------+
    | CHARACTER_SETS                        |
    | COLLATIONS                            |
    | COLLATION_CHARACTER_SET_APPLICABILITY |
    | COLUMNS                               |
    | COLUMN_PRIVILEGES                     |
    | KEY_COLUMN_USAGE                      |
    | PROFILING                             |
    | ROUTINES                              |
    | SCHEMATA                              |
    | SCHEMA_PRIVILEGES                     |
    | STATISTICS                            |
    | TABLES                                |
    | TABLE_CONSTRAINTS                     |
    | TABLE_PRIVILEGES                      |
    | TRIGGERS                              |
    | USER_PRIVILEGES                       |
    | VIEWS                                 |
    +---------------------------------------+
    17 rows in set (0.00 sec)
    2. in 'TABLES' und 'COLUMNS' findest deine informationen. hoffe es hilft.
  4. c****s

    Solang du jedem Input in deiner Tabelle einen eineindeutigen Namen gibst, stehen die auch alle schön nacheinander im $_POST-Array von der aufgerufenen PHP-Seite.
    Könntest du vielleicht lauffähigen Sourcecode posten, dann kann ich wahrscheinlich auch die Lösung dazu posten. (Beim Code fehlt ja die Hälfte, kein Submit, kein </form>, etc.).

    EDIT:
    Ich hab das ganze mal nachgebaut und zumindest unter Firefox funktionierts:

    Das ist die HTML-Seite:

    <html>
    	<head>
    		<title></title>
    		<script language="javascript">
    			function onAdd ()
    			{
    				table = document.getElementById ("dyntable");
    				table.appendChild (table.rows [1].cloneNode (true) );
    				count = table.rows.length - 1;
    				for (i = 0; i < 3; i++)
    					table.rows [count].cells [i].firstChild.name = table.rows [count].cells [i].firstChild.name.split (":") [0] + ":" + count;
    			}
    			
    			function onRemove ()
    			{
    				table = document.getElementById ("dyntable");
    				if (table.childNodes.length > 2)
    					table.removeChild (table.lastChild);
    			}
    		</script>
    	</head>
    	<body>
    		<form action="order.php" method="post">
    			<table id="dyntable">
    				<tr>
    					<th>Bestellnummer</th>
    					<th>Produkt</th>
    					<th>Preis</th>
    				</tr>
    				<tr>
    					<td><input type="text" name="no:1"></td>
    					<td><input type="text" name="product:1"></td>
    					<td><input type="text" name="price:1"></td>
    				</tr>
    			</table>
    			<p><a href="javascript:onAdd()">add row</a></p>
    			<p><a href="javascript:onRemove()">remove Row</a></p>
    			<p><input type="submit">
    		</form>
    	</body>
    </html>


    Und das die aufgerufene PHP-Seite:

    <?php
    	print_r ($_POST);
    ?>


    Das ganze kannst du dir hier http://census.lima-city.de/dyntable.html ankucken.

    cu

    Beitrag zuletzt geändert: 29.7.2009 20:16:38 von census
  5. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Ersteinmal vielen Dank für die super antworten, jedoch meine ich etwas anderes.
    Wie man diese Zeilen und Spalten nummeriert war mir klar, jedoch beim auslesen bzw eintragen in die mysql Datenbank habe ich das Problem. Wie kann ich php sagen das er selber gucken soll, wieviele Zeilen es sind und diese dann eintragen.
    Er soll dann nur die Zeilen die auch wirklich hinzugefügt sind eintragen.
  6. c****s

    OK, ich hab die order.php wir folgt umgebaut, so dass sie SQL-Statements liefert. Die solltest du dann natürlich nicht mit echo ausgeben, sondern gegen deine Datenbank laufen lassen.

    <?php
    	$values = array ();
    	foreach ($_POST as $key => $val)
    	{
    		$tokens = split (":", $key);
    		if (! array_key_exists ($tokens [1], $values) )
    			$values [$tokens [1] ] = array ();
    		$values [$tokens [1] ] [$tokens [0] ] = $val;
    	}
    	
    	foreach ($values as $val)
    	{
    		$query = "insert into tblBestellung (bestellnummer, produkt, preis) values ('" .
    			$val ["no"] . "', '" .
    			$val ["product"] . "', " .
    			$val ["price"] . ")";
    		echo "<p>$query</p>";
    	}
    ?>


    Das Ganze kannst du hier http://census.lima-city.de/dyntable.html live sehen.
  7. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Also so ganz bekomme ich das noch nicht hin.

    Sieht jemand den fehler?

    Hier mal die kompletten codes:

    index.php (Tabelle):
    <html>
    <head>
    <title>Zero Bestellformular</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript1.2">
    
    function delete_row ()
    {
       var Knoten = document.getElementById ('tabdim').lastChild;   //Letzte Zeile der Tabelle ermitteln
       document.getElementById ('tabdim').removeChild(Knoten);   //Letzte Zeile der Tabelle entfernen
    }
    
    function clone_this_dim(){
    
        NewRow = document.getElementById('tabdim').lastChild.cloneNode(true);
        document.getElementById('tabdim').appendChild(NewRow);
        
        var i = document.getElementById('tabdim').childNodes.length;
        
        for(j=0;j<document.getElementById('tabdim').lastChild.getElementsByTagName('input').length;j++){
            
            if(j == 0){
                var spalte = 'c_measures';
            }
            
            else if(j == 1){
                var spalte = 'tolerance';
            }
            
            else if(j == 2){
                var spalte = 'f_result';
            }
            
            else if(j == 3){
                var spalte = 'yesno';
            }
            
            var zeile = 'dim_';
            var newname = zeile + spalte + i;
            
            document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].setAttribute('name', newname);
            //var name = document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].name;
            document.getElementById('tabdim').lastChild.getElementsByTagName('input')[j].value='';
            document.getElementById('dim_zeilen').setAttribute('value', i);
            
        }
    }
    
    </script>
    </head>
    <body>
    <form name="bestellformular1" action="send.php" method="post">
    <img src="Logo.gif" ALIGN="RIGHT" width=200px>
    
    
    <h1>Bestellformular</h1>
    
    <br><br><br/><hr><br/>
    
    <b><u>Kundendaten:</b></u><br><br>
    
    
    <b>Name:</b><input type="text" name="name"><br><br>
    
    <b>Firma:</b><input type="text" name="firma"><br><br>
    
    <b>Kundennummer:</b><input type="text" name="kundennummer"><br><br>
    
    
    
    
    
    <b><u>Rechnungsanschrift:</b></u><br><br>
    
    
    <b>Straße:</b><input type="text" name="strasse"><br><br>
    
    <b>PLZ:</b><input type="text" name="plz">&nbsp;<b>Ort:</b><input type="text" name="ort"><br><br>
    
    <b>Telefonnummer:</b><input type="text" name="telefon"><br><br>
    
    <b>Fax:</b><input type="text" name="fax"><br><br>
    
    
    <br/><hr><br/>
    
    <table cellpadding="0" cellspacing="0" border="1" id="names" bgcolor="#C0C0C0">
    <tr><td width="146">Bestell-Nr.</td><td width="224">Produktbezeichnung</td><td width="86">Preis in €</td></tr>
    </table>
    
    <form method="post" name="test">
    <table cellpadding="0" cellspacing="0" border="1" id="tabdim">
    
    
    
                        <tr>
                               <td align="center"><font size="1"><input type="text" name="bestellnr:1" size="20"></font></td>
                            <td align="center"><font size="1"><input type="text" name="bezeichnung:1" size="33"></font></td>
                            <td align="center"><font size="1"><input type="text" name="preis:1" size="10"></font></td>
                   
                        </tr>
    
                    </table>
                    <input type="hidden" name="dim_zeilen" id="dim_zeilen" value="1"><input type="button" value=" + " onClick="clone_this_dim()"><input type="button" value=" - " onClick="delete_row()">
    
    
    <br><br>
    <input type="reset" value="Zurücksetzen"><input type="submit" value="Senden">
    
    
    </form>
    </body>
    </html>


    Hier die send.php:

    <?php
    //die Konfigurationsdateien lesen
    error_reporting(E_ALL);
    include "inc/config.php";
    
    //Datebnbanklogin
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    
    
    
    //Parameter holen
    $name = htmlentities($_POST['name']);
    $firma = htmlentities($_POST['firma']);
    $kundennummer = htmlentities($_POST['kundennummer']);
    $strasse = htmlentities($_POST['strasse']);
    $plz = htmlentities($_POST['plz']);
    $ort = htmlentities($_POST['ort']);
    $telefon = htmlentities($_POST['telefon']);
    $fax = htmlentities($_POST['fax']);
    $values = array ();
            foreach ($_POST as $key => $val)
            {
                    $tokens = split (":", $key);
                    if (! array_key_exists ($tokens [1], $values) )
                            $values [$tokens [1] ] = array ();
                    $values [$tokens [1] ] [$tokens [0] ] = $val;
            }
    
            foreach ($values as $val)
    
    
    
    
    //Parameter prüfen
    if($name != "" && $plz != "") {
    //Eintrag escapen
     $eintragen1 = "INSERT INTO Zero_Kundendaten
    (id, date, name, firma, kundennummer, strasse, plz, ort, telefon, fax)
    VALUES(
    NOW(),
    '$name',
    '$firma',
    '$kundennummer',
    '$strasse',
    '$plz',
    '$ort',
    '$telefon',
    '$fax'
    )
    ";
    
    $result = mysql_query($eintragen1) OR die(mysql_error());
    }
    if($result) {
     $eintragen2 = "INSERT INTO Zero_Bestellungen
    (kundennummer, bestellnr, produktbezeichnung, preis, id, date)
    VALUES(
    NOW(),
    $val ["bestellnr"] . "', '" .
    			$val ["bezeichnung"] . "', " .
    			$val ["preis"] . ")";
    
    
    $resultb = mysql_query($eintragen2) OR die(mysql_error());
    }
    else {
    if($name == "") {
    echo "Du musst einen Eintrag schreiben.";
    }
    if($plz == "") {
    echo "Du musst einen Benutzernamen eingeben";
    }
    }
    ?>
  8. c****s

    Das kann auch nicht gehen. Du hast ungesehen meinen PHP code kopiert.
    Mein PHP-Code funktioniert mit meiner Tabelle zusammen und nicht mit deiner. Nicht einfach nur kopieren sondern auch anpassen. Wie willst du den an Doppelpunkten splitten, wenn du gar keine Doppelpunkte in deinen IDs hast?
    Und das foreach ($values as $val) steht auch völlig allein und verloren in der Pampa rum.
  9. 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!