WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   ID aus Datenbank auslesen (http://www.wcm.at/forum/showthread.php?t=109478)

cherry1604 21.09.2003 01:30

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

pong 21.09.2003 08:23

PHP-Code:

$query="select OrtID from Orte where OrtNamen ='$OrtNamen' and OrtPLZ ='$OrtPLZ' and OrtBundesland ='$OrtBundesland'"

pong

cherry1604 21.09.2003 23:38

zuerst einmal danke pong für deine hilfe

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

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

jonix 22.09.2003 02:28

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);



cherry1604 22.09.2003 16:01

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); 


snowman 22.09.2003 16:16

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

cherry1604 22.09.2003 16:27

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:52 Uhr.

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