Zaczynam kombinować z klasami (ciekawie to wygląda) i zbudowałem sobie takie maleństwo do wstawiania rekordu do tablicy (rzecz jasna jest częścią klasy):
[php:1:90532def57]<?php
function wstaw($tabela, $wartosci)
// wstawia nowe pole do tabeli ($tabela). $wartosci musi być tablicą o ilości parametrów
// równej ilości pól w tabeli.
{
global $baza;
$lista = mysql_list_fields($baza, $tabela);
$ilosc = mysql_numfields($lista);
$max = $ilosc - 1;
if (!is_array($wartosci))
{ return -1; exit;}
else
{ $liczba = count($wartosci);
if ($liczba <> $ilosc)
{ return -2; exit;}
else
{
for ($w = 0; $w <= $ilosc-1; $w++)
{
$nazwy .= mysql_fieldname($lista,$w);
$wart .= $wartosci[$w];
if ($w <> $ilosc-1) { $nazwy .= ", "; $wart .= ", ";};
}
$sql = "INSERT INTO $tabela ($nazwy) VALUES ($wart)";
$result = mysql_query($sql) or die ('Błąd podczas wykonywania zapytania [funkcja "wstaw"].');
return 0;
};
};
}
?>[/php:1:90532def57]
Działa, wstawia tak, jak trzeba. Mam jednak dwa pytania:
1. Jak sądzicie, czy rozwiązanie polegające na wydłubywaniu nazw pól z bazy jest ergonomiczne? Może lepiej byłoby ręcznie podawać pola?
2. Zastosowanie for zamiast foreach jest dobrym rozwiązaniem?