Antworten auf deine Fragen:
Neues Thema erstellen

MySQL - Dynamische Eingabe

elyion_g2

Ach Jungs!?!

Hi Leute,

Ich suche nach einer Lösung um aus dynamisch vielen Formularen einträge in eine Datenbank zu machen:

PHP:
<form name="1" method="POST"><input name="titel"></form>
<form name="2" method="POST"><input name="titel"></form>
<form name="3" method="POST"><input name="titel"></form>

Es soll eigentlich pro formular eine Datenbank-Tabellen-Zeile angelegt werden.

Mein Problem : das ganze ist dynamisch - also die Anzahl der Formulare ist nicht festgelegt, sprich man kann keine array's vordefinieren.

Weiss jemand von euch Abhilfe?
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL - Dynamische Eingabe

Pro Formular?

Wenn du ein Formular absendest, wird exakt dieses an den Server geschickt. Du musst alle benötigten Daten in das gleiche Formular einbauen, sonst werden sie ignoriert.

Vermutlich willst du pro X (z.B. Kunde) eine Bearbeitungsmaske haben. Das musst du dann auch in einem einzigen Formular lösen und die einzelnen Datensätze mithilfe eindeutiger Bezeichner herausholen.


Duddle
 

dlogic

Allrounder

AW: MySQL - Dynamische Eingabe

Hm, ich verstehe dein Problem nicht ganz... pro DB Tabellen Zeile kann doch ein Formular gespeichert werden. Da eine Tabelle mit Spalten die einzelnen Parameter des Formulars abbilden und eine Zeile ein neues Formular ist...

Änderung: Ach so, es werden auf einer Seite mehrere <form> Tags generiert. Ja, diese müssen alle in einem einzelnen <form> Tag stehen. Wie duddle schon schrieb.

<form name="1" method="POST"action="xyz.php">
<input name="titel[1]" value="x" >
<input name="titel[2]" value="y" >
<input name="titel[3]" value="z" >

Die Generierung der Namen muss hierbei dynamisch erfolgen. Dann übergibst du dem SQL Insert Befehl jede einzelne ID mit den dazugehörigen Value Werten per foreach.
 
Zuletzt bearbeitet:

rafoldi

Aktives Mitglied

AW: MySQL - Dynamische Eingabe

So ganz habe ich Deine Frage nicht verstanden.

Also wenn dieses zutrifft dann stimme ich Duddle zu.
- Auf dem CMS sind mehrere verschiedene Kontaktformulare vorhanden.
- Verschiedene Kunden nutzen unterschiedliche Formulare.

da hilft meiner Meinung nach nur die maximal Lösung die bereits Duddle vorgeschlagen hat.

Liebe Grüße
Ralf
 

elyion_g2

Ach Jungs!?!

AW: MySQL - Dynamische Eingabe

Was für ein CMS?
--------------------------
Okey vielleicht mal ein ganz anderer Ansatz :


1. Ich erstelle per Javascript die Zeilen einer Tabelle, in dieser sind die Formular-Felder drin.

2. In jeder Zeile hat es 2 Formular-Felder : titel - inhalt

3. Alle Formularfelder "titel" in jeder Zeile haben den gleichen namen (da es in javascript ist, kann ich keine php-variablen einbauen, welche dann von der action.php gelesen werden, sonst wäre die dynamik kein problem..)


Das Problem dabei ist, dass es nicht für jede tabellen-zeile eine neue datenbank-tabellen-zeile anlegt.
Und ich habe eben keine fixe Anzahl an "javascript"-Tabellen-Zeilen


Ich hoffe es ist einigermassen verständlich, ich habe es zuerst versucht mit den einzelnen formularen zu erklären..


EDIT : Es wäre diesbezüglich kein Problem wenn ich eine Javascript-Variable in der action.php einlesen könnte... geht aber logischerweise nicht da schon das eigentliche javascript nicht in der selben datei liegt wie das php-script
 
Zuletzt bearbeitet:

dlogic

Allrounder

AW: MySQL - Dynamische Eingabe

Es gibt aber nur ein <form> Tag in welchem die input Felder drin sind oder?

Anm.: Alle Formularfelder "titel" in jeder Zeile haben den gleichen namen

Das macht sich nicht gut da jedem Input Feld eine eineindeutige ID und Name zugewiesen werden muss. Weil nur so sichergestellt werden kann das der richtige Value aus dem richtigen Feld kommt.
 
Zuletzt bearbeitet:

dlogic

Allrounder

AW: MySQL - Dynamische Eingabe

Okay, dann musst du einen dynamischen Namen pro Input Feld erzeugen. Weil nur so sichergestellt werden kann das der richtige Value aus dem richtigen Feld kommt.

<input type="text" name="bezeichnung[]" value="hier der wert" >
 

elyion_g2

Ach Jungs!?!

AW: MySQL - Dynamische Eingabe

Okay, dann musst du einen dynamischen Namen pro Input Feld erzeugen. Weil nur so sichergestellt werden kann das der richtige Value aus dem richtigen Feld kommt.

<input type="text" name="bezeichnung[]" value="hier der wert" >

das hatte ich auch schon überlegt - aber wie lese ich diesen dynamischen namen in der action.php ein?


EDIT : zumal ich keinen dynamischen namen erzeugen kann - weil es ja javascript und nicht php ist.... ;) .. Ich müsste diesen "Javascript-Dynamischen-Namen" in PHP als dynamischen-namen einfügen.. das geht nicht nach meinem wissensstand
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL - Dynamische Eingabe

3. Alle Formularfelder "titel" in jeder Zeile haben den gleichen namen (da es in javascript ist, kann ich keine php-variablen einbauen, welche dann von der action.php gelesen werden, sonst wäre die dynamik kein problem..)
Ich habe das Gefühl, du hast ein fundamentales Missverständnis vom Konzept "Variable", vielleicht auch von Formularen an sich und wie sie verarbeitet werden. Edit: ja, die Posts die während dieses Beitrags erzeugt wurden zeigen das sehr deutlich.

Du kannst problemlos mit JS beim Hinzufügen neuer Elemente deren Bezeichner auch dynamisch erzeugen. Mit PHP hat das überhaupt nichts zu tun. Edit: Bitte lies dir ein Grundlagen-Tutorial zu JS durch, wenn du damit hantieren willst.


Duddle
 

elyion_g2

Ach Jungs!?!

AW: MySQL - Dynamische Eingabe

Du kannst problemlos mit JS beim Hinzufügen neuer Elemente deren Bezeichner auch dynamisch erzeugen. Mit PHP hat das überhaupt nichts zu tun. Edit: Bitte lies dir ein Grundlagen-Tutorial zu JS durch, wenn du damit hantieren willst.


Duddle

Lesen schafft Verständnis!
Ich weiss wie man in javascript etwas dynamisch erzeugt. Und mein Problem hat sehrwohl mit PHP zu tun. Das Problem ist das ich nicht in javascript etwas dynamisch erzeugen kann - was ich eigentlich dann in einer .php datei einfügen muss - javascript geht nicht in php.


EDIT : Eine Variable bedeutet für mich nichts anderes als ein Array oder ein Teil eben das ausgeführt - eingetragen werden muss. Ich weiss das es das nicht ist, aber ich möchte schlicht nicht noch mehr sonderbegriffe lernen, da ich sie sowieso nur in diesem forum benötigen würde... (weil ich ja ansonsten weiss was ich meine..)
 
Zuletzt bearbeitet:

dlogic

Allrounder

AW: MySQL - Dynamische Eingabe

das hatte ich auch schon überlegt - aber wie lese ich diesen dynamischen namen in der action.php ein?

Hm... beim Übertragen des Formulars an die action.php wird der dynamisch angelegte Name+Index[] und alle anderen Werte eines jeden Input Felds automatisch in den POST Parameter geschrieben und von der action.php zum weiterverarbeiten entgegengenommen...

Was genau du da mit JS alles machst kann ich von hier aus nicht beantworten aber du wirst damit sicherlich HTML Elemente erzeugen... und dort kann man einfach so einen Index[] beim namen einen Input Felds erzeugen. Zudem muss für jedes Element ein eineindeutiger name verwendet werden ansonten hätte man ja name="1" mit Value 5 und name="1" mit Value 10 .. welcher Value soll hier nun für welchen namen gelten wenn beide gleich sind?
 

elyion_g2

Ach Jungs!?!

AW: MySQL - Dynamische Eingabe

