mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 03.12.2016 07:55 Benutzername: Passwort: Auto-Login

Thema: Datensätze in verbundene Tabellen einfügen mit Php? vom 01.06.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Datensätze in verbundene Tabellen einfügen mit Php?
Autor Nachricht
biltweld
Threadersteller

Dabei seit: 01.06.2006
Ort: köln
Alter: 35
Geschlecht: -
Verfasst Do 01.06.2006 22:45
Titel

Datensätze in verbundene Tabellen einfügen mit Php?

Antworten mit Zitat Zum Seitenanfang

Hallo,
Ich habe ein kleines Problem, oder besser gesagt zwei:

1. Ich habe ein vorhandenes Script umgeschrieben, welches Daten in eine Mysql tabelle haut,
bzw löscht, ausgibt dass ein Datensatz bereits existiert.
Nun muss dieses geänderte und auch schon (soweit) laufende script
dahingehend verändert werden, dass es mehrere Tabellen per GET anspricht.
Es existieren drei Tabellen, von denen jede eine ID mit einer jeweils anderen gemeinsam hat.
Diese habe ich als 'Primary key' gesetzt.
Wenn die Einstellungen der Datenbank richtig sind, muss ich dann im script per ' insert into ',
'update' bzw 'delete' jede Tabelle einzeln ansprechen oder kann ich die Variablen einfach allle nacheinander
übergeben lassen?
Oder geht es tatsächlich nur über einen anderen Weg? Das ist doch eigentlich keine aussergewöhnliche Situation?!

Bisher gibt er mir dann eine Fehlermeldung : "Column count doesn't match value count at row 1".
Ich habe aber durchgezählt und das passte alles.(Spalten, Werte, Variablen der Werte).
Warscheinlich ist es ganz einfach, aber ich habe nichts gefunden, was mir da weiterhelfen konnte.

2. Ich bin blutiger Anfänger!


Für einen kleinen Tipp oder eine gute Idee wäre ich sehr dankbar!


Zuletzt bearbeitet von biltweld am Do 01.06.2006 22:51, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden
tommy-p

Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 31
Geschlecht: Männlich
Verfasst Fr 02.06.2006 07:37
Titel

Antworten mit Zitat Zum Seitenanfang

Bitte poste mal deine Tabellenstruktur (die relevanten Teile) sowie deinen Code. Und beschreibe genau, was wo eingetragen werden soll. Deine Frage ist noch zu algemein.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 02.06.2006 07:43
Titel

Antworten mit Zitat Zum Seitenanfang

tommy-p hat geschrieben:
Bitte poste mal deine Tabellenstruktur (die relevanten Teile) sowie deinen Code.

Und natürlich das Query nicht vergessen das ausgeführt werden
soll ..
  View user's profile Private Nachricht senden
biltweld
Threadersteller

Dabei seit: 01.06.2006
Ort: köln
Alter: 35
Geschlecht: -
Verfasst Fr 02.06.2006 13:22
Titel

Antworten mit Zitat Zum Seitenanfang

Danke für die Antworten erstmal!

Hier die Tabellenstruktur:

1.Tabelle product

Feld Typ Null Standard
proid varchar(32) Nein
protitle varchar(100) Ja NULL
prodesc text Ja NULL
prodescen text Nein
protitleen varchar(100) Nein

und so weiter...

2.Tabelle: productkat

Feld Typ Null Standard
prokid int(11) Nein
proklevel int(11) Nein 1

und so weiter....

3.Tabelle:productwg

Feld Typ Null Standard
proid int(11) Nein
prokid varchar(11) Nein

Code:


<?php
include_once("");
include("");

aso_header();

echo "test!!!...\n<br><hr><br>";
db_connect();


$proid=strtoupper($_GET ['proid']);
$protitle =$_GET ['protitle'];
$prodesc =$_GET ['prodesc'];
$prodescen=$_GET ['prodescen'];
.
.
.
.
.  // und so weiter, alle Variablen(hier nur der ersten Tabelle, da es sonst ja nicht läuft.)

