Problem: Umstellung mssql -> odbc

Normal

Grünschnabel
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:

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:
Problem erstmal beseitigt

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
            $anzahl = odbc_num_rows($abfrage); 
                for ($i=0; $i <= $anzahl ;$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
 
Zurück