php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.06.2004, 11:59  
Gast
 
Beiträge: n/a
Standard [Erledigt] Fehlerhafte Abfrage ?

Hallo,

ich will für verschiedene Artikel jeweils den Objektnamen aus der DB auslesen.

Bisher hatte ich diese Abfrage in jeder Datei, die den Objektnamen benötigte. Das heisst, bei einer Änderung bin ich stundenlang damit beschäftigt, die Änderung in jeder einzelnen Datei vorzunehmen.

Deshalb möchte ich diese DB-Abfrage in eine objekt.inc.php stecken, und in der entsprechenden Datei nur includen und per "echo $objekt;" ausgeben lassen.

Ist es denn grundsätzlich möglich, diese Abfrage in einer .inc.php auszuführen, und diese Datei dann bei jeder anderen Datei, die die Objektart benötigt, zu includen ?

Die Abfrage in der objekt.inc.php sieht so aus:


Code:
$query="SELECT objekt FROM i_auctions"; 
$result=mysql_query($query); 
while($row=mysql_fetch_array($result, MYSQL_ASSOC)) 

switch ($objekt) 
{ 
    case 0: 
       $objekt = "Einfamilienhaus"; 
       break; 
    case 1: 
       $objekt = "Zweifamilienhaus"; 
       break; 
    case 2: 
       $objekt = "Reihenhaus"; 
       break; 
     ... 
     ...
Ist diese Abfrage so richtig ?

In jede ausgebende Datei include ich dann nur die objekt.inc.php .

Geht das ?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.06.2004, 13:44  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Das ist grundsätzlich schon möglich. Allerdings ist in deinem Beispiel $objekt (in switch) nicht definiert. Ich denke es muss "$row['objekt']" heissen. Und wenn du dann "echo $objekt" aufrufst, gibst du nur das Objekt des letzten Datensatzes aus - und ich bezweifle, ob das beabsichtigt ist. Ausserdem würde ich das ganze in eine Funktion packen, aber das ist Ansichtssache.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 24.06.2004, 13:51  
Gast
 
Beiträge: n/a
Standard

Zitat:
Ich denke es muss "$row['objekt']" heissen.
ok, sieht jetzt wie folgt aus:


Code:
$query="SELECT objekt FROM i_auctions";
$result=mysql_query($query);
while($row=mysql_fetch_array($result, MYSQL_ASSOC))

  switch ($objekt) {
      case 0:
        $row['objekt'] = "Einfamilienhaus";
        break;
      case 1:
        $row['objekt'] = "Zweifamilienhaus";
        break;
...

Zitat:
Und wenn du dann "echo $objekt" aufrufst, gibst du nur das Objekt des letzten Datensatzes aus - und ich bezweifle, ob das beabsichtigt ist.
Das ist nicht beabsichtigt. Es soll für jedes Objekt der Objektname zugewiesen werden. In der DB stehen Ziffern, und diese Ziffern werden ausgelesen und sollen dann in den Objektnamen umgewandelt werden (und auch ausgegeben werden)...
  Mit Zitat antworten
Alt 24.06.2004, 13:59  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Die Korrektur war jetzt genau am falschen Ort. Und wenn du alle ausgeben willst machs doch gleich:
Code:
$query="SELECT objekt FROM i_auctions";
$result=mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($result, MYSQL_ASSOC))
{
  switch ($row['objekt']) 
  {
      case 0:
        echo "Einfamilienhaus";
        break;
      case 1:
        echo "Zweifamilienhaus";
        break;
      ....
   }
}
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 24.06.2004, 14:09  
Gast
 
Beiträge: n/a
Standard

Nochmal:

In der DB stehen Ziffern, jede Ziffer steht für ein Objekt.

Z.B.
1= Einfamilienhaus
2= 2fam.-haus
3= Penthouse etc.

Ich habe jetzt verschiedene Listen, unter anderem meistbesuchte Auktionen. Die Objektnamen dieser Auktionen will ich zuweisen:

Zuerst lese ich die Zahlen der db aus, und jetzt will ich den einzelknen Zahlen den Objektnamen zuweisen.

Beispiel:

4 in 00000 Musterstadt
wird zu
Ferienimmobilie in 00000 Musterstadt

1 in 00000 Musterstadt
wird zu
Einfamilienhaus in 00000 Musterstadt

12 in 00000 Musterstadt
wird zu
Gewerbeimmobilie in 00000 Musterstadt

etc.

Die Abfrage (select etc) erfolgt in der objekt.inc.php

Die Ausgabe in einer externen Datei, in welche die objekt.inc.php includet wird.

Daher darf die Ausgabe (echo "Einfamilienhaus"; ) nicht in der objekt.inc.php stehen.

EDIT:

Hab das mal folgendermassen probiert:


Code:
$query="SELECT objekt FROM i_auctions";
$result=mysql_query($query);
while($row=mysql_fetch_array($result, MYSQL_ASSOC))

  switch ($row['objekt']) {
      case 0:
        $objekt = "Einfamilienhaus";
        break;
      case 1:
        $objekt = "Zweifamilienhaus";
        break;
...
...
und erhalte als Ausgabe für JEDES Objekt: Baugrundstück (27), obwohl die Abfrage in der DB 11 ergibt (= Penthouse)....
  Mit Zitat antworten
Alt 24.06.2004, 15:00  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wenn du in der DB nur die Zahlen hast, dann verstehe ich nicht, wozu die gut sein soll. Falls sie aber Ziffern und Objekte enthält, so musst du die Anfrage ändern. Ausserdem würde ich nochmals vorschlagen, eine Funktion zu erstellen:
Code:
function get_object($o_nr);
    query="SELECT objekt FROM i_auctions where nr = $o_nr";
    $result=mysql_query($query) or die(mysql_error()); 
    $row = mysql_fetch_object($result);
    return($row->object);
}
diese Funktion plazierst du in objekt.inc.php. und im Script kannst du dann z.B. direkt
Code:
echo get_object(4) . ' in 00000 Musterstadt
';
ausgeben.
Es stellt sich allerdings die Frage, ob es sich lohnt, für so etwas die DB zu bemühen. So wenige Objekte könnte man auch gleich aus einem Array holen. Aber das ist wiederum Ansichtssache.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 24.06.2004, 15:17  
Gast
 
Beiträge: n/a
Standard

In der Datenbank stehen Objektnummern. Bevor ich in jeder Datei, die den Objektnamen benötigt, eine ellenlange if-Abfrage reinsetze (und das sind ca. 30 Dateien), will ich das per .inc.php machen, die dann nur includet wird.

Der eine sagte if-elseif, der andere array, der nächste switch, der nächste wieder array...

Ich suche doch nur ne Lösung, dass nicht jedes Objekt dauernd gleich heisst, obwohl es unterschiedliche Ziffern sind !



Zitat:
echo get_object(4).....
Wofür steht die 4 ?
  Mit Zitat antworten
Alt 24.06.2004, 15:32  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Die 4 ist genau deine Zahl. Wenn du in deiner i_auctions-Tabelle die Daten in der folgenden Form hast:
  • nr | objekt
    --------------
    0 | Einfamilienhaus
    1 | Zweifamilienhaus
    2 | Penthouse
    3 | Gewerbehaus
    4 | Ferienhaus
    ....
hast, wirst du als Resultat "Ferienhaus" erhalten. Natürlich kannst du die Funktion auch in der Art
Code:
function get_object($o_nr);
    $object = array( 'Einfamilienhaus', 'Zweifamilienhaus', 'Penthouse',  'Gewerbehaus', 'Ferienhaus', ...);
    return($object[$o_nr]);
}
implementieren und das Resultat wird das gleiche sein.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 24.06.2004, 15:36  
Gast
 
Beiträge: n/a
Standard

Die Objektnamen stehen nicht in der DB, deshalb brauche ich ja die objekt.inc.php, damit z.B. aus der Ausgabe 4 = Ferienimmobilie wird.

ich versteh das nicht dass das so umständlich ist, ich will doch nur die Objektnummern aus der DB auslesen und umwandeln in Objektnamen....und welche Nummer welchzen Objektnamen bedeutet, soll in der objekt.inc.php stehen, die ich dann nur noch includieren brauche.....


SELECT objekt FROM i_auctions

Wenn objekt = 1, dann objekt = Einfamilienhaus.
Wenn objekt = 2, dann 2familien-haus etc. usw.

Haben wir das erste objekt, geht es weiter mit dem nächsten....
  Mit Zitat antworten
Alt 24.06.2004, 15:43  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Dann mach das halt so. Ich begreife nur nicht, was du damit erreichen willst. Ich habe zwei Möglichkeiten gezeigt, die das, was du willst machen. Aber wenn du es anders willst OK.
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
abfrage begrenzen Cyrus Datenbanken 4 26.10.2005 11:29
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Abfrage in array? BartTheDevil89 Datenbanken 5 10.05.2005 14:21
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34
[Erledigt] Fehlerhafte Ausgabe einer Abfrage Datenbanken 3 17.06.2004 12:16
[Erledigt] Variable per GET übergeben und DB Abfrage nutzen PHP Tipps 2004 4 01.06.2004 15:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fehlerhafte abfragen in datenbank, php objektnamen abfragen, 2 familienhaus auf 1 familienhaus umwandeln

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:38 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.