Forum

Moderiert von: spinne
Forum: Codeschnippsel
Sie schreiben eine Antwort zum Thema: Datenbank auslesen
Gehe zu: OpenPHPNuke - das Open Source CMS Forum Index


über den Beitrag: Auch anonyme Benutzer können in diesem Forum neue Themen eröffnen und Antworten schreiben.
Benutzername:
Nachrichtensymbol:
                                                                                                                       

more...


HTML : An
BBCode : An
 


Klicken Sie auf die Smilies, um diesen in Ihre Nachricht einzufügen:

Very Happy Very Happy Smile Smile Sad Sad Surprised Surprised
Confused Confused Cool Cool Laughing Laughing Mad Mad
Razz Razz Embaressed Embaressed Crying (very sad) Crying (very sad) Evil or Very Mad Evil or Very Mad
Rolling Eyes Rolling Eyes Wink Wink Another pint of beer Another pint of beer ToolTimes at work ToolTimes at work
I have an idea I have an idea

more... 
Einstellungen:







 
Sicherheits-Code
Sicherheits-Code
Neu laden

Thema im Überblick

Autor
Gast
Unregistrierter Benutzer
Datenbank auslesen

Geschrieben: 19.01.2007 22:21

Stefan,
schläfst Du denn nie?

Jedenfalls Danke an alle für die Tipps - ich hab's dank Eurer Hinweise gefunden. Das Statement sah wie folgt aus:

