Hoe kan ik een bepaalde kolom uit een resultatenset benaderen

Status
Niet open voor verdere reacties.

ariecade

Gebruiker
Lid geworden
5 jun 2019
Berichten
146
Hallo,

Ik wil de zoekfunctie gebruiken van https://ajaxlivesearch.com/ in een website waar men een account heeft en ook een eigen avatar.

Op zich werkt het prima, ik heb de tabel gekoppeld aan deze zoekfunctie en krijg de juiste resultaten te zien.

So far so good maar nu wil ik eigenlijk uit deze tabel ook de avatar halen en deze tonen in de zoekresultaten, dus zoiets als:

1 | avatar.jpg | Deelnemer | 123

Dit lukt maar ik wil natuurlijk i.p.v. avatar.jpg daar het plaatje van de avatar hebben dus <img src='https://test.com/avatars/avatar.jpg'>

Nu heb ik gevonden in het script waar de resultaten opgebouwd worden:

PHP:
if (is_array($column)) {
    $content = '';
    foreach ($column as $aColumnKey => $aColumnValue) {
        $content .= "{$aColumnKey} : {$aColumnValue} ";
    }

    $content = htmlspecialchars($content);

    $html .= "<td>{$content}</td>";
} else {
    $column = htmlspecialchars($column);

    if (zoek 2e kolom) {
        $html .= "<td><img src='https://test.com/avatars/{$column}'></td>";
    } else {
        $html .= "<td>{$column}</td>";
    }
}

Enig idee hoe ik hierin de 2e kolom kan vinden zodat ik dan een image kanb tonen en bij de overige kolom gewoon de tekst uit deze kolommen?

Groeten,

Arie
 
Dus enkel als de avatar bestaat?
Staat deze in de database, dan kan je prima met empty() kijken.
 
De avatar bestaat altijd.

Het is dus de bedoeling dat ik in de meeste <td> gewoon de tekst uit de database haalt <td>gebruikersnaam</td> en in het geval waar ik de avatar wil tonen moet er dus <td><img src=https://test.com/avatar.jpg /></td> komen te staan zodat de avatar getoond wordt i.p.v. de naam van de avatar.

De kolom waarin de avatars staan is de 2e kolom van de array, misschien heb je daar iets aan?
 
Hoe is die data dan opgeslagen?
Hoe ziet $column als array er dan uit?
 
Als dit werkt...
Code:
// 1 | avatar.jpg | Deelnemer | 123

if (is_array($column)) {
    echo '<br>' . $column[0];  // 1
    echo '<br>' . $column[1];  // avatar.jpg
    echo '<br>' . $column[2];  // Deelnemer
    echo '<br>' . $column[3];  // 123
    // ...

dan zou dit ook moeten werken
Code:
if (is_array($column)) {
    echo '<img src="https://test.com/avatars/' .  $column[1] . '" alt="">';
    // ...
 
Laatst bewerkt:
Bedankt voor het meedenken !

Code:
if (!empty($rows)) {
    foreach ($rows as $row) {
        $html .= '<tr>';
        foreach ($row as $columnName => $column) {
            if (is_array($column)) {
                $content = '';
                foreach ($column as $aColumnKey => $aColumnValue) {
                    $content .= "{$aColumnKey} : {$aColumnValue} ";
                }

                $content = htmlspecialchars($content);

                $html .= "<td class='1'>{$content}</td>";
            } else {
                $column = htmlspecialchars($column);
                
                if (strpos($column, '.') !== false) { // Er komt een . voor dus dit moet de avatar zijn
                  $html .= "<td class='2'><img src='https://test.com/img/avatars/{$column}' alt='avatar'></td>";
                } else { // Dit zijn de andere kolommen zonder .
                  $html .= "<td class='2'>{$column}</td>";
                }
            }
        }
        $html .= '</tr>';
    }
}

Waarom is mij niet helemaal duidelijk maar blijkbaar is $ column geen array en komt dus altijd in de else terecht.

Ik weet 100% zeker dat in de overige kolommen geen . staat en dat er altijd een punt is in de kolom van de avatar dus heb het nu op deze manier opgelost.

Waarschijnlijk niet de beste en mooiste manier maar het werkt wel ... :cool:
 
De waarde van $column is dus geen array ;) maar iets anders (float, string, boolean, whatever....)
PHP:
if (!empty($rows)) {
  /** recordset $rows **/
  foreach ($rows as $row) {
    /** record $row **/
    foreach ($row as $columnName => $column) {
      /** string $columnName met waarde $column **/
    }
  }
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan