Strings vergleichen // If Anweisung "will nicht"?

des mit der if Anweisung war wohl ein streibfehler.. *ups*

nun komm ich rein.


habe aber nun ein anderes prob und zwar wenn ich: in die Gesamttages -Schleife, den Sqlquery (for oder while) aus gebe erzeug ich irgendwie einen loop. Kennt ihr zufällig ne gute idee wie man des lösen könnte?

Ich will je "Tag" einmal die SQL-Array durch forsten und wenn das Datum stimmt soll er die <td> mit Kurztext und der jeweiligen Farbe schreiben. Oder ist diese vorgehensweise ungeschickt und falls ja gibt es eine bessere Lösung?

PHP:
<?php
//Connection zur DB herstellen
include_once('connect.php');
 
//Testdaten
$month = 3;
$year = 2010;

//erster und letzter Tag des Monats ermitteln
// Erster Tag als Date
$firstDayOfMonthDate = mktime(0, 0, 0, $month, 1, $year);
//Nummer des ersten Tages
$firstDayOfMonth = 1;
//Letzter Tag als Date
$lastDayOfMonthDate = mktime(0, 0, 0, $month+1, 0, $year);
//Nummer des letzten Tages
$lastDayOfMonth = date('j', $lastDayOfMonthDate);

//Abfrage auf DB auf den betreffenden Monat
$sql = "    SELECT UNIX_TIMESTAMP(DATE(datetime)) AS myDate 
            FROM date
            WHERE MONTH(datetime) = {$month}";
$result = mysql_query($sql);

//Alle Resultate in einen Array schreiben
while($row = mysql_fetch_array($result)){
    $datesFromDB[] = $row['myDate'];
}

//Einen Array für den Monat erstellen
$days = range($firstDayOfMonth, $lastDayOfMonth);

//Alle Monate durchgehen
foreach($days as $day){
    //Tag das Monats als Date
    $dayDate = mktime(0, 0, 0, $month, $day, $year);
    //Prüfen ob der Moantstag in dem DB-Array ist  
    if(in_array($dayDate, $datesFromDB)){
        echo '<b>'.date('d M Y', $dayDate).'</b><br />';
    } else {
        echo date('d M Y', $dayDate).'<br />';
    }    
}
?>
 
hi, ich hab des nun alles mal getestet. Und auf meine DB angepasst, zudem wollte ich noch meinen Dank aussprechen für die Hilfe.

PHP:
$sql_alles = 'SELECT `termine`.*, `art`.* FROM `termine`
 LEFT JOIN `kalender`.`art` ON `termine`.`art_id` = `art`.`art_id`';

$result = mysql_query($sql_alles);
 
//Alle Resultate in einen Array schreiben
while($row = mysql_fetch_array($result)){
    $datesFromDB[] = $row['datum_anfang'];
}

//Einen Array für den Monat erstellen
$days = range($firstDayOfMonth, $lastDayOfMonth);
$k=0;

//Alle Monate durchgehen
foreach($days as $day){
$k++;
    //Tag das Monats als Date
    $dayDate = mktime(0, 0, 0, $month, $day, $year);

    //Prüfen ob der Moantstag in dem DB-Array ist  
    if(in_array($dayDate, $datesFromDB)){
        echo '<b>'.date('Y-m-d', $dayDate).'</b><br />';
        echo 'hit';
       
    } else {
        echo date('Y-m-d', $dayDate).'<br />';
       // echo '$datesFromDB ='.$datesFromDB[$k].'= <br />'; //X1
      
    }    
}

Durch des echo an "X1" weis ich, dass die werte gleich sind, aber in der "if(in_array"-Abfrage komm ich nicht rein?

in der DB ist des "Datum_anfang" als Date-Format, könnte es deshalb Probleme geben?
 
Wahrscheinlich ja
Konvertiere im Select mal das Mysql-Datum zu einem Unix Timestamp. Denn damit rechnet PHP
SQL:
SELECT UNIX_TIMESTAMP(datetimefield) FROM table
 
Zuletzt bearbeitet von einem Moderator:
Schau doch einfach nach, was in den Variablen steht ;)

PHP:
echo "<pre>";
var_dump($datesFromDB);
var_dump($dayDate);
echo "</pre>";
 
Code:
array(6) { // für datesFormDB
  [0]=>
  string(10) "2010-06-01"
  [1]=>
  string(10) "2010-06-01"
  [2]=>
  string(10) "2010-06-18"
  [3]=>
  string(10) "2010-06-22"
  [4]=>
  string(10) "2010-06-20"
  [5]=>
  string(10) "2010-06-02"
}
2010-06-30 --$dayDate --  in diesem Format werden die andern auch ausgegeben

ich versuch des mit dem umstellen der db gleich mal


-- Mit dem SQL Befehl bin ich mir nedd so sicher (habs aus dem abfrageeditor in MySql kopiert):
PHP:
$sql_alles = 'SELECT UNIX_TIMESTAMP(`termine`.`datum_anfang`), `art`.*,`termine`.* 
FROM `art`
LEFT JOIN `kalender`.`termine` ON `art`.`art_id` = `termine`.`art_id`';

-- Falls des so stimmt tritt keine Veränderung auf


Code:
2010-06-01 //Das ist das Date
$datesFromDB =2010-06-01=  //die Ausgabe aus dem Array, "=" wegen übersicht
So siehts bei mir auf der Site aus und schaut echt "gleich" aus, dennoch findet des "if(in_array) oder des if kein true auf Gleichheit?
 
Zuletzt bearbeitet:
hab nun durch herumtesten, in meinem "alten" code folgendes hinbekommen:

PHP:
				if($tagabgleich == $DFromDB[2]['datum_anfang']){
					echo 'hit';//geht
					echo '<br>';
				}

				if(in_array($tagabgleich, $DFromDB[2])){
					echo 'hit_in_array';echo '<br>';//geht
				}

also muss ich nur noch schaun wie ich durch den array springen kann, dann sollte es klappen.
 
Zurück