if ($protitle == "TODELETE") {
    $query = "delete from usr.......4.product where product = upper(proid)= '$proid'";
         }
  else {
                echo '<HR>';
      echo 
               $proid , $protitle , $prodesc , $prodescen ,
               $protitleen , $proprice1 ,$proprice2 , $proprice3 ,
               $proprice4 , $proprice5 , $proprice6 , $proprice7 , $proprice8 ,
               $prodruck1 , $prodruck2 , $prodruck3 , $prodruck4 , $prodruck5 ,
               $prodruck6 , $menge;
   
               echo '<HR>';
   
    $query = "select * from usr_........product where product=upper (proid) = '$proid'";
         }
    $result = mysql_query($query);
    if(mysql_numrows($result)>1)
      {
        $query = "update usr_...........product SET proid=$proid,
        protitle='$protitle',prodesc='$prodesc',prodescen='$prodescen',
        protitleen='$protitleen',proprice1='$proprice1',
          proprice2='$proprice2',proprice3='$proprice',proprice4='$proprice4',           
        proprice5='$proprice5',proprice6='$proprice6',proprice7='$proprice7',
          proprice8='$proprice8',prodruck1='$prodruck1',prodruck2='$prodruck2',
        prodruck3='$prodruck3',prodruck4='$prodruck4',prodruck5='$prodruck5',
          prodruck6='$prodruck6',menge='$menge';
        where upper (proid) = '$proid'";
        }
  else
      {
        $query = "insert into usr..............product values
        ('0005', ' Kofferanhänger „Voyage“' , 'NULL' , '4' , '4' , 'NULL' , 'NULL' ,
        'NULL' , 'NULL' , 'NULL' ,'NULL' , 'NULL' , 'NULL' , 'NULL' , 'NULL' ,
        'NULL' , 'NULL' , 'NULL' , 'NULL' , 'NULL')";
      }
$result = mysql_query($query);
if (!$result)
  {
  echo "<hr>";
  echo "Artikelnummer: " .  $proid .
  " - Artikel: ". $protitle .
  " - Beschr.: " . $prodesc .
  "<br>";
  echo "SQL-Query: ".$query."<br>";
  echo "<b>FEHLER</b> beim Data-Xfer!<br>";
  echo mysql_error()."<br>";
  }
else {
  echo "<b>Dat geht!!!<br>ArtNr: $proid - $prodesc <br>";
  }
 
aso_footer();

?>


Das ist eine Menge Code, ich weiß, vielleicht hilfts aber die Struktur der Datei
direkt zu sehen und eventuell zu schreien: Hey, SOOO GEHT DAS NICHT!
oder besser: ganz einfach das damit hinzukriegen.
Wie krieg ich das Ding jetzt mit allen drei Tabellen verknüpft?
Mit einer geht es wie gesagt. (bis auf das Löschen, das schaff ich aber bestimmt noch zu beheben.)
Das Query steckt unten in den Values drin.

Wie gesagt, das einzige, was ich mit Php vorher mal gemacht habe ist per
Post Daten aus Formularen annehmen,
Eine Seite mit einfachem Passwortschutz
Und die Größe zweier Variablen vergleichen.

Das hier ist einfach ein bischen mehr...
Gruß!
  View user's profile Private Nachricht senden
tommy-p

Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 31
Geschlecht: Männlich
Verfasst Fr 02.06.2006 14:03
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
$query = "select * from usr_........product where product=upper (proid) = '$proid'";


"from usr_........product" -> kann man Datenbanken so ansprechen?
Ist das sozusagen der absolute Pfad? Ich kenne nur "from TABELLENNAME".

Ansonsten hast du noch einen Fehler in

Code:
SELECT * FROM * WHERE UPPER(proid) = '$proid';



Und zu deiner ursprünglichen Frage:

Zitat:
Wenn die Einstellungen der Datenbank richtig sind, muss ich dann im script per ' insert into ',
'update' bzw 'delete' jede Tabelle einzeln ansprechen oder kann ich die Variablen einfach allle nacheinander
übergeben lassen?


In deinem Script sprichst du nur eine Tabelle, nämlich "product", an.
Was soll mit den anderen passieren, wenn du sie "einzeln ansprechen"
oder auch gleichzeitig ansprechen willst?

Für mich sieht es so aus, als wenn du nach dem Absenden des Formulars
einen Datensatz die Tabelle "product" einfügen, updaten oder löschen.
Aber wie kommen die anderen beiden Tabellen ins Spiel?


Und dritter Vorschlag meinerseits: die Tabelle "productwg" scheint jedem
Eintrag in der Tabelle "product" eine Kategorie aus der Tabelle "productkat"
zu. Wenn du das machen willst, könntest du auch einfach in der Tabelle
"product" das Feld "prokid" einfügst.


Zuletzt bearbeitet von tommy-p am Fr 02.06.2006 14:04, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
biltweld
Threadersteller

Dabei seit: 01.06.2006
Ort: köln
Alter: 35
Geschlecht: -
Verfasst Fr 02.06.2006 14:44
Titel

Antworten mit Zitat Zum Seitenanfang

Also, erstmal:


Beitrag Verfasst: Fr 02.06.2006 15:03 Titel:


Zitat:

"from usr_........product" -> kann man Datenbanken so ansprechen?
Ist das sozusagen der absolute Pfad? Ich kenne nur "from TABELLENNAME".


Habe den Namen nur rausgrenommen, da das hier ein Auftrag ist, aus dem ich diesen glorreichen Teil zur Bearbeitung bekommen habe... usr.... ist der Tabellenname.
Und das geht dann ja auch so.

Zitat:

In deinem Script sprichst du nur eine Tabelle, nämlich "product", an.
Was soll mit den anderen passieren, wenn du sie "einzeln ansprechen"
oder auch gleichzeitig ansprechen willst?


Genau das gleiche, also entweder: füge Datensatz ein, sag, der Datensatz ist schon vorhanden, oder lösche einen auf Anweisung. Die Tabellen sollen also schon gleichzeitig angesprochen werden.Die Interface dazu ist schon vorhanden. (Der shopinhaber soll so seine Bestandsliste aktualisieren können.)


Zitat:
Für mich sieht es so aus, als wenn du nach dem Absenden des Formulars
einen Datensatz die Tabelle "product" einfügen, updaten oder löschen.
Aber wie kommen die anderen beiden Tabellen ins Spiel?


1.Genau das tut das Script ja.

2.Das ist halt die Frage.
Wie in aller Welt bringe ich es dazu die anderen Tabellen auch zu speisen?
Ich habe es ja auch schon probiert (wie im ersten Post gesagt), es läuft aber nicht.

Die Tabellen des Kunden darf ich nicht ohne weiteres ändern.Das ist ein Problem.

Und frag mich bitte nicht wie jemand wie ich an eine solche Aufgabe kommt...

Danke für den Fehler!
  View user's profile Private Nachricht senden
tommy-p

Dabei seit: 21.01.2004
Ort: Cottbus
Alter: 31
Geschlecht: Männlich
Verfasst Fr 02.06.2006 15:36
Titel

Antworten mit Zitat Zum Seitenanfang

Jetzt versteh ich so langsam. Mehrere Tabellen gleichzeitig auslesen, das geht.
Aber zum Befüllen, Updaten oder Löschen musst du zwei Queries ausführen.

Damit die Datensätze in verschiedenen Tabellen dieselbe ID haben, hilft dir
die Funktion mysql_insert_id() weiter. Mit ihr kannst du feststellen, welche
auto_increment-ID als letztes eingefügt wurde.

Code:
mysql_query();
$zuletzt_eingefuegte_id = mysql_insert_id();


Hilft dir das weiter?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
biltweld
Threadersteller

Dabei seit: 01.06.2006
Ort: köln
Alter: 35
Geschlecht: -
Verfasst Mo 12.06.2006 07:44
Titel

Antworten mit Zitat Zum Seitenanfang

GAANZ VIELEN DANK!!!

Entschuldige, dass das so lang gedauert hat. War ein wenig unterwegs.

Habs dann anders gemacht. Die Idee war gut. geht aber auch einfacher.

Habe für jede Tabelle eine query geschrieben uind diese dann einfach hintereinandergesetzt.

Also, nochmal vielen Dank und nen Gruß!
  View user's profile Private Nachricht senden
 
Ähnliche Themen datensätze > in DB > einfügen ...
PHP: Datensätze aus DB 3 spaltig ausgeben
Ein PHP-Formular - mehrere Datensätze erstellen
[PHP & MySQL] Datensätze bearbeiten per UPDATE
DreamWeaver: tabellen nebeneinander einfügen
[PHP / MySQL] Datensätze anzeigen ohne "Doppelte"
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.