Anlegen eines datensatzes
Hallo Gemeinschaft,
hab eine verständnisfrage - wie würde bei so einem Datenbankkonstrukt der insert befehl lauten für eine neue bestellung. Verstehe es nicht genau, wie ich an die order_id komme , die dann in der orders_product eingetragen wird - die products und customer sind mir klar - benötige nur die hilfe bei dem eintrag eines neuen datensatzes in die order und order_products
products
products_id
products_ean
products_quantity
products_shippingtime
products_model
customers
customers_id
customers_gender
customers_firstname
customers_lastname
order
orders_id
customers_id
customers_name
customers_firstname
customers_lastname
customers_gender
customers_company
customers_street_address
order_product
orders_products_id
orders_id
products_id
products_model
products_name
hab eine verständnisfrage - wie würde bei so einem Datenbankkonstrukt der insert befehl lauten für eine neue bestellung. Verstehe es nicht genau, wie ich an die order_id komme , die dann in der orders_product eingetragen wird - die products und customer sind mir klar - benötige nur die hilfe bei dem eintrag eines neuen datensatzes in die order und order_products
products
products_id
products_ean
products_quantity
products_shippingtime
products_model
customers
customers_id
customers_gender
customers_firstname
customers_lastname
order
orders_id
customers_id
customers_name
customers_firstname
customers_lastname
customers_gender
customers_company
customers_street_address
order_product
orders_products_id
orders_id
products_id
products_model
products_name
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 448229
Url: https://administrator.de/forum/anlegen-eines-datensatzes-448229.html
Ausgedruckt am: 02.04.2025 um 00:04 Uhr
23 Kommentare
Neuester Kommentar
Moin,
aufgrund deiner sehr dünnen Informationsangabe, schaue dir mal den Befehl mysql_insert_id() an:
https://www.php.net/manual/de/function.mysql-insert-id.php
sowie hier: https://www.w3schools.com/php/php_mysql_insert_lastid.asp
alternativ: https://www.google.com/search?q=php+sql+insert+value+and+return+unique+i ...
Gruß
em-pie
aufgrund deiner sehr dünnen Informationsangabe, schaue dir mal den Befehl mysql_insert_id() an:
https://www.php.net/manual/de/function.mysql-insert-id.php
sowie hier: https://www.w3schools.com/php/php_mysql_insert_lastid.asp
alternativ: https://www.google.com/search?q=php+sql+insert+value+and+return+unique+i ...
Gruß
em-pie
Hallo,
Nun, da du diese Tabellenstruktur dir hast einfallen lassen, soltest du schon wissen wie und womit das Tabellenfeld Orders_id gefüllt wird. Primary Key, Integer, Lond,Character oder whatsoever. Sollte die auch Unique sein oder kann es davon Doppelte geben usw usw. Schau in deiner Felddefinition rein, dein Datenbankentwurf, Felderdefinition und abhängigkeiten wo du was definiert hast. Und zum Insert hat die ja schon @em-pie was geschrieben.
https://docs.microsoft.com/de-de/sql/relational-databases/tables/view-th ...
users.informatik.uni-halle.de/~brass/db05/da_tabdf.pdf
https://modern-sql.com/de/anwendung/netzwerk-latenzen-fuer-insert-verrin ...
https://docs.microsoft.com/de-de/sql/t-sql/statements/insert-transact-sq ...
https://www.dofactory.com/sql/insert
Gruß,
Peter
Nun, da du diese Tabellenstruktur dir hast einfallen lassen, soltest du schon wissen wie und womit das Tabellenfeld Orders_id gefüllt wird. Primary Key, Integer, Lond,Character oder whatsoever. Sollte die auch Unique sein oder kann es davon Doppelte geben usw usw. Schau in deiner Felddefinition rein, dein Datenbankentwurf, Felderdefinition und abhängigkeiten wo du was definiert hast. Und zum Insert hat die ja schon @em-pie was geschrieben.
https://docs.microsoft.com/de-de/sql/relational-databases/tables/view-th ...
users.informatik.uni-halle.de/~brass/db05/da_tabdf.pdf
https://modern-sql.com/de/anwendung/netzwerk-latenzen-fuer-insert-verrin ...
https://docs.microsoft.com/de-de/sql/t-sql/statements/insert-transact-sq ...
https://www.dofactory.com/sql/insert
Gruß,
Peter
Hallo,
wie an die id kommen? Wer hat denn die DB aufgebaut?
Ist beliebig.... Manche haben einen Nummernkreis und dann ist die Nummer 190461. 19 für das Jahr der Rest wird hochgezählt. Enweder hat man einen Auto-Icrement drin oder die Sofware dahinter addiert immer eine oben drauf.
Da gibt es zig Möglichkeiten. Gerade in ERP Systemen kommen diese Daten aus den Grunddaten und können da noch vordefiniert werden. Quasi Jarhespräfix und Offset. Nummer Länge.
Lässt sich auch für alle anderen Nummern (Faktura, Lieferschein) so machen.
mfg Crusher
wie an die id kommen? Wer hat denn die DB aufgebaut?
Ist beliebig.... Manche haben einen Nummernkreis und dann ist die Nummer 190461. 19 für das Jahr der Rest wird hochgezählt. Enweder hat man einen Auto-Icrement drin oder die Sofware dahinter addiert immer eine oben drauf.
Da gibt es zig Möglichkeiten. Gerade in ERP Systemen kommen diese Daten aus den Grunddaten und können da noch vordefiniert werden. Quasi Jarhespräfix und Offset. Nummer Länge.
Lässt sich auch für alle anderen Nummern (Faktura, Lieferschein) so machen.
mfg Crusher

Zitat von @jensgebken:
moin moin - die db struktur ist die von gambio
ich möchte nur von extern - also nicht aus der shopstruktur eine bestellung dort einfügen
Hm, dein Datenbankserver steht mit nackten A.... im Netz?? Du weist hoffentlich schon das da alles unverschlüsselt über die Anleitung geht und der in Nullkommanix übernommen ist?!moin moin - die db struktur ist die von gambio
ich möchte nur von extern - also nicht aus der shopstruktur eine bestellung dort einfügen
oder wie würdet ihr es machen
Den Shop seine Arbeit machen lassen, wenn du nicht die komplette Businesslogik des Shops aus dem FF kennst vergisst du sehr wahrscheinlich wichtige Kleinigkeiten und schon handelst du dir sehr wahrscheinlich ein großes Problem ein, bei Geld hört die Frickelei mit Halbwissen auf.Gruß wireguard

Steht oben.
Hallo,
Dann frage dort bei gambio ob die dir ihre DB Struktur offenlegen und dir auch sagen wo welches Feld noch verwendet wird, die abhängigkeiten und evtl. Stored Procedures bzw. die gesamte Business Logik dir offenlegen. Denn Gambio ist wohl der einzigste der es dir sagen kann. Und bedenke so einfache fälle von netzwerkausfall während zwei Schreibzyklen usw. Nicht das du dann eine Bestell ID hast, aber keine Positionen dazu. Sollte alles aus der Business Logik ersichtlich sein.
Gruß,
Peter
Dann frage dort bei gambio ob die dir ihre DB Struktur offenlegen und dir auch sagen wo welches Feld noch verwendet wird, die abhängigkeiten und evtl. Stored Procedures bzw. die gesamte Business Logik dir offenlegen. Denn Gambio ist wohl der einzigste der es dir sagen kann. Und bedenke so einfache fälle von netzwerkausfall während zwei Schreibzyklen usw. Nicht das du dann eine Bestell ID hast, aber keine Positionen dazu. Sollte alles aus der Business Logik ersichtlich sein.
Gruß,
Peter
Moin,
dann wäre es "fatal", wenn du am System vorbei direkt in die DB schreibst...
Exkurs:
Für gewöhnlich haben komplexere Systeme immer einen folgenden Aufbau:
Vorteil solch einer Architektur: ändert sich was an der GUI, bleibt die Buisness- und Datalogic zunächst mal unberührt. Werden Logiken angepasst, hat das erstmal keine Auswirkungen auf andere Schichten. Zudem ist man hier total skalierbar.
<edit>
Hier mal noch etwas Lektüre:
https://en.wikipedia.org/wiki/Multitier_architecture
https://www.itwissen.info/Three-Tier-Architektur-three-tier-architecture ...
https://www.kstbb.de/informatik/oo/20/20_2_Architekturmuster.html
</edit>
So, un nun B2T:
schaue hier mal nach, ob du irgendwelche APIs findest, mit der du deine Daten an die BusinessLogic übermitteln kannst. Denn wenn es die gibt, kannst du die Daten "einfach so" übermitteln. Um die Validierung etc. kümmert sich dann gambio wieder und meckert rum, wenn etwas nicht passt.
Ich selbst kenne das System Null, kann dir daher auch nicht im Detail helfen. Das wäre aber mein vorgehen, um das Produzieren von Datenmüll zu reduzieren/ verhindern.
Gruß
em-pie
dann wäre es "fatal", wenn du am System vorbei direkt in die DB schreibst...
Exkurs:
Für gewöhnlich haben komplexere Systeme immer einen folgenden Aufbau:
- GUI: dient ausschließlich zur Interaktion mit dem Anwender: Die Daten für Schreib-/ Leseanfragen werden an die Business-Logic weitergereicht, welche etwaige Rückgabewerte an die GUI zurückliefert
- Business-Logic: Hier werden die empfangenen Daten der GUI (oder DataLogic) verifiziert und ggf. nochmal aufbereitet. auch wird hier auf Plausibilität etc. geprüft.
- DataLogic: Hier werden die Daten, die aus der Business-Logic stammen, verwendet und in die Datenbank geschrieben/ aus dieser gelesen. Etwaige Rückgabewerte werden dann wieder an die Business-Logic zurückgegeben.
Vorteil solch einer Architektur: ändert sich was an der GUI, bleibt die Buisness- und Datalogic zunächst mal unberührt. Werden Logiken angepasst, hat das erstmal keine Auswirkungen auf andere Schichten. Zudem ist man hier total skalierbar.
<edit>
Hier mal noch etwas Lektüre:
https://en.wikipedia.org/wiki/Multitier_architecture
https://www.itwissen.info/Three-Tier-Architektur-three-tier-architecture ...
https://www.kstbb.de/informatik/oo/20/20_2_Architekturmuster.html
</edit>
So, un nun B2T:
schaue hier mal nach, ob du irgendwelche APIs findest, mit der du deine Daten an die BusinessLogic übermitteln kannst. Denn wenn es die gibt, kannst du die Daten "einfach so" übermitteln. Um die Validierung etc. kümmert sich dann gambio wieder und meckert rum, wenn etwas nicht passt.
Ich selbst kenne das System Null, kann dir daher auch nicht im Detail helfen. Das wäre aber mein vorgehen, um das Produzieren von Datenmüll zu reduzieren/ verhindern.
Gruß
em-pie
Hallo,
https://www.phpflow.com/php/insert-php-array-into-mysql-table/
https://stackoverflow.com/questions/15013211/how-to-insert-array-of-data ...
Und denk mal über ein neues Google nach. Kostet ja fast nichts, nur deine Daten...
Gruß,
Peter
https://www.phpflow.com/php/insert-php-array-into-mysql-table/
https://stackoverflow.com/questions/15013211/how-to-insert-array-of-data ...
Und denk mal über ein neues Google nach. Kostet ja fast nichts, nur deine Daten...
Gruß,
Peter
Hallo,
Gar nicht. Ich kenn noch nicht einmal gambio, da wäre es das gleiche ich würd als nicht Jurist mal eben alle Strafgesetzbücher für Europa neu Verfassen. Du bist doch der Weltbeste Entwickler der alles kann und jede Technick beherrscht.
Evtj. hilft dir dieser Beitrag Gambio Shop
Gruß,
Peter
Gar nicht. Ich kenn noch nicht einmal gambio, da wäre es das gleiche ich würd als nicht Jurist mal eben alle Strafgesetzbücher für Europa neu Verfassen. Du bist doch der Weltbeste Entwickler der alles kann und jede Technick beherrscht.
Gruß,
Peter
Hallo,
Sondern? Der Bildzeitung?
https://stackoverflow.com/questions/15013211/how-to-insert-array-of-data ...
Gruß,
Peter
Sondern? Der Bildzeitung?
möchte wissen, wie man aus diesen drei artikeln, bei denen man unter jedem ein anzahl dropdown hat und einen absendebutton für das formular, wie ich dort das array zusammenstellen kann
https://www.phpflow.com/php/insert-php-array-into-mysql-table/https://stackoverflow.com/questions/15013211/how-to-insert-array-of-data ...
Gruß,
Peter

Zitat von @jensgebken:
hi peter,
möchte gerne wissen, wie du das array erstellen würdest aus dem formular v.o.
Das erhältst du doch schon mit $_GET oder $_POST aus dem Formular, dann einfach ne foreach Schleife drüber gelegt und fertig.hi peter,
möchte gerne wissen, wie du das array erstellen würdest aus dem formular v.o.
https://www.askingbox.de/tipp/php-formular-eingaben-als-array-an-php-skr ...
Also wenn solche Grundlagen schon fehlen sehe ich ganz ganz schwarz und das gleich noch mit einem Shop, aua na das kann was werden ...
<?php
if (isset($_POST['Bestellen'])){
$articles = $_POST['article'];
foreach($articles as $article){
echo "Artikel:" . $article['Name'] . "<br>";
echo "Anzahl:" . $article['Anzahl'] . "<br>" ;
echo '<p>=========</p>';
// hier steht dann dein insert statement mit den Variablen wie oben gezeigt
}
}else{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Warenkorb</title>
</head>
<style type="text/css">
.article{
margin: 5px;
border:1px solid gray;
width:120px;
height:150p;
text-align:center;
float:left;
}
</style>
<body>
<form method="post" action="">
<div class="article">
<h3>Artikel A</h3>
<img src="https://weareexplorers.co/wp-content/themes/15zine/library/images/placeholders/placeholder-378x300.png" width="100" height="100" /><br />
<input type="hidden" name="article[Name]" value="Artikel A" />
Anzahl: <select name="article[Anzahl]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
<div class="article">
<h3>Artikel B</h3>
<img src="https://weareexplorers.co/wp-content/themes/15zine/library/images/placeholders/placeholder-378x300.png" width="100" height="100" /><br />
<input type="hidden" name="article[1][Name]" value="Artikel B" />
Anzahl: <select name="article[1][Anzahl]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
<div class="article">
<h3>Artikel C</h3>
<img src="https://weareexplorers.co/wp-content/themes/15zine/library/images/placeholders/placeholder-378x300.png" width="100" height="100" /><br />
<input type="hidden" name="article[2][Name]" value="Artikel C" />
Anzahl: <select name="article[2][Anzahl]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
<div style="clear:both">
<input type="submit" name="Bestellen" value="Bestellen" />
</div>
</form>
</body>
</html>
<?php
}
?>

Guck nach oben da steht ein Beispiel wie du die Artikel via Schleife vertickerst.

Fehlt ja die Hälfte und das Ende.
So denn, ich bin raus.
Viel Erfolg.
- Erste Devise php Error Anzeige akivieren!
error_reporting(E_ALL);
ini_set('display_errors', 'On');
- Zweite Devise vernünftige Formatierung nutzen, so hast du selbst keinen Überblick über deinen Code.
- Dritte Devise nutze prepared Statements und am besten gleich pdo! So löscht dir gleich jeder Anfänger mit SQL-Injection deine komplette Datenbank oder übernimmt im schlimmsten Fall deinen Shop und schleust Schadcode ein.
- Viertens kauf dir mal ein Buch über PHP sonst wird das nichts.
So denn, ich bin raus.
Viel Erfolg.