Code:
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-upload fade">
        <td class="preview"><span class="fade"></span></td>
        <td class="name">{%=file.name%}<input name='titel' cols='30' rows='1' value='{%=file.name%}'></td>
        <td class="size"><input name='inhalt' cols='30' rows='1'></td>
        {% if (file.error) { %}
            <td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
        {% } else if (o.files.valid && !i) { %}
            <td>
                <div class="progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div>
            </td>
            <td class="start">{% if (!o.options.autoUpload) { %}
               <button class="btn btn-primary" style="display:none;">
                    <i class="icon-upload icon-white"></i>
                    <span>{%=locale.fileupload.start%}</span>
                </button>
            {% } %}</td>
        {% } else { %}
            <td colspan="2"></td>
        {% } %}
        <td class="cancel">{% if (!i) { %}
            <button class="btn btn-warning">
                <i class="icon-ban-circle icon-white"></i>
                <span>{%=locale.fileupload.cancel%}</span>
            </button>
        {% } %}</td>
    </tr>
{% } %}
</script>

Das ist das Javascript welches die Tabellenzeilen erzeugt. Weiteres kann ich leider nicht posten, den sonst müsste ich sämtliche dateien dazu listen.


wenn ich {%=file.name%} bei name="titel" so einfüge : name="titel{%=file.name%}" habe ich automatisch einen dynamischen wert. dieses "{%=file.name%}" weiss ich aber nicht wie bei php einbringen.
 
Zuletzt bearbeitet:

dlogic

Allrounder

AW: MySQL - Dynamische Eingabe

Entschuldige, das ich jetzt nicht zum 100% igen Antworten deines Posts komme da ich noch einen Termin habe. Aber vielleicht hilft dir das beigefügte Beispiel weiter....


PHP:
<html>
<head>
<title>Test</title>
<?php

echo nl2br(print_r($_POST, true)).'<br/>GET ';

</script>
</head>
<body>

<form method="post">
    <div>
        <input type="text" name="feld[]" value="erster Wert" />
        <input type="text" name="feld[]" value="zweiter Wert" />
        <input type="text" name="feld[]" value="dritter Wert" />
    <input type="submit">
</form>
</body>
</html>
Ach so, die Ausgabe nach dem Absenden zeigt die übermittelten POST Werte an... an welche php Datei du die auch immer übermitteltst...

Für eine Übermittlung/Eintragung in die Datenbank benötigst du eine Schleife...

PHP:
foreach ($_POST['feld'] as $id) { INSERT in DB }
 
Zuletzt bearbeitet:

elyion_g2

Ach Jungs!?!

AW: MySQL - Dynamische Eingabe

das hier ist sozusagen die "action.php"

PHP:
<?php
error_reporting(E_ALL | E_STRICT);

require('upload.class.php');

$upload_handler = new UploadHandler();

header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Content-Disposition: inline; filename="files.json"');
header('X-Content-Type-Options: nosniff');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: X-File-Name, X-File-Type, X-File-Size');

switch ($_SERVER['REQUEST_METHOD']) {
    case 'OPTIONS':
        break;
    case 'HEAD':
    case 'GET':
        $upload_handler->get();
        break;
    case 'POST':
        if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
            $upload_handler->delete();
        } else {
            $upload_handler->post();
			#Datenbankverbindung
mysql_connect("servermysql", "beispiel", "1234");
mysql_select_db("benutzer");
mysql_query("SET NAMES 'utf8'");

		#Insert Befehl mit Daten
		$insert = "INSERT INTO Beispiel(Name,Beschreibung)VALUES('$titel','$inhalt')" or die(mysql_error());
		#Zurücksetzen der Variablen
		$titel = '';
		$inhalt = '';
		$errormessage = '';
		$meldung= '';
		#Einfügend der Daten
		$result = mysql_query($insert);
        }
        break;
    case 'DELETE':
        $upload_handler->delete();
        break;
    default:
        header('HTTP/1.1 405 Method Not Allowed');
}

EDIT : es ist sozusagen ein multiple-file upload-script welches einfach zusätzlich noch einen mysql eintrag pro datei machen soll...

durch die anzahl an files die man zum upload ausgewählt hat wird dann auch die anzahl der zeilen bestummen.
 
Zuletzt bearbeitet:

elyion_g2

Ach Jungs!?!

AW: MySQL - Dynamische Eingabe

Ich habs so versucht wie dlogic gesagt hat..

doch es hat nicht funktioniert - er macht einfach gar keine einträge mehr in die datenbank.
mein code folgt später..
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.342
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben