php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-04-2008, 16:15
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Primary Key in andere Tabelle schreiben

Hallo zusammen,

ich habe gerade ein kleines Denkproblem und hoffe, hier Hilfe zu bekommen.

Ich habe eine Datenbank mit 2 Tabellen, Kunden und Kundenwünsche. Nun kann es ja sein, das ein Kunde mehrere Wünsche hat, also möchte ich den Primary Key aus der Kundentabelle in das Feld KundenID in der Tabelle Kundenwünsche eintragen. Das ganze läuft über ein PHP-Formular, auf dem einmal die Kundendaten abgefragt und in der Tabelle eingetragen werden und die Kundenwünsche in der Kundenwunschtabelle eingetragen werden. Wie krieg ich jetzt über das Formular die KundenID aus der Kundentabelle in das Feld KundenID (nicht primary) der Kundenwunschtabelle?

Momentan sehen meine Einträge so aus:

PHP-Code:
$insert[] = "INSERT INTO KundenWunsch_Table (`KwInteresse`, `KwOrt`)  VALUES
'"
.mysql_real_escape_string($_values['KwInteresse'])."', 
"
.mysql_real_escape_string($_values['KwOrt'])."'; 
Das funktioniert auch, aber die KundenID?

Vielen Dank schon mal im voraus,

Gerrie

Geändert von gerrie1978 (16-04-2008 um 19:19 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 16-04-2008, 16:48
XGremliN
 PHP Senior
Links : Onlinestatus : XGremliN ist offline
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
XGremliN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. Code umbrechen. Keiner hat lust die soweit nach rechts zu scrollen um zu lesen.

2.eweitere einfach dein insert-Statement um die id. die musst du natürlich vorher noch in $_values reinschreiben, was irgendwo gefüllt wird.
__________________
it's not a bug,
it's a feature!
Mit Zitat antworten
  #3 (permalink)  
Alt 16-04-2008, 17:23
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry wegen des Codes...


Wie genau meinst Du das? Ich habe jetzt ein Hidden-Field im Formular erstellt, mit der ID KundenID, genau wie der Primary-Key in der Kundentabelle (das ganze auto-increment).

Und in der Anweisung:
PHP-Code:
$insert[] = "INSERT INTO KundenWunsch_Table (`KwKdID`)
VALUES '"
.mysql_real_escape_string($_values['KundenID'])."'; 
Jetzt bekomme ich

Zitat:
Cannot add or update a child row: a foreign key constraint fails (`feista/KundenWunsch_Table`,
CONSTRAINT `Kunde` FOREIGN KEY (`KwKdID`) REFERENCES `Kunden_Table` (`KundenID`))
Ne Idee? Ist bestimmt ganz einfach, aaaber....

Gerrie
Mit Zitat antworten
  #4 (permalink)  
Alt 16-04-2008, 17:41
case
 Registrierter Benutzer
Links : Onlinestatus : case ist offline
Registriert seit: Mar 2007
Beiträge: 265
case ist zur Zeit noch ein unbeschriebenes Blatt
case eine Nachricht über ICQ schicken
Standard

mit code umbrechen war wohl gemeint -> einmal bitte den 1. Post editieren und dort in der einen Codezeile mal ein/zwei umbrüche machen.

Und die Fehlermeldung sagt doch schon was los ist:

du willst eine KwKdId in die Tabelle KundenWunsch_Table einfügen, die es aber nicht im Feld KundenId in der Tabelle Kunden_Table steht.

Wenn du nicht weißt wie Constraints funktionieren solltest du sie lieber nicht benutzen
Mit Zitat antworten
  #5 (permalink)  
Alt 16-04-2008, 19:21
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So besser??? (mit dem Code)

Zitat:
... die es aber nicht im Feld KundenId in der Tabelle Kunden_Table steht.
Wie bitte? Verstehe den Satz nicht.

Muss das Feld in der KundenWunsch-Tabelle einfach nur den gleichen Namen wie jenes in der Kunden-Tabelle haben?

Danke,
Gerrie
Mit Zitat antworten
  #6 (permalink)  
Alt 16-04-2008, 19:49
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo in ertser Li nie etwas komisch beschrieben aber egal ich denke ich weis was du meinst!

Wenn du eiene Kunden ID in deine Tabelle Kundenwunsch schreiben willst musst du die erst mal aus deiner Kunden Tabelle auslesen. Dann musst dein Insert Statement ausbauen,da sehe ich bei dir nicht das Feld für die Kunden Id gelistet und auch bei den dazugehörigen Values fehlt die Variable die du rein schreibst.

Sprich willst du einen Wert aus einer Tabelle also die Id aus der Tabelle Kunden in die Tabelle Kundenwunsch hinein schreiben musst du erst mal die Id aus der Tabelle Kunden auslesen,sonst wird das nichts werden!

mfg der Litter
Mit Zitat antworten
  #7 (permalink)  
Alt 16-04-2008, 20:58
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Litter,

vielen Dank für Deine Antwort. Du hast scheinbar wirklich verstanden, was ich will

Hmm, kannst Du mir da auch Codetechnisch helfen? Denn das ist das grosse Problem. Erstmal muss ich die KundenID schreiben, klar, und dann auslesen, um sie in die andere Tabelle zu schreiben. Aber alles innerhalb eines Formulars, hmmmm, da fehlt mir die Erfahrung...leider...


Danke,
Gerrie
Mit Zitat antworten
  #8 (permalink)  
Alt 16-04-2008, 21:12
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmm um dir etwas zu coden habe ich momentan grad keine große lust,das hat aber nichts mit verweigerter Hilfsbereitschaft zu tun sondern ich scripte selber schon den ganzen tag und brüte an einem Problem.

Nur soviel überlege mal logisch,wie soll das gehen alles in einem Formular? Das geht nicht denn um etwas auszulesen musst ja erst ma was rein schreiben. Das dürfte der erste Denkanspurn sein. Du kannst das maximal auf einer Seite machen mit zwei Formularen. Sprich wenn du die ersten Daten in die Tabelle Kunden schreibst machst du eine header("Location:") auf die selbe Seite als Umleitung. In dem zweiten formular machst liest den eintrag aus der Tabelle aus und schreibst die id in ein hidden feld und machst dann den zweiten eintrag! Den zweiten eintrage musst du dann aber mit Update und nicht Insert machen!

Die anderen haben es sicher auch verstanden hier denn die haben glaube bedeutend mehr drauf wie ich nur musst du deutlicher werden bei der Problem beschreibung und was du vor hast! Und ein klein wenig mehr Code zum Beispiel der Formular Aufbau und so wäre auch von Vorteil gewesen.

Ich hoffe ich konnte ein wenig helfen. Solltes damit nichts anfangen können werde ich morgen vieleicht mal ein Beispiel Code schreiben!

mfg der Litter

Geändert von litterauspirna (16-04-2008 um 21:21 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 17-04-2008, 14:13
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

erstmal vielen Dank für Deine Antwort. Werde das jetzt mal mit 2 Formularen in Angriff nehmen und schauen was draus wird. Wenn ich wieder auf dem Schlauch stehe, melde ich mich
Mit Zitat antworten
  #10 (permalink)  
Alt 17-04-2008, 15:18
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zeig halt mal dein Formular, bzw. deinen Code, damit wir einen Anheltspunkt haben, wo wir ansetzen sollen.
Aus der Fehlermeldung von vorher ist ja zu schliessen, dass du eine Kundennummer in die Wunschtabelle schreiben willst, die nicht existiert.
__________________
Gruss
H2O
Mit Zitat antworten
  #11 (permalink)  
Alt 17-04-2008, 16:59
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Muss mich mal eben verbessern. Das mit Update war natürlich 'Unsinn von mir. Ich empfehle dir aber mache das auf zwei verschiedene Datein. In der einen zum Beispiel heist die Eintrag machst das erste Formular wo er sich einträgt in die Kundentabelle. Und in der zweiten stellst das Formular für die weiteren Einträge nach Kundenid in die Kundenwunsch Tabelle und die nennst mal weiter.php

Ich habe eben mal fix was gecoded das ist aber ungetestet und setzt ein korrekte DB Verbindung voraus!

Natürlich sind in dem Code keine speziellen Sicherheits lücken geschlossen oder so,das machst sicher selber!

Probier das mal!

PHP-Code:
<?php
if(isset($_POST['send']))
{
    
$name $_POST['kunde'];
    if(
$name=="")
    {
        echo 
"Name fehlt!";
    }
    else
    {
        
$sqlbefehl ="Insert Into $kundentabelle
                    (kunde)
            VALUES    ('$name')
                    "
;
        
$result mysql_query($sqlbefehl)or die(mysql_error());
        
header("Location: weiter.php");
    }
}

if(isset(
$_POST['edit']))
{
    
$kid $_POST['id'];
    
$wunsch $_POST['wunsch'];
    
$sqlbefehl ="Insert Into $kundenwunsch
                (kundenid,wunsch)
        VALUES    ('$kid','$wunsch')
                "
;
    
$result2 mysql_query($sqlbefehl)or die(mysql_error());
    
header("Location: irgendwas.php");
}
?>
//Formular eintrag.php
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']) ?>" method="post">
<input type="text" name="kunde">
<input type="submit" name="send" value="Weiter"> 
</form> 


//Formular weiter.php
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']) ?>" method="post">
<?php
$sqlbefehl 
="Select id From kundentabelle order by id desc limit 1";
$ergebnis mysql_query($sqlbefehl)or die(mysql_error());
$row mysql_fetch_assoc($ergebnis);
echo 
"<input type=\"hidden\" name=\"id\" value=\"".$row['id']."\">";
?>
<textarea name="wunsch" cols="40" rows="6"></textarea>
<input type="submit" name="eidt" value="Senden"> 
</form>
Was passiert hier. der Kunde trägt sich mit dem ersten Formular ein in die tabelle kunden in dem er auf den Button weiter klickt und wird gleichzeitig auf die datei weiter.php geleitet wo er weitere Eintragungen machen kann und seine Id wird in die Tabelle wunsch mit eingetragen in das Feld kundenid!

Die Daten gehören immer zu ihm die eingetragen werden denn du liest das ja so aus geordnet nach id absteigend und durch das limit 1 wird immer die letzte eingetragene id übergeben. Also kann er dann seine Daten und seine Id auch in die Wunschtabelle eintragen!

Ich hoffe das funzt und hilft ein wenig!

Geändert von litterauspirna (17-04-2008 um 17:22 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 25-04-2008, 14:18
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry das ich mich jetzt erst melde, meine Bandscheibe hat mich ein wenig aufgehalten.

Also, Dein Beispiel hat mich schon sehr viel weiter gebracht. Es ist auch gar kein Problem, das ganze über zwei Dateien, also einmal Kunden, und einmal Wünsche zu machen.

Jetzt hätte ich aber noch eine andere Frage. Auf der Kundenwunsch-Seite habe ich jetzt ein Dropdown-Menü, in welchem alle Kunden, die jemals angelegt wurden, aufgelistet sind. Das klappt auch prima. Wenn ich dort jetzt einen Kunden auswähle, und zu dem jeweiligen Wünsche erfassen will, brauch ich ja in der Wunsch-Tabelle die KundenID. Okay, die hole ich erst der Datenbank (Kunden-Tabelle) in ein hidden-Feld und schreib sie anschliessend in die Wunsch-Tabelle. Aber, wie kriege ich die ID in Abhängigkeit vom ausgewählten Eintrag im Dropdown-Menü? Also dort wähle ich ja einen bestimmen Datensatz aus, und genau von diesem brauche ich dann die ID, die in das hidden-Feld geschrieben.

Oha, versteht jemand was ich meine??????

Danke schon mal,

Nadine
Mit Zitat antworten
  #13 (permalink)  
Alt 25-04-2008, 14:29
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmm du schreibst sehr wirr und in Rätzeln. Schicke mal ein wenig Code was du schon hast und dann beschreibe anhand des Codes was du vor hast. Da kann man sich wenigstens ein Bild machen!

mfg der Litter
Mit Zitat antworten
  #14 (permalink)  
Alt 25-04-2008, 15:35
gerrie1978
 Newbie
Links : Onlinestatus : gerrie1978 ist offline
Registriert seit: Apr 2008
Beiträge: 8
gerrie1978 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay,

ich werde das ganze mal ein wenig abspecken und versuchen, anhand des Codes zu erklären, was ich machen will. Ich hoffe, das wird dann ein wenig klarer.

Gerrie
Mit Zitat antworten
  #15 (permalink)  
Alt 25-04-2008, 15:39
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von gerrie1978
Aber, wie kriege ich die ID in Abhängigkeit vom ausgewählten Eintrag im Dropdown-Menü?
Das hängt davon ab, was du unter einem Dropdown-Menu verstehst, bzw. wie dieses aufgebaut ist. Wenn es eine normale Select-Box ist gibst du die Id einfach als value dem Optionsfeld mit.
Und lass dich trotz der Hilfe von Litter nicht dazu verleiten, seine Unsitten, Tabellenamen in Variablen und nummerische Werte in Anführungszeichen zu schreiben, zu übernehmen.
Es gäbe auch sonst noch ein paar Verbesserungen, aber lassen wir es mal.
__________________
Gruss
H2O
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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:01 Uhr.