korzystam z biblioteki HTML_AJAX, łączę się z bazą zeby coś wyciągnąć a potem wrzucic to korzystając z technik ajaxa na strone.
i tu problem:
jak korzsytam z interfejsu mysqli, czyli:
Kod
class SheetSizes{
function getSizes($sheets_id){
$db = db_connect();
if (!$db){
return 0;
}
$querySizes = "select * from tSheets where "
."sheets_id ='$sheets_id';";
$result = $db->query($querySizes);
if (!$result){
return false;
}
$row = $result->fetch_assoc();
$sizes["name"] = $row["sheets_name"];
$sizes["columns"] = $row["sheets_columns"];
$sizes["rows"] = $row["sheets_rows"];
$db->close;
return $sizes;
}
}
function getSizes($sheets_id){
$db = db_connect();
if (!$db){
return 0;
}
$querySizes = "select * from tSheets where "
."sheets_id ='$sheets_id';";
$result = $db->query($querySizes);
if (!$result){
return false;
}
$row = $result->fetch_assoc();
$sizes["name"] = $row["sheets_name"];
$sizes["columns"] = $row["sheets_columns"];
$sizes["rows"] = $row["sheets_rows"];
$db->close;
return $sizes;
}
}
problem jest taki ze zmienna $result jest albo pusta, albo są w niej jakieś śmieci.
a jak korzsytam z proceduralnego interfejsu mysql:
Kod
class SheetSizes{
function getSizes($sheets_id){
if (mysql_connect('localhost', 'user', 'pass')and mysql_select_db('baza')) {
$wynik = mysql_query("select * from tSheets where sheets_id ='$sheets_id';");
mysql_close();
}
if ($wynik) {
$row = mysql_fetch_assoc($wynik);
}
$sizes["name"] = $row["sheets_name"];
$sizes["columns"] = $row["sheets_columns"];
$sizes["rows"] = $row["sheets_rows"];
return $sizes;
}
}
function getSizes($sheets_id){
if (mysql_connect('localhost', 'user', 'pass')and mysql_select_db('baza')) {
$wynik = mysql_query("select * from tSheets where sheets_id ='$sheets_id';");
mysql_close();
}
if ($wynik) {
$row = mysql_fetch_assoc($wynik);
}
$sizes["name"] = $row["sheets_name"];
$sizes["columns"] = $row["sheets_columns"];
$sizes["rows"] = $row["sheets_rows"];
return $sizes;
}
}
to wszystko jest ok...
używam mysqli od dawna, mam swoje pliki konfigurujące połączenia i udostępniające interfejs tego połączenia i wolałbym nie musieć pzechodzić na mysql.
po stronie klienta mam:
Kod
<script type='text/javascript'>
function buildSheet()
{
remoteSheetSizes.getSizes(1);
}
// Stworzenie tablicy asocjacyjnej do składowania metod zwrotnych
var sheetSizesCallback = {
getSizes: function(resultSet) {
if (!resultSet) drawTable(0, 0, 'brak');
else{
var name = resultSet["name"];
var columns = resultSet["columns"];
var rows = resultSet["rows"];
drawTable(columns, rows, name);
}
}
}
function drawTable(columns, rows, name)
{
var resultDiv = document.getElementById('tContent');
resultDiv.innerHTML = '';
resultDiv.innerHTML = name + ' ' + columns + ' ' + rows;
}
var remoteSheetSizes = new SheetSizes(sheetSizesCallback);//(sheetSizesCallback);
</script>
<input name="load" type="button" value="Load" onclick="buildSheet()" />
function buildSheet()
{
remoteSheetSizes.getSizes(1);
}
// Stworzenie tablicy asocjacyjnej do składowania metod zwrotnych
var sheetSizesCallback = {
getSizes: function(resultSet) {
if (!resultSet) drawTable(0, 0, 'brak');
else{
var name = resultSet["name"];
var columns = resultSet["columns"];
var rows = resultSet["rows"];
drawTable(columns, rows, name);
}
}
}
function drawTable(columns, rows, name)
{
var resultDiv = document.getElementById('tContent');
resultDiv.innerHTML = '';
resultDiv.innerHTML = name + ' ' + columns + ' ' + rows;
}
var remoteSheetSizes = new SheetSizes(sheetSizesCallback);//(sheetSizesCallback);
</script>
<input name="load" type="button" value="Load" onclick="buildSheet()" />
chciałbym żeby ktoś mi wytłumaczył dlaczego interfejs obiektowy mysqli nie działa poprawnie, a proceduralny mysql jak najbardziej tak. Czy to jakiś bug HTML_AJAX, czy może np popełniam błąd nawiązują w ten sposób połączenie wewnątrz klasy , która de facto jest potem przez ta bibliotekę odwzorowywana na obiekty JavaScriptu.
Pozdrawiam.