php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.09.2004, 10:34  
Gast
 
Beiträge: n/a
Standard [Erledigt] Tabellenname eines Feldes ermitteln

Hi!

Ich habe da ein Problem mit MSSQL in Verbindung mit PHP und ADODB.

TECHNISCHE DATEN:
~~~~~~~~~~~~~~~~~
Datenbank: Microsoft SQL Server (MSSQL 7.0)
Interpreter: PHP 4.2x
PHP Modul: ADODB 4.52


WORUM ES GEHT:
~~~~~~~~~~~~~~
Es geht um ein php Tool, dass auf Basis von den aus einer SQL-Abfrage gewonnenen Informationen, eine Übersicht und ein
Eingabeformular erstellt.

In der Übersicht sollen alle Daten, die aus der SQL-Abfrage resultieren angezeigt werden.

Das Eingabeformular soll aber nur für eine der Tabellen, die in dieser SQL-Abfrage vorkommen,
angelegt werden, so dass man diese bestimmte Tabelle mit dem Formular füllen kann.


MEIN PROBLEM:
~~~~~~~~~~~~~
Ich erhalte alle möglichen Informationen über die Datenbank, die Tabellen und die Felder.
Auch das ermitteln der in der SQL-Abfrage verwendeten Felder ist kein Problem.
Aber mir bleibt zu jedem Feld die Vater-Tabelle verborgen.
Keine Ahnung zu welcher Tabelle ein Feld gehört ?!?

Vor kurzem habe ich gelesen, dass in den MSSQL Datenbanken Version 7 und 2000 der PHP Befehl "mssql_fetch_field"
das Element "column_source" nicht mehr mit dem Tabellennamen bestückt, sondern noch einmal den Feldnamen hergibt.
Ebenso liefert auch ADODB's FetchField($field) zweimal den Feldnamen.

Zweimal den Feldnamen auszugeben macht meines erachtens nicht wirklich Sinn .. handelt es sich da um einen Bug?

Da ich aber zu jedem ermittelten Feld zwingend den Tabellennamen benötige bin ich für jegliche Hilfe dankbar!
Was kann ich tun?
Gibts da draußen jemand der sich etwas besser mit MSSQL auskennt als ich?


MÖGLICHE ANSÄTZE:
~~~~~~~~~~~~~~~~~
Folgende Lösungsansätze hab ich bislang in Erwägung gezogen:

1. Zerlegen der SQL-Abfrage und herausfiltern der Tabellennamen und der Feldnamen.
Bedingung: Vor jedem Feldnamen muss der Tabellenname stehen.
Nachteile: Die SQL-Abfrage muss zwingend nach einem vordefiniertem Chema aufgebaut sein, so das der Parser ihn verstehen kann.

2. Nachträgliche Ermittlung des Tabellennamens mittels einer weiteren SQL-Abfrage.
Bedingung: Es muss irgendwie eine Möglichkeit bestehen, mittels des Feldnamens die passende Tabelle zu finden.
Nachteile: Nicht eindeutige Feldbezeichner können nicht eindeutig einer Tabelle zugeordnet werden.
(z.B. ein Feld mit der Bezeichnung "ID" könnte in verschiedenen Tabellen vorkommen)

3. Mit der Feld Objekt ID den Tabellennamen ermitteln:
Bedingung: Man braucht diese Feld Objekt ID.

Beispiel SQL-Abfrage zum ermitteln des Tabellennamens mittels der Feld Objekt ID:

SELECT dbo.syscolumns.name, dbo.syscolumns.id, dbo.syscolumns.xtype, dbo.syscolumns.typestat, dbo.sysobjects.name
FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id WHERE (dbo.syscolumns.id = ".$object_id.")

WIE komme ich an diese Feld Objekt ID heran?

IRGENDWELCHE IDEEN ?
~~~~~~~~~~~~~~~~~~~~
So langsam bin ich mit meinem Latein am Ende.
Wenn ihr noch irgendwelche Ideen habt dann immer her damit .. wäre doch gelacht wenn mir diese Tabellennamen auf ewig verborgen blieben!

Schonmal danke für eure Mühe :)
- Frank -

-------------------------------
fjacob at SolTeCon.com
www dot SolTeCon dot com
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.09.2004, 10:57  
Gast
 
Beiträge: n/a
Standard

Zitat:
Das Eingabeformular soll aber nur für eine der Tabellen, die in dieser SQL-Abfrage vorkommen,
angelegt werden, so dass man diese bestimmte Tabelle mit dem Formular füllen kann.

Kurze Frage wie wählst Du die "Tabelle" aus welche Du dann
befüllen willst ?

Oder verstehe ich das falsch ? Da Du ja entweder vorher eine
Tabelle auswählen musst woher Du die Infos der Tabelle beziehst
oder Du hast eine Sql-Abfrage in der die Tabelle schon steht ?

Ich habe das so verstanden an das Script wird eine Anweisung-Sql geschickt ...

SELECT id,name FROM tabelle WHERE ...

und nun willst Du daten oder die Struktur der Tabelle Darstellen und
ein Eingabe formular für eben diese tabelle....

-> tabellennamen
$res=mysql_query(SELECT id,name FROM tabelle WHERE ...);
$erg=mysql_field_table($res,1);

ECHO $erg;

-> ausgabe sollte doch
tabelle
sein , oder !?

  Mit Zitat antworten
Alt 22.09.2004, 11:12  
Gast
 
Beiträge: n/a
Standard

Zitat:
Kurze Frage wie wählst Du die "Tabelle" aus welche Du dann
befüllen willst ?
Mein Tool erhält eine benutzerdefinierte SELECT-Abfrage, die im schlimmsten Fall aus hunderten von JOINTS besteht und eine Ergebnismenge, bestehend aus den Feldern und den Daten liefert.

Zu jedem Feld dieser Ergebnismenge brauche ich nun die Tabelle, um
dem Benutzer eine distinkte Liste mit allen Tabellen zu liefern aus der er sich nun eine aussuchen darf.
Zitat:
-> tabellennamen
$res=mysql_query(SELECT id,name FROM tabelle WHERE ...);
$erg=mysql_field_table($res,1);

ECHO $erg;

-> ausgabe sollte doch
tabelle
sein , oder !?
Wenn es sich bei meiner Datenbank um eine MySql Datenbank handeln würde, ja.

Aber es ist ja gerade ein Problem von Microsoft MSSQL 7/2000, dass diese Funktion nicht so funktioniert wie sie funktiionieren sollte.
  Mit Zitat antworten
Alt 22.09.2004, 15:49  
Gast
 
Beiträge: n/a
Standard

hi,

das ganze sieht schwer nach einem bug aus :[

http://groups.google.de/groups?q=mss....edu.tw&rnum=1

gruss
Sike
  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
Einzeltreffer von MATCH ... AGAINST ... ermitteln proud Datenbanken 3 09.05.2008 08:31
Inhalt eines Feldes auf anderer Seite übernehmen Asipak PHP Tipps 2006 2 11.06.2006 17:39
Google Adwords - echten Referer ermitteln NetLook PHP Tipps 2006 2 12.05.2006 08:40
Die Position ein. Datensätzes aus einer Datenliste ermitteln Locutus007 Datenbanken 8 07.03.2006 16:59
Dateiname, Dateigröße ermitteln HTML, Usability und Barrierefreiheit 5 29.01.2006 22:16
URL ermitteln Mutatos PHP Tipps 2005-2 7 08.10.2005 18:05
build nummer des bs ermitteln ... nur bei microsoft's bs!!! PHP Tipps 2005-2 2 24.07.2005 15:59
Besucher mit den meisten GB Einträgen ermitteln! Datenbanken 7 21.04.2005 12:09
Bildschirmauflösung ermitteln? Pimbolie1979 HTML, Usability und Barrierefreiheit 13 16.01.2005 01:28
pixelbreite eines Wort ermitteln... 18inch PHP Tipps 2005 5 07.01.2005 22:55
CRC Summe einer Datei ermitteln?? PHP Tipps 2004 1 14.10.2004 09:23
nur einen Teil des Inhaltes eines Feldes auslesen supertramp Datenbanken 7 15.09.2004 12:09
Referrer ermitteln? PHP Tipps 2004 8 13.09.2004 13:43
Wert eines automatisch inkrementierten Feldes ermitteln Datenbanken 1 01.08.2004 19:22
Wert eines Feldes abfragen und subtrahieren Datenbanken 4 04.07.2004 14:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql tabellennamen ermitteln, sql feldnamen ermitteln, php tabellenname, sql tabellennamen herausfinden, sql feldname ermitteln, sql server feldnamen auslesen, tabellenname sql herausfinden, php namen tabellenspalten ermitteln, sql tabellennamen ausgeben, http://www.php.de/php-fortgeschrittene/9484-erledigt-tabellenname-eines-feldes-ermitteln.html, distinkte liste, mysql tabellenname nach join ermitteln, sql tabellen namen ermitteln, php tabellenname ermitteln, sql felder ermitteln, tabellenname aus abfrage mysql, sql abfragen crc, sql herausfinden ob feld vorhanden, php name der tabellen, tablename sql server abfragen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:00 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.