php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-12-2005, 13:44
black-elch
 Registrierter Benutzer
Links : Onlinestatus : black-elch ist offline
Registriert seit: Oct 2005
Beiträge: 6
black-elch ist zur Zeit noch ein unbeschriebenes Blatt
Standard Zwei Tabellen mit einem Formular füllen?

Werte MySQL / PHP Gemeinde -- Neueinsteiger benötigt Eure Hilfe

Mein Ziel ist es, mit dem Absenden eines Formular’s gleichzeitig zwei Tabellen mit Daten
zu füllen (Master- und Detail-Tabelle).
Wobei es möglich sein sollte, mehrere „Detaildatensätze“ einzutragen und diese mit
Hilfe der zuletzt vergebenen „lf_nr“ aus der Mastertabelle eindeutig zu identifizieren.
Nicht vollständig ausgefüllte Formularfelder (im Detailbereich) sollen auch nicht in die
DB geschrieben werden.

Ich möchte Euch diese Problematik einem einfachen Beispiel veranschaulichen.

Ausgangspunkt ist eine Datenbank mit dem Namen "elchtest".

In dieser DB befinden sich zwei Tabellen mit dem Namen
"lieferant" und "lieferant_details".

Master-Tabelle: lieferant
==================
CREATE TABLE lieferant
(lf_nr TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
anrede VARCHAR(20) NOT NULL,
firmenname VARCHAR(30) NOT NULL,
vorname VARCHAR(15) NOT NULL,
name VARCHAR(20) NOT NULL,
strasse VARCHAR(30) NOT NULL,
haus_nr VARCHAR(5) NOT NULL,
plz VARCHAR(10) NOT NULL,
ort VARCHAR(25) NOT NULL,
angelegt_am datetime NOT NULL default '0000-00-00 00:00:00');

Detail-Tabelle: lieferant_details
=======================
CREATE TABLE lieferant_details
(lf_nr TINYINT UNSIGNED NOT NULL,
anrede VARCHAR(10),
vorname VARCHAR(15),
name VARCHAR(20),
funktion VARCHAR(15),
telefon VARCHAR(10),
angelegt_am DATETIME NOT NULL default '0000-00-00 00:00:00');

Das dazugehörige Formular mit dem Namen: form_neuer_lieferant
================================================



Hinweis: Die jeweiligen Felder im Formular "lieferant_details" abe ich fortlaufend benannt.
(anrede1, anrede2, anrede3 - vorname1, vorname2, vorname 3 usw.)

Hier seht Ihr den PHP-Teil zu diesem Formular:
==================================

(Hinweis: Ich benutze zur Zeit noch Dreamweaver……….
ich weiß dass einige von Euch jetzt schmunzeln!!!!!
Doch ich bin bestrebt (bald) ohne dieses Programm auszukommen, weil man mit
diesen Grafischen Benutzeroberflächen ja nichts wirklich lernt. Mit anderen Worten…
das was Dreamweaver nicht beherrscht, versuche ich per Hand nachzuschreiben.)

Das was ich im PHP-Teil hinzugefügt habe ist zwischen zwei Kommentaren markiert.

PHP-Code:
<?php
function GetSQLValueString($theValue$theType
         
$theDefinedValue ""$theNotDefinedValue ""
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch (
$theType) {
case 
"text":
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
break;    
case 
"long":
case 
"int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case 
"double":
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
break;
case 
"date":
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
break;
case 
"defined":
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
break;
}
  return 
$theValue;
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form_neuer_lieferant")) {
$insertSQL sprintf("INSERT INTO lieferant (anrede, firmenname,
                     vorname, name, strasse, haus_nr, plz, ort, angelegt_am) 
                     VALUES (%s, %s, %s, %s, %s, %s, %s, %s, NOW())"
,

      
GetSQLValueString($_POST['anrede'], "text"),
      
GetSQLValueString($_POST['firmenname'], "text"),
      
GetSQLValueString($_POST['vorname'], "text"),
      
GetSQLValueString($_POST['name'], "text"),
      
GetSQLValueString($_POST['strasse'], "text"),
      
GetSQLValueString($_POST['haus_nr'], "text"),
      
GetSQLValueString($_POST['plz'], "text"),
      
GetSQLValueString($_POST['ort'], "text"));

  
mysql_select_db($database_elchtest$elchtest);
  
$Result1 mysql_query($insertSQL$elchtest) or die(mysql_error());
  

// Start eintrag elch - liefert die letzte vergebene lf_nr zurück
  
$lf_nr mysql_insert_id();
  
$insertSQL sprintf("INSERT INTO lieferant_details (ku_nr, anrede, vorname, name, 
                    funktion, telefon, angelegt_am) 
                    VALUES (%s, %s, %s, %s, %s, %s, NOW())"
,

      
GetSQLValueString($lf_nr"int"),
      
GetSQLValueString($_POST['anrede'], "text"),
      
GetSQLValueString($_POST['vorname'], "text"),
      
GetSQLValueString($_POST['name'], "text"),
      
GetSQLValueString($_POST['funktion'], "text"),
      
GetSQLValueString($_POST['telefon'], "text"),
      
GetSQLValueString($_POST['fax'], "text"),
      
GetSQLValueString($_POST['funk'], "text"),
      
GetSQLValueString($_POST['email'], "text"));

//ende eintrag elch


  
$insertGoTo "form_neuer_lieferant.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}
?>
Nun, das Eintagen der Formulardaten in die Tabelle „lieferant“ klappt, auch das ermitteln
der zuletzt vergebenen lf_nr.
Aber dann hört’s auch schon auf.
War der Meinung dass hier eine if-Schleife zu Erfolg führen könnte, habe auch einige
Stunden rumexperimentiert, doch bisher ohne richtigen Erfolg.

Nun meine Frage an Euch.

1. Kann mir jemand mit Hilfe eines (verständlichen) Beispieles auf die Sprünge helfen?
2. Kennt jemand einen Link wo dieses Problem behandelt wird?

Danke für Eure Zeit!

PS: Mir geht es nicht um eine fertige Lösungen dieses Problems Eurerseits, sondern um einen Gedankenanstoß.
__________________
Hinfallen ist nicht schlimm!...... liegen bleiben unverzeihlich.

Geändert von black-elch (11-12-2005 um 14:19 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-12-2005, 11:28
illusion
 Registrierter Benutzer
Links : Onlinestatus : illusion ist offline
Registriert seit: Jan 2004
Ort: Austria
Beiträge: 197
illusion ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum ermittelst du nicht am Anfang die letzte vegebene Lf_nr?
Diese kannst du um eins erhöhen, und dann beliebig damit arbeiten.
Mit Zitat antworten
  #3 (permalink)  
Alt 12-12-2005, 12:01
black-elch
 Registrierter Benutzer
Links : Onlinestatus : black-elch ist offline
Registriert seit: Oct 2005
Beiträge: 6
black-elch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo illusion

Das ist nicht mein Problem.
Mit der Funktion

$lf_nr = mysql_insert_id();

erhalte ich die zuletzt vergebene lf_nr.
Diese möchte ich in der Tabelle "lieferant_details"
erneut entagen lassen, jedoch mit all den anderen Informationen
im Formularteil "liefernat_details.
__________________
Hinfallen ist nicht schlimm!...... liegen bleiben unverzeihlich.
Mit Zitat antworten
  #4 (permalink)  
Alt 12-12-2005, 12:23
Arni
 PHP Junior
Links : Onlinestatus : Arni ist offline
Registriert seit: Mar 2001
Ort: Miami F.L
Beiträge: 691
Arni ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und wo ist das

mysql_select_db($database_elchtest, $elchtest);
$Result1 = mysql_query($insertSQL, $elchtest) or die(mysql_error());


für die 2 Tabelle ??
__________________
Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban
Mit Zitat antworten
  #5 (permalink)  
Alt 12-12-2005, 12:36
black-elch
 Registrierter Benutzer
Links : Onlinestatus : black-elch ist offline
Registriert seit: Oct 2005
Beiträge: 6
black-elch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke Arni für Deinen Hinweis.
Hatte diesen durch das viele experimentieren versehendlich gelöscht.
Aber auch nach dem hinzufügen kein Erfolg.
__________________
Hinfallen ist nicht schlimm!...... liegen bleiben unverzeihlich.
Mit Zitat antworten
  #6 (permalink)  
Alt 12-12-2005, 13:10
black-elch
 Registrierter Benutzer
Links : Onlinestatus : black-elch ist offline
Registriert seit: Oct 2005
Beiträge: 6
black-elch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Konnte Problem soeben beheben.
Danke
black-elch
__________________
Hinfallen ist nicht schlimm!...... liegen bleiben unverzeihlich.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:15 Uhr.