WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 21.09.2003, 01:30   #1
cherry1604
Newbie
 
Registriert seit: 21.09.2003
Alter: 42
Beiträge: 4


Böse ID aus Datenbank auslesen

Hallo!

Ich habe leider ein Problem und komm alleine leider auf keinen grünen Zweig!!

Ich möchte aus meiner Datenbank "nur" die ID eines bestimmten eintrags auslesen. Das ganze ist ein php-skript, was auf die DB zugreift.

---------------------------
$query="select OrtID from Orte where OrtNamen ='$OrtNamen', OrtPLZ ='$OrtPLZ', OrtBundesland ='$OrtBundesland'";
$result=mysql_query($query);
---------------------------

Zweck des ganzen soll sein, dass ich überprüfen kann ob ein solcher eintrag schon besteht. wenn ja soll er mir die ID sagen,damit ich diese dann als Sekundärschlüssel in eine andere Tabelle eintragen kann. Wenn nein soll er mir die Daten in die DB eintragen und mir dann die "neue" ID geben.

ich schaff es aber leider nicht, nur die ID zu bekommen!

bin schon ziemlich verzweifelt, vielleicht kann mir ja jemand helfen. bin füf jeden ansatz dankbar!

lg und schönen abend noch

cherry1604
cherry1604 ist offline   Mit Zitat antworten
Alt 21.09.2003, 08:23   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

PHP-Code:
$query="select OrtID from Orte where OrtNamen ='$OrtNamen' and OrtPLZ ='$OrtPLZ' and OrtBundesland ='$OrtBundesland'"
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 21.09.2003, 23:38   #3
cherry1604
Newbie
 
Registriert seit: 21.09.2003
Alter: 42
Beiträge: 4


Standard

zuerst einmal danke pong für deine hilfe

wie ich leider feststellen musste ist mein problem doch unfangreicher als ich zu beginn dachte.

sinn des ganzen soll es sein, dass ich die ID eines eintrages bekomm, damit ein und der selbe eintrag nicht doppelt vorkommt.

kleines beispiel: ich möchte ein neues objekt (es handelt sich hierbei um ein haus, wohnung etc. - ist für eine virtuelle immobilien firma) anlegen. um eine redundanz zu vermeiden, soll in der DB abgefragt werden ob es z.b. den eintrag Ortsnamen ="Wien", OrtPLZ="1190", OrtBundesland="Wien" schon gibt. wenn ja soll mir die DB die zugehörige ID geben. wenn nein, sollen die daten eingetragen werden und mir dann die zugehörige ID gegeben werden.

hier ist mal der teil den ich programmiert habe:
$query="select OrtID from Orte where OrtNamen ='$OrtNamen' and OrtPLZ ='$OrtPLZ'and OrtBundesland ='$OrtBundesland'";
$OrtID=mysql_query($query);

list($OrtID) = mysql_fetch_row($result);
// hier will ich nurmal überprüfen ob er mir die richtige ID gibt, oder nicht


if ($OrtID == 0)
{
$query="insert into Orte (OrtNamen,OrtPLZ,OrtBundesland) values (";
$query .= "'$OrtNamen','$OrtPLZ','$OrtBundesland');";
$result=mysql_query($query);
}
else
{
break;
}
----------Ende--------------

was sagt ihr, kann das so funktionieren??? bin schon ziemlich ratlos, da ich auch keine guten infos auf div. programmier seiten finde!

vielleicht kann mir ja wer helfen, danke im vorraus.

lg cherry 1604
cherry1604 ist offline   Mit Zitat antworten
Alt 22.09.2003, 02:28   #4
jonix
Veteran
 
Registriert seit: 03.08.2000
Alter: 47
Beiträge: 461


Standard

ich weiss ja nicht wie tief du in diese materie vordringen willst, aber die loesung zu deinem problem ist prinzipiell die normalisierung von datenbanken.

einer von vielen artikeln zu diesem thema ist dieser: http://web02.zdnet.de/builder/artike...mal_01-wc.html

vielleicht hilfts:
PHP-Code:
$query "SELECT OrtID FROM `Orte` "
       
"WHERE (OrtNamen='$OrtNamen' AND OrtPLZ='$OrtPLZ' AND OrtBundesland='$OrtBundesland')";
$result mysql_query($query);

// wenn mehr als 0 Ergebnisse vorhanden sind...
if(mysql_num_rows($result))
{
  
$row mysql_fetch_row($result);
  
// ...ist das die OrtID
  
$OrtID $row[0];
}
// sonst...
else
{
  
// ...ab in die Datenbank damit  
  
$query "INSERT INTO `Orte`"
         
" (OrtNamen,OrtPLZ,OrtBundesland) "
         
"VALUES ";
         . 
" ('$OrtNamen','$OrtPLZ','$OrtBundesland')";
  
$result mysql_query($query);

____________________________________
hampel.at
jonix ist offline   Mit Zitat antworten
Alt 22.09.2003, 16:01   #5
cherry1604
Newbie
 
Registriert seit: 21.09.2003
Alter: 42
Beiträge: 4


Standard

danke, dass ihr mir so geholfen habt. hat mich wirklich weiter gebracht. ich hab jedoch leider noch ein kleines problem.

leider bekomm ich jetzt jedoch folgende fehlermeldung.

"Fatal error: Maximum execution time of 30 seconds exceeded ..."

ich hab keine ahnung was ich noch machen muss/soll damit es funktioniert!

vielleicht kann mir jemand helfen, danke im vorraus.

lg cherry1604

hier der code:

PHP-Code:
while (true) {
 
// Überprüfen der Eigentuemer ID
$query "SELECT EigentuemerID FROM `Eigentümer` "
      
."WHERE (EigentuemerAnrede='$anrede' AND EigentuemerVorname='$vorname' AND EigentuemerNachname='$nachname' AND EigentuemerStraße='$strasse' AND EigentuemerOrt='$OrtID')";
$result mysql_query($query);

// wenn mehr als 0 Ergebnisse vorhanden sind...
  
if(mysql_num_rows($result))
  {
    
$row mysql_fetch_row($result);
    
// ...ist das die Eigentuemer ID
    
$EigentuemerID $row[0];
    break;
   }
     
// sonst...
     
else
     {
     
// ...ab in die Datenbank damit
    
$query="insert into Eigentümer (EigentuemerAnrede,EigentuemerVorname,EigentuemerNachname,EigentuemerStraße,EigentuemerOrt) values (";
    
$query .= "'$anrede','$vorname','$nachname','$strasse','$OrtID')";
    
$result=mysql_query($query);
    }
}
//**********************************************************
 
while (true) {
//Überprüfen der Beschreibungs ID
$query "SELECT BeschreibungID FROM `Beschreibung` WHERE (BeschreibungWohnflaeche='$flaeche' AND BeschreibungZimmeranzahl='$zimmer' AND BeschreibungStockwerke='$stock' AND BeschreibungLift='$lift' AND BeschreibungKeller='$keller' AND BeschreibungMoebliert='$moebliert')";
$result mysql_query($query);

// wenn mehr als 0 Ergebnisse vorhanden sind...
   
if(mysql_num_rows($result))
   {
    
$row mysql_fetch_row($result);
    
// ...ist das die Beschreibungs ID
    
$BeschreibungID $row[0];
    }
    
// sonst...
       
else
      {
      
// ...ab in die Datenbank damit
      
$query="insert into Beschreibung "
            
."(BeschreibungWohnflaeche,BeschreibungZimmeranzahl,BeschreibungStockwerke,BeschreibungLift,BeschreibungKeller,BeschreibungMoebliert) values (";
      
$query .= "'$flaeche','$zimmer','$stock','$lift','$keller','$moebliert')";
      
$result=mysql_query($query);
      }
}
//************************************************************
 //Eintrag in die Tabelle Objekte der ID's

    
$query="insert into Objekte (ObjektArt,ObjektPreis,ObjektBaujahr,ObjektEigentuemer,ObjektBeschreibung) values (";
    
$query .= "'$KategorieName','$preis','$baujahr','$EigentuemerID','$BeschreibungID')";
    
$result=mysql_query($query);

 
mysql_close($server); 
cherry1604 ist offline   Mit Zitat antworten
Alt 22.09.2003, 16:16   #6
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

also so ganz durchblicken tu ich das noch immer nicht, warum gibst du nicht einfach deiner id einen primärschlüssel und dann ersparst du dir die komische suche nach der id?

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Alt 22.09.2003, 16:27   #7
cherry1604
Newbie
 
Registriert seit: 21.09.2003
Alter: 42
Beiträge: 4


Standard

meine datenbank besteht aus mehreren tabellen. 'OrtID' ist der primärschlüssel der tabelle 'Orte', jedoch soll dieser eintrag - und zwar nur die ID in einer anderen tabelle (Eigentümer) als fremdschlüssel eingetragen werden.

ich hoffe das ich es halbwegs verständlich erklären hab können.

lg cherry
cherry1604 ist offline   Mit Zitat antworten
Antwort


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

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.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:08 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag