4 Datensätze in zweidimensionales Array schreiben (und sortieren)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 4 Datensätze in zweidimensionales Array schreiben (und sortieren)

    Guten Morgen!

    Ich habe Probleme mit folgendem Szenario: in der Tabelle einer Datenbank habe ich Vorträge, und jeden einzelnen Vortrag mit einer Nummer versehen (VTnr). Jedem Vortrag werden außerdem bis zu 3 Keywords zugewiesen, die den Inhalt wiederspiegeln (VTkeyw1, VTkeyw2, VTkeyw3). Diese Werte frage ich dann ab, um sie später in einem Dropdown dem Benutzer zur Recherche zur Hand zu geben. Das klappt auch alles ganz wunderbar, ich kann das auch später per <option>-Tag einfügen :


    PHP-Code:
    $abfrageTH "SELECT DISTINCT VTkeyw1,VTkeyw2,VTkeyw3 FROM $tabelleVT WHERE (VTcmenr != '0000')";
    $ergebnisTH mysql_query($abfrageTH); 
    ...und später im Seitenquelltext:

    PHP-Code:
    <select name="selThema" size="6" id="selThema">
    <option value="*">alle</option>

    <?php
            
    while ($row mysql_fetch_array($ergebnisTH)) { 
                IF (
    $row['VTkeyw1'] != '') {
                echo 
    "<option value='" $row['VTcmenr'] . "'>" $row['VTkeyw1'] . "</option>"
                }
                break;
            } 
            while (
    $row mysql_fetch_array($ergebnisTH)) { 
                IF (
    $row['VTkeyw2'] != '') {
                echo 
    "<option value='" $row['VTcmenr'] . "'>" $row['VTkeyw2'] . "</option>"
                }
                continue;
            } 
            while (
    $row mysql_fetch_array($ergebnisTH)) { 
                IF (
    $row['VTkeyw3'] != '') {
                echo 
    "<option value='" $row['VTcmenr'] . "'>" $row['VTkeyw3'] . "</option>"
                }
                continue;
            } 
    ?> 
    </select>
    So weit funktioniert das alles einwanfrei. Ich habe dabei aber das Problem, dass ich die Keywords nicht mehr alphabetisch sortieren lassen kann.

    Daher mein Gedanke: ich möchte aus allem ein zweidimensionales Array erstellen, das ich dann sortiert ausgeben kann:

    ---------------------
    VTnr | VTkeyw
    ---------------------
    0001 | dies
    0001 | das
    0001 | jenes
    0002 | dies
    0002 | das
    0002 |
    0003 | jenes
    0003 | was anderes
    ....


    Mein gescheiterter Versuch sah dabei so aus:

    PHP-Code:
    $VTkeywords = array();
    $VTkeywCnt 0;
    $VTkeywIndex 1;
    while(
    $ergebnisTH != '')
    {
       
    $VTkeywords[$VTkeywCnt] = row->$ergebnisTH;
       
    $VTkeywCnt++;
       
    $VTkeywIndex++;
       IF (
    $VTkeywIndex == 4) {$VTkeywIndex 1;}

    Die Variable '$VTkeywIndex' lasse ich einfach immer von 1 bis 3 zählen, um die VTkeyw 1-3 nacheinander auszulesen, und nach 3 wieder bei 1 anzufangen.

    Theoretisch... Denn zum einen ist das Array scheinbar nur eindimensional, und zum anderen produziert schon das einen Fehler =o/.

    Wo habe ich mit meinen LEGO-PHP-Fähigkeiten den Bock gedreht?

    Danke & Gruß
    Zuletzt geändert von MaxGnome; 26.02.2007, 12:00.

  • #2
    Re: 4 Datensätze in zweidimensionales Array schreiben (und sortieren)

    Original geschrieben von MaxGnome
    Mein gescheiterter Versuch sah dabei so aus:

    PHP-Code:
    $VTkeywords = array();
    $VTkeywCnt 0;
    $VTkeywIndex 1;
    while(
    $ergebnisTH != '')
    {
       
    $VTkeywords[$VTkeywCnt] = row->$ergebnisTH;
       
    $VTkeywCnt++;
       
    $VTkeywIndex++;
       IF (
    $VTkeywIndex == 4) {$VTkeywIndex 1;}

    Okay, den ersten Bock hab ich schon mit dem 'row->...' geschossen, denn diese Variable hab ich da unten ja noch gar nicht definiert. Weiß allerdings trotzdem nicht, wie ich's richtig machen muss =o/

    Habs ersetzt durch
    PHP-Code:
        $VTkeyw[$VTkeywCnt] = mysql_fetch_array($ergebnisTH); 
    aber da bekomme ich nun als Fehler:
    "Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 12 bytes)".

    Ich scheine also, sämtliche Grenzen zu sprengen...
    Zuletzt geändert von MaxGnome; 26.02.2007, 11:21.

    Kommentar


    • #3
      Neue Idee:

      PHP-Code:
      $VTkeywIndex 1;
      $VTkeywCnt 0;
      while(
      $row mysql_fetch_array($ergebnisTH)){
          
      $VTkeyw = array("VTnummer" => array($VTkeywCnt => $row('VTcmenr')), "VTkeyword" => array($VTkeywCnt => $row('VTkeyw'.$VTkeywIndex)));
          
      $VTkeywCnt++;
          
      $VTkeywIndex++;
          IF (
      $VTkeywIndex == 4) {$VTkeywIndex 1;}

      Funktioniert aber auch nicht, bekomme "Fatal error: Call to undefined function: array()" in der $VTkeyw-Zeile. Schöner Mist, ich dachte, ich wäre auf einem guten Weg...

      Kommentar


      • #4
        Neuer Denkansatz:

        Kann ich die Keywords eventuell alle in ein einziges Feld schreiben, durch Kommata trennen und die Werte dadurch beim auslesen wieder separieren? Nur so ins Blaue gedacht...

        Kommentar

        Lädt...
        X