$sql="select fq.Druckansicht, COALESCE(iv.Anzahl,0)
from ANMELDUNG_FREQUENZEN fq
LEFT OUTER JOIN
(
select FREQ_27_1 AS Frequenz, count(*) as Anzahl
from ANMELDUNG_LUNZ_2007
where FREQ_27_1 ' '
group by FREQ_27_1
UNION .......

Das hat im PHPNUKE offenbar funktioniert, weil die LIST-Funktion offenbar was Spezielles tut. Mit einer leichten Modifikation...
$sql="select fq.Druckansicht AS Frequenz, COALESCE(iv.Anzahl,0) as Anzahl
from ANMELDUNG_FREQUENZEN fq
LEFT OUTER JOIN
(
select FREQ_27_1 AS Frequenz, count(*) as Anzahl
from ANMELDUNG_LUNZ_2007
where FREQ_27_1 ' '
group by FREQ_27_1
UNION

Waren die Fehler dann weg. Der Grund ist klar: MySQL gibt die Felder unter dem Namen "Druckansicht" bzw. "COALESCE(iv.Anzahl,0)" zurück - und nicht als "Frequenz" und "Anzahl". Wenn man's weiß ist die Lösung immer einfach

Danke nochmals,
Boby
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
anonymous
Unregistrierter Benutzer
Datenbank auslesen

Geschrieben: 19.01.2007 14:02

Soweit ich weiss werden die assoc. Indizes immer in Kleinschreibung von der SQL Klasse erzeugt.
Von daher sind die Warnings korrekt. Da es ->fields['Frequenz'] nicht gibt aber ->fields['frequenz'].
Eine einheitliche Indexnamensgebung ist schon sinnvoll, da es bei den diversen SQL Servern verschiedene Schreibweisen gibt:
1. MySQL Kleinschreibung
2. Interbase/Firebird Grossschreibung
3. Postgres Standard Kleinschreibung, mit " gefasste Namen können gemischte Schreibweise audweisen.
Mit diesen Möglichkeiten hat man dann bei einer Anwendung wie OPN nur 2 Möglichkeiten:
1. Layer für die Wandlung von Feld- und Tabellennanmen
2. Wandlung der Namen un Gross- oder Kleinschreibung

Punkt 1 kommt IMHO nicht in Frage, da es wieder 2 Probleme gibt:
1. Speicherplatz
2. Laufzeit.


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Datenbank auslesen

Geschrieben: 19.01.2007 04:30

wo definierst du denn das $sql aus der zeile

$result = $opnConfig['database']->Execute($sql);

also was steht da drin in $sql


Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Datenbank auslesen

Geschrieben: 19.01.2007 00:22

Danke vorerst für die rasche Antwort.
In meinem Beispiel möchte ich eine einfache Tabelle auslesen & ausgeben - und abhängig von dem Inhalt eines Feldes die Hintergrundfarbe der jeweiligen Zelle verändern.
Ich habe das einmal wie folgt übernommen:

echo '<TABLE border=1><TR><TD><b>Frequenz</TD><TD><b>Anzahl<BR>Belegung</b></TD></TR>';
$result = $opnConfig['database']->Execute($sql);
if ($result !== false)
{
while (! $result->EOF)
{
$Frequenz = $result->fields['Frequenz'];
$Anzahl = $result->fields['Anzahl'];
switch ($Anzahl)
{case "0": $fq_background = 'bgcolor="#33CC33"'; break;
case "1": $fq_background = 'bgcolor="#33CC33"'; break;
case "2": $fq_background = 'bgcolor="#FFFF00"'; break;
case "3": $fq_background = 'bgcolor="#FF9933"'; break;
default: $fq_background = 'bgcolor="#FF0000"';
}
echo "<TR $fq_background><TD>" . $Frequenz . "</TD><TD> " . $Anzahl . "</TD></TR>";
$result->MoveNext ();
     }
echo '</TABLE>';


Auf der Seite kommt (statt jeden gelesenen Satz) folgende Meldung:
WARNING [8] Undefined index: Frequenz
FOUND IN [system/anypage/functions_center.php(104) : eval()'d code]
FOUND AT 120
WARNING [8] Undefined index: Anzahl
FOUND IN [system/anypage/functions_center.php(104) : eval()'d code]
FOUND AT 121

Was läuft da falsch?

Ciao,
Boby
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Datenbank auslesen

Geschrieben: 18.01.2007 05:22

Gibt mehrere Möglichkeiten

z.B.

$sql = 'SELECT id FROM ' . $opnTables['tabelle_in_opn'] . ' WHERE wert=' . $integer;
$result = $opnConfig['database']->Execute ($sql);
if ($result !== false) {
while (! $result->EOF) {
$id = $result->fields['id'];

echo $id;

$result->MoveNext ();
}
}

oder

$sql = 'SELECT id FROM ' . $opnTables['tabelle_in_opn'] . ' WHERE wert=' . $integer;
$result = $opnConfig['database']->SelectLimit ($sql, $maximal, $offset);
if ($result !== false) {
while (! $result->EOF) {
$id = $result->fields['id'];

echo $id;

$result->MoveNext ();
}
}

Gibt aber noch weitere



Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Datenbank auslesen

Geschrieben: 17.01.2007 23:34

Hi,
ich habe eine Tabelle in meiner Datenbank angelegt und möchte nun OPN-Funktionen verwenden, um diese auszulesen.

Unter PHPNuke machte ich das so:

1) Query definieren (=Stringzuweisung)
2) Query durchführen: $res = sql_query($q,$dbi);
3) Resultset in einer Schleife auslesen (in diesem Beispiel zwei Felder):
while(list($Frequenz, $Anzahl)= sql_fetch_row($res,$dbi))
Innerhalb der Schleife waren die Felder dann mit z.B. $Frequenz oder $Anzahl anzusprechen.

Ich habe nun diese PHP-Seite nach Anypage migriert, habe aber keinen Dunst wie ich unter OPN den Zugriff machen kann (ich würde gerne die Standardfunktionen nutzen, damit ich die ganze DB-Config nicht noch einmal irgendwo anführen muss).

Ich brauche keine Arrays etc. - mir reicht ein stinknormales "Variable auslesen", um's dann gleich auf den Schirm zu schreiben.

Danke für Eure Tipps!
Boby
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben