Hallo zusammen,
ich habe ein problem mit einer Abfrage nachdem ich die mssql befehle durch obdc befehle ersetzt habe. Hierbei sollen mehrere Einträge aus einer Datenbank einer Kategorie ausgelesen werden und mit hilfe einer for-schleife dann nacheinanderer angezeigt werden.
Zuerst der "mssql" code der funktioniert:
funktion:
abfrage:
Und jetzt der "odbc" code:
funktion:
abfrage:
Wäre echt super wenn mir jemand einen Tipp geben könnte woran es liegt, das bei der "odbc-version" nur der letzte eintrag angezeigt wird. Hat es vllt mit i-welchen Treibern zu tuen? Wenn ja, wo kann ich die kontrolieren und wie kann ich sie laden/installieren?
Mfg Thomas
ich habe ein problem mit einer Abfrage nachdem ich die mssql befehle durch obdc befehle ersetzt habe. Hierbei sollen mehrere Einträge aus einer Datenbank einer Kategorie ausgelesen werden und mit hilfe einer for-schleife dann nacheinanderer angezeigt werden.
Zuerst der "mssql" code der funktioniert:
funktion:
PHP:
/**
* select eines oder mehrerer werte
* @param string $query
* @param string $ausgabe multiarray, array, single, handle
* @return string|multitype:|multitype:|unknown
*/
function sql_select($query, $returnType="array")
{
global $db;
if(empty($query) || count($query) > 5 )
throw new Exception("not allowed empty query");
if(empty($returnType))
throw new Exception("not allowed empty returntype");
$returnType = strtolower($returnType);
if($returnType != "array" && $returnType != "multiarray" && $returnType != "single" && $returnType != "handle")
throw new Exception("return type ".$returnType." not allowed");
//###
if ($abfrage = mssql_query($query, $db))
{
if($returnType == "single")
{
$ar = mssql_fetch_array($abfrage);
if(count($ar) > 0)
return $ar[0];
return "";
}//ende if
else if ($returnType == "multiarray")
{
//speichere alle werte in einem array
for ($i=0; $i < mssql_num_rows($abfrage); $i++)
{ /*print_r($abfrage);*/
$daten[$i] = mssql_fetch_array($abfrage);
}//ende for
return $daten;
}//ende else
else if ($returnType == "array")
{
return mssql_fetch_array($abfrage);
}//ende else
else if ($returnType == "handle")
{
return $abfrage;
}//ende elseif
}//ende if
else
{
die("<br><br><font color =\"red\">Can't Select...<br>$sql - $ausgabe<br></font>");
}//ende else
}//Ende function
abfrage:
PHP:
<?php
$daten_wdb_anzeige = sql_select($sql_wdb_anzeige, "multiarray");
print_r ($daten_wdb_anzeige);
////////////////////////////////////////////////////////////////////////
for($i=0; $i < count($daten_wdb_anzeige); $i++) {
<?php echo $daten_wdb_anzeige[$i]["thema"]; ?>
<?php echo $daten_wdb_anzeige[$i]["beschreibung"];?>
}
?>
<?php
$_counter++;
}
?>
Und jetzt der "odbc" code:
funktion:
PHP:
/**
* select eines oder mehrerer werte
* @param string $query
* @param string $ausgabe multiarray, array, single, handle
* @return string|multitype:|multitype:|unknown
*/
function sql_select($query, $returnType="array")
{
global $db;
if(empty($query) || count($query) > 5 )
throw new Exception("not allowed empty query");
if(empty($returnType))
throw new Exception("not allowed empty returntype");
$returnType = strtolower($returnType);
if($returnType != "array" && $returnType != "multiarray" && $returnType != "single" && $returnType != "handle")
throw new Exception("return type ".$returnType." not allowed");
//###
if ($abfrage = odbc_exec($db, $query))
{
if($returnType == "single")
{
$ar = odbc_fetch_array($abfrage);
if(count($ar) > 0)
return $ar[0];
return "";
}//ende if
else if ($returnType == "multiarray")
{
//echo "ja";
//speichere alle werte in einem array
for ($i=0; $i < odbc_num_rows($abfrage); $i++)
{
$daten[$i] = odbc_fetch_array($abfrage);
if (!empty ($daten)) { return $daten; }
//echo "<br>daten: ".$daten[$i];
}//ende for
if (!empty ($daten)) { return $daten; }
}//ende else
else if ($returnType == "array")
{
return odbc_fetch_array($abfrage);
}//ende else
else if ($returnType == "handle")
{
return $abfrage;
}//ende elseif
}//ende if
else
{
die("<br><br><font color =\"red\">Can't Select...<br>$sql - $ausgabe<br></font>");
}//ende else
}//Ende function
abfrage:
PHP:
<?php
$daten_wdb_anzeige = sql_select($sql_wdb_anzeige, "multiarray");
// hier wird nur der letzte eintrag angezeigt, bei der "mssql-version" werden 8 eintäge angezeigt
// es wird also auf die richtige db zugegriffen
print_r ($daten_wdb_anzeige);
////////////////////////////////////////////////////////////////////////
for($i=0; $i < count($daten_wdb_anzeige); $i++) {
<?php echo $daten_wdb_anzeige[$i]["thema"]; ?>
<?php echo $daten_wdb_anzeige[$i]["beschreibung"];?>
}
?>
<?php
$_counter++;
}
?>
Wäre echt super wenn mir jemand einen Tipp geben könnte woran es liegt, das bei der "odbc-version" nur der letzte eintrag angezeigt wird. Hat es vllt mit i-welchen Treibern zu tuen? Wenn ja, wo kann ich die kontrolieren und wie kann ich sie laden/installieren?
Mfg Thomas
Zuletzt bearbeitet: