Datensatz einlesen aus Formular (kompliziert)

Hier kommen Posts zu anderen Datenbanken als PostgreSQL rein.
Antworten
newlie
Neuer Benutzer
Beiträge: 4
Registriert: Mo 25. Apr 2011, 13:59

Datensatz einlesen aus Formular (kompliziert)

Beitrag von newlie » Mo 25. Apr 2011, 14:10

Hallo ich habe folgendes Problem:

VEREINFACHT

1. Datenbank

Kunden ID | Kundenname | Kundenadresse

Kunden ID ist ein autowert

2. Datenbank

Kunden ID | Bestellung

Formular:

Kundenname | Kundenadresse | Bestellung

Also hierbei den Kunden in die DB1 einzulesen ist ja relativ leicht. Bloß wie komme ich an die Kunden ID anhand des Namens und der Adresse des Kundens und lese die mit der Bestellung in die DB2 ein?

Hier nochmal die CODES:

Code: Alles auswählen

<?php
$vorname
=$_REQUEST["vorname"] ;
$ort=$_REQUEST["ort"] ;
$nachname=$_REQUEST["nachname"] ;
$telefon=$_REQUEST["telefon"] ;
$artikelnr=$_REQUEST["artikelnr"] ;
$plz=$_REQUEST["plz"] ;
$straße=$_REQUEST["straße"] ;
$hausnr=$_REQUEST["hausnr"] ;
$menge=$_REQUEST["menge"] ;
$datum date("d.m.Y H:i");

$db = @new mysqli'localhost''root''''pizza');
if (
mysqli_connect_errno() == 0)
         {
         
$sql 'INSERT INTO kunden (`Vorname`, `Nachname`, `PLZ`,`Ort`,`Straße`,`Hausnummer`,`TelefonNr`)VALUES
         ("'
.$vorname.'", "'.$nachname.'", "'.$plz.'", "'.$ort.'", "'.$straße.'", "'.$hausnr.'", "'.$telefon.'")';

    
$db->query$sql );

    if (
$db->affected_rows==1)
    {
         echo 
'Der neue Eintrage wurde hinzugefügt.';
    }else
        {
         echo 
'Der Eintrag konnte nicht hinzugefügt werden.';
        }
   ;
}else{
         echo 
'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
         
.mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();
 


Danke im Vorraus

ads
Erfahrener Benutzer
Beiträge: 4148
Registriert: Mi 8. Feb 2006, 10:58
Wohnort: MD
Kontaktdaten:

Beitrag von ads » Mo 25. Apr 2011, 14:25

Aaaaalso: zuerst einmal geht es in diesem Forum nicht um MySQL.
Hier geht es einzig und allein um PostgreSQL.

Wenn du zwei Datenbanken hast, brauchst du auch zwei Datenbankverbindungen.
Vielleicht solltest du auch noch einen ev. auftretenden Fehler in deiner query() Methode abfangen.
Und wenn ich sehe, wie dein Stück Code anfällig für SQL.Injections ist, wird mir schlecht.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support

newlie
Neuer Benutzer
Beiträge: 4
Registriert: Mo 25. Apr 2011, 13:59

Beitrag von newlie » Mo 25. Apr 2011, 14:32

jagut dass die anfällig is hab ich mir schon gedacht, da die db auch noch kein pw hat... habe auch erst mit sql angefangen... aber die datenbank is auch nur als übung gedacht...
also die 2. datenbankverbindung sieht bei mir wie folgt aus .... jedoch ist die 1. variable im insert leer weil ich halt net weiß wie man an die Kunden_ID rankommt

[php]
$db = @new mysqli( 'localhost', 'root', '', 'pizza');
if (mysqli_connect_errno() == 0)
{
$sql = 'INSERT INTO bestellung (`KundenNr`, `Bestellungsdatum`, `Artikelnummer`,`Menge`)VALUES("'..'" , "'.$datum.'", "'.$artikelnr.'", "'.$menge.'")';

$db->query( $sql );

if ($db->affected_rows==1)
{
echo 'Der neue Eintrage wurde hinzugefügt. ';

}else
{
echo 'Der Eintrag konnte nicht hinzugefügt werden.';
}
;
}else{
echo 'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
.mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();
[/php]

newlie
Neuer Benutzer
Beiträge: 4
Registriert: Mo 25. Apr 2011, 13:59

Beitrag von newlie » Mo 25. Apr 2011, 15:49

weiß denn keiner wie man sowas machn kann?

ads
Erfahrener Benutzer
Beiträge: 4148
Registriert: Mi 8. Feb 2006, 10:58
Wohnort: MD
Kontaktdaten:

Beitrag von ads » Mo 25. Apr 2011, 15:57

Nicht für MySQL.
Und ehrlich gesagt ist hier auch kein PHP-Forum.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support

akretschmer
Erfahrener Benutzer
Beiträge: 7684
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer » Mo 25. Apr 2011, 16:10

newlie hat geschrieben:weiß denn keiner wie man sowas machn kann?


SQL-Injektion wehrt man nicht mit einem PW ab. Die in diesem Forum gültige Antwort auf Deine Frage ist entweder RETURNING oder lastval(). Und wenn Du eh erst anfängst, wäre es noch nicht zu spät, alles zu tun, damit Du hier in diesem Forum richtig bist.

Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

newlie
Neuer Benutzer
Beiträge: 4
Registriert: Mo 25. Apr 2011, 13:59

Beitrag von newlie » Mo 25. Apr 2011, 16:33

alles klar danke...
habe jetz aber eine lösung gefunden.. :)
is zwar bestimmt umständlich geht aber ...

jedenfalls halbwegs:

Code: Alles auswählen


<?php
$vorname
=$_REQUEST["vorname"] ;
$ort=$_REQUEST["ort"] ;
$nachname=$_REQUEST["nachname"] ;
$telefon=$_REQUEST["telefon"] ;
$artikelnr=$_REQUEST["artikelnr"] ;
$plz=$_REQUEST["plz"] ;
$straße=$_REQUEST["straße"] ;
$hausnr=$_REQUEST["hausnr"] ;
$menge=$_REQUEST["menge"] ;
$datum date("d.m.Y H:i");

// KUNDEN HINZUFÜGEN //

$db = @new mysqli'localhost''root''''pizza');
if (
mysqli_connect_errno() == 0)
         {
         
$sql 'INSERT INTO kunden (`Vorname`, `Nachname`, `PLZ`,`Ort`,`Straße`,`Hausnummer`,`TelefonNr`)VALUES
         ("'
.$vorname.'", "'.$nachname.'", "'.$plz.'", "'.$ort.'", "'.$straße.'", "'.$hausnr.'", "'.$telefon.'")';

    
$db->query$sql );

    if (
$db->affected_rows==1)
    {
         echo 
'Der neue Eintrage wurde hinzugefügt.';
    }else
        {
         echo 
'Der Eintrag konnte nicht hinzugefügt werden.';
        }
   ;
}else{
         echo 
'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
         
.mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();

//ABFRAGE KUNDEN_ID//

$db = @new mysqli'localhost''root''''pizza');
if (
mysqli_connect_errno() == 0)
         {

         
// Query vorbereiten und an die DB schicken
         
$sql 'SELECT `Kunden_Nr` FROM `Kunden` WHERE `Hausnummer`= '.$hausnr.' and `PLZ`='.$plz.'';
         
$ergebnis $db->query$sql );
         
// Anzahl gefunde Datensaetze ausgeben
         
echo "<p>Sie besitzten " .$ergebnis->num_rows" Artikel.</p>";
         
// Ergebnisse ausgeben
         
while ($zeile $ergebnis->fetch_object())
         {
         
$po=$zeile->Kunden_Nr    ;
         }
         
// Resourcen freigeben
         
$ergebnis->close();
}else{
echo 
'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
.mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}
$db->close();

// BESTELLUNG HINZUFÜGEN //

$db = @new mysqli'localhost''root''''pizza');
if (
mysqli_connect_errno() == 0)
         {
         
$sql 'INSERT INTO bestellung (`KundenNr`, `Bestellungsdatum`, `Artikelnummer`,`Menge`)VALUES("'.$po.'", "'.$datum.'", "'.$artikelnr.'", "'.$menge.'")';

    
$db->query$sql );

    if (
$db->affected_rows==1)
    {
         echo 
'Der neue Eintrage wurde hinzugefügt. ';

    }else
        {
         echo 
'Der Eintrag konnte nicht hinzugefügt werden.';
        }
   ;
}else{
         echo 
'Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: '
         
.mysqli_connect_errno(). ' : ' .mysqli_connect_error();
}

$db->close();

?>

jetz hab ich nurnoch das problem dass ich immer die fehlermeldung:

Notice: Trying to get property of non-object in \\pfad on line 107

Fatal error: Call to a member function fetch_array() on a non-object in \\pfad on line 109

also diese zeilen:

Code: Alles auswählen

echo "<p>Sie besitzten " .$ergebnis->num_rows" Artikel.</p>";
         
// Ergebnisse ausgeben
         
while ($zeile $ergebnis->fetch_object()) 
Aber der fehler tritt nur auf sobald die felder buchstaben enthalten bei zahlen gehts wunderbar

villeicht weiß einer ja was

castorp
Erfahrener Benutzer
Beiträge: 1177
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Beitrag von castorp » Mo 25. Apr 2011, 17:09

newlie hat geschrieben:villeicht weiß einer ja was
Wie gesagt: in diesem Forum geht's weder um MySQL noch um PHP.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Antworten