Daten in Array eintragen und Sortieren lassen...

Crazy_down

Erfahrenes Mitglied
Hi, ich lasse mir aus einer Datenbank ein Datum ermitteln und mit Substring nur den Tag davon.
Nun möchte ich zu dem bestimmten User, welcher für jedes Datum einmal in der Tabelle steht d.h. ca. 31 mal im Monat alle tage ermitteln die er drinne steht.
Ich wollte das ganze mit einem array machen.
Ich habe aber irgendwie einen Denkfehler in meiner Schleife da der array imemr wieder überschrieben wird.

PHP:
while($row1=mysql_fetch_assoc($db->result2))
{
    $mydate=$row1['anwesendheitsdatum'];
       $mydate_substring=substr($mydate,8);


         for($a=1;$a<=31;$a++)
         {

                  if($mydate_substring==$a )
        {
                     sort($Anwesenheit_array);
                  echo $mydate_substring;
                  $Anwesenheit_array[$a]=$row1['anwesenheitsstatus'];
                  echo $Anwesenheit_array[$a];
                  echo "<br>";
                  echo $Anwesenheit_array[2];
                  echo "<br>";
                  echo $Anwesenheit_array[18];
                  }
                  else
                 {
                   $Anwesenheit_array[$a]=0;
                   echo $Anwesenheit_array[$a];
                  }

         }

}


Die echos sind jetztz nur zur Kontrolle.
Ich will das er findet: User1 Tag 22, kommt in Array[22].
dann User1 tag 10, kommt in array[10]
ohne 22 wieder zu Überschreiben.

Wie Löse ich das am besten ?

greetz und Danke schonmal
crazy_down
 
Kann es sein, dass zwei User am selben Tag drankommen. Denn dann kann dieser Lösungsansatz nicht funktionieren, da der letzte User am Tag x alle zuvor ausgelesenen überschreibt. Hierfür könntest du aber zweidimensionale Arrays verwenden - dann geht das auch wieder.

Beim Code selbst bin ich mir nicht sicher, ob PHP die if-Bedingung korrekt auswertet, handelt es sich beim ersten Datentyp ja um einen String und beim zweiten um einen Integer. Mir ist durchaus bewusst, dass PHP sich eher wenig um Datentypen schert, in diesem konkreten Fall bin ich mir aber nicht sicher. Werden die Probeausgaben im if also ausgegeben oder geht er stets in den else-Zweig?
 
Hi, also bei dem Probeausgaben stimmt alles soweit. Das was du angesprochen hast stimmt, wenn mehrere User am selben tag da sind, bekommt der erste User auch den Wert des letzen.

Sollte ich dann in dem 2 Dimensionalen Array einmal die ID des benutzer und die Tage speichern oder was wäre hier am besten ?

Hatte mir auch schon Überlegt das es evtl. mit den Datentypen Probleme geben könnte, auch wenn es nicht sauber ist funktioniert es bissher ;)
 
In der ersten Dimension speicherst du die Tage, in der zweiten die User

Code:
$arr = array ();

for ($c=0; $c<31; $c++)
      array_push ($arr, array());

Daraufhin hast du folgende Strutkur:

$arr[0]->Array
$arr[1]->Array
...
$arr[30]->Array

Wenn du nun einen User speichern möchtest, dann schreibst du folgendes:

Code:
array_push ($arr[$index], "UserString");

Somit wird kein User überschrieben, sondern im Array angehängt; d.h. es könnte ua. zu folgendem Aufbau kommen:

$arr[0]->
Anna Keil
Hugo Portisch
Karl Neumann
$arr[1]-> void
$arr[2]-> Peter Kuntz
$arr[3]->
Carlo Martiano
Boris Rubin
...

Sollte ich mich unklar ausgedrückt haben, meld' dich halt noch einmal :) ...
 
Vielen Dank für die schnelle Antwort. Ich werd es gleich mal testen.
Mal sehn ob ich das verstanden habe wie du es meinst.
 
Zurück