entweder for oder foreach, oder eine andere form (while) - foreach und dann darin $i nutzen ist insofern unsinnig, als dass in $row als einzel(object) von $rows bereits der aktuelle datensatz zu finden ist und so nicht mit einem kuenstlichen index auf $rows[$i] zugegriffen werden muss. zuvor gehoert in die datenbankabfrage zumindest eine fehlerpruefung. ausserdem sollte man anfangen dieses copy & paste passing by reference zu unterbinden. & ist also unnoetig.
In PHP 5, the infrastructure of the object model was rewritten to work with object handles. Unless you explicitly clone an object by using the clone keyword you will never create behind the scene duplicates of your objects. In PHP 5, there is neither a need to pass objects by reference nor assigning them by reference.
als naechstes trennt man code vom html / design part und strukturiert helper / und layout / template entsprechend. dazu gehoert ergebnisse / rueckgabewerte nicht bereits vor der verarbeitung mit tags zu "verunreinigen". die iteration durch das array und das bilden von zellen oder listen sollte im layout passieren. stichwort template / layout overrides.
im detail zu axel:
PHP-Code:
// durchlauf 1 ($i = 0)
$buddyid = $row->memberid; // ueberfluessig, da in der zeile darunter die id in buddyname[$i] gespeichert wird
$buddyname[$i] = $buddyid; // angenommen die $memberid aus $row war 3 steht jetzt in $buddyname[0] = 3
$bid =& JFactory::getUser($buddyid); // ein neues juser object mit den daten der userid 3 wird geladen und in $bid abgelegt
$buddyname[$i] = $bid->username; // $buddyname[0] wird ueberschrieben mit dem namen des zuvor geladenen benutzers
PHP-Code:
<?php
// vorherige abfrage ob das array ueberhaupt gefuellt ist count($rows) empty($rows)
foreach ($rows as $row) :
$user = JFactory::getUser($row->memberid);
?>
<tag><?php echo $user->get('username'); ?></tag>
<?php endforeach; ?>
vielleicht ist die buddy id NULL und oder es gibt keinen user mehr mit der id, in beiden faellen waere es ratsam eine zusaetzliche fehlerabfrage einzubauen.
zu kurtmos:
gewoehne dir an den select nicht mit * zu machen, egal wie viele daten du abfraegst, oder spaeter verarbeiten willst, selbst wenn es wirklich alle felder sind. auflisten und nen alias verwenden. ebenso an die quotes denken, erst recht wenn von ausserhalb filter in den query einspielen.
PHP-Code:
$testvar = $test[$i] = "$wert->value";
hier wird in einem vorher nicht definierten array $test und einem kuenstlichen index der wert von $wert->value zugewiesen. die doppelten anfuehrungszeichen sind kaese. die zuweisung ist quasi das gleiche spiel wie in axels code und macht so ganz und gar keinen sinn.
PHP-Code:
$testvar != hidden
der ganze code ist an sich nicht schluessig. selbst wenn der wert in $testvar "hidden" waere, gehoert der zu testende string in einfachen oder doppelte anfuerhungszeichen. sonst wird angenommen es handelt sich um eine konstante.
weiterfuehrenden informationen:
http://wiki.joomla-nafu.de/joomla-do...Factory/getDBO
http://wiki.joomla-nafu.de/joomla-do...mierung/Module
http://wiki.joomla-nafu.de/joomla-do...ramework/JUser
http://wiki.joomla-nafu.de/joomla-do...telle:Override
Lesezeichen