PHP Problem in meinem Kalender script^^

hoi,

also damit ich net lange herrum rätseln muss frage ich einfach hier das ist mein scriple^^

ich lass halt die html angaben wech

[code]<?php
if (isset($_POST[“jahr”])) {$jahr = $_POST[“jahr”];}
else {$jahr = date(“Y”);}
if (isset($_POST[“monat”])) {$monat = $_POST[“monat”];}
else {$monat = date(“n”);}

$datum = mktime(1,0,0,$monat,1,$jahr);
$t = date(“t”,$datum);
$w = date(“w”,$datum);

$tag = array(1,7,6,5,4,3,2);

$monat_ohne_erste_woche = $t - $tag[$w];
$letzte_woche = $monat_ohne_erste_woche % 7;
$wochen = ($monat_ohne_erste_woche - $letzte_woche) / 7;
$leere_zellen_erste_woche = 7 - $tag[$w];
$volle_zellen_erste_woche = 7 - $w + 1;
$leere_zellen_letzte_woche = 7 - $letzte_woche;

$db = mysql_connect(‘localhost’,‘xx’,‘xx’);
mysql_select_db(‘xx’,$db);
$resultat = mysql_query(“select DAYOFMONTH(datum)
as tag from aktivitaeten where YEAR(datum)= $jahr
and MONTH(datum) = $monat”) or die(mysql_error());
mysql_close($db);

$tage_aktivitaeten = array();
$zaehler = 0;

while (list($tag)=mysql_fetch_row($resultat))
{
$tage_aktivitaeten[$zaehler] = $tag;
$zaehler++;
}

$schon_gezaehlte_tage = 0;

if ($w == 0)
{
print “

”;
for ($i = 0; $i < 6; $i++)
{
print ‘’;
}
$schon_gezaehlte_tage += 1;
if (in_array($schon_gezaehlte_tage, $tage_aktivitaeten))
{echo ‘
1
’;}
else
{print ‘1’;}
print “”;
}
elseif ($w != 0)
{
print “”;
for ($i = 0; $i < $leere_zellen_erste_woche; $i++)
{
print ‘’;
}
 for ($i = 0; $i < $volle_zellen_erste_woche; $i++)
   {
   $schon_gezaehlte_tage += 1;
   if (in_array($schon_gezaehlte_tage, $tage_aktivitaeten))
     {
       echo '<td class="aktivitaet"><a href="aktivitaeten.php?
       jahr='.$jahr.'&monat='.$monat.'&tag='.schon_gezaehlte_tage.'">
       '.$schon_gezaehlte_tage.'</href></td>';
     }
   else
     {
     print "<td>$schon_gezaehlte_tage</td>";
     }
  }

print “

”;
}

for ($i = 0; $i < $wochen; $i++)
{
print “

”;

for ($d = 0; $d < 7; $d++)
{
$schon_gezaehlte_tage += 1;

if (in_array($schon_gezaehlte_tage, $tage_aktivitaeten))
  {
  echo '<td class="aktivitaet"><a href="aktivitaeten.php?
  jahr='.$jahr.'&monat='.$monat.'&tag='.schon_gezaehlte_tage.'">
  '.$schon_gezaehlte_tage.'</href></td>';
  }
else
  {
  print "<td>$schon_gezaehlte_tage</td>";
  }
}

print “

”;
}

if ($schon_gezaehlte_tage < $t)
{
print ‘

’;
while ($letzte_woche > 0)
{
$letzte_tage = $t - $letzte_woche + 1;
if (in_array($letzte_tage, $tag))
{
echo ‘’.$letzte_tage.’’;
}
else
{
print “$letzte_tage”;
}
$letzte_woche -= 1;
}
   for ($i = 0; $i < $leere_zellen_letzte_woche; $i++)
    {
      print '<td></td>';
    }
 print '</tr>';
 }

?>[/code]

es kommt jetzt zu diesem fehler hier:

[quote]Warning: in_array() [function.in-array]: Wrong datatype for second argument in /users/ttc1974/www/test/projekt_blub/index.php on line 131

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /users/ttc1974/www/test/projekt_blub/index.php on line 131

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /users/ttc1974/www/test/projekt_blub/index.php on line 131

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /users/ttc1974/www/test/projekt_blub/index.php on line 131[/quote]

das dicke ist zeile 131 kann mir jemand sagen wo mein fehler liegt und wenn er noch einen findet kann er mir den auch sagen^^
oder ist es einfach weil ich noch keine sachen drinne stehen habe?^^, wenn ja kann mir jemand ein soclehs formular erstellen damit ich daten eintragen kann , aber es soll testen ob es an diesem tag schon einen termin gibt wo ingetragen wird geht das? wenn ja wie?

mfg
ich bedanke mich shcon einmal

$tag wird vmtl. kein Array sein wenn du nichts in der DB stehen hast. Kannst du aber ganze einfach prüfen indem du dir per print_r($tag) die Variable ausgeben lässt.

Wenn du datum als PrimaryKey bzw. Unique in der DB anlegst, dann solltest du per INSERT keinen Eintrag mit diesem Datum mehr machen können. Als Ergebnis liefert das Query false zurück.

Ein Formular drumherum wirst du ja wohl auch alleine zusammenbringen.

[code]$zaehler = 0;

while (list($tag)=mysql_fetch_row($resultat))
{
$tage_aktivitaeten[$zaehler] = $tag;
$zaehler++;
}[/code]
geht auch einfacher:

while (list($tag)=mysql_fetch_row($resultat)) { $tage_aktivitaeten[] = $tag; }
Wie sieht denn deine Datenbanktabelle aus?

hallo,

also ich habe das ganze so gemacht:

CREATE TABLE IF NOT EXISTS `aktivitaeten` ( `id` int(11) NOT NULL auto_increment, `titel` varchar(40) NOT NULL, `datum` date NOT NULL, `beschreibung` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

wie bekomme ich das jetzt mit dem login formular hin, das es nicht zwei termine am gleichen tag geben kann,

und vlt eine variante das es immer 2h zeit zwischen den terminen sein muss bis der nächste kommen kann, dazu müsste ich halt noch zwei spalten für die zeit hinzufügen aber diese variante gefällt mir schon besser nur weiß ich nicht wie ich das anstellen soll,
vlt kann man das ja auch mit java script oder so machen das gleich angezeigt wird beim eintragen ob das datum passt oder nicht nicht das man dannach nochmal alles eingeben muss…

ich bedanke mich schon mal für vorschläge =)

mfg
Paul

Die Antwort für nur einen Termin pro Tag ist einfach, da brauchst du nur den PrimaryKey von ID auf Datum zu legen.

Das andere Vorhaben benötigt einiges an Überprüfungen, die man bei Postgres mit einigem KnowHow auch in die Datenbank verlagern kann.

also wenn ich das hier nehme:

[code]<?php
mysql_connect(“localhost”,“USER”,“PASS”);
mysql_selectdb(“DB=USER”);
$sql=“INSERT INTO aktivitaeten
(titel, datum, beschreibung)
VALUES
(’$_POST[titel]’, ‘$_POST[datum]’, ‘$_POST[beschreibung]’)”;
mysql_query($sql) OR die("MySQL-Fehler: ".mysql_error());

?>

Titel:
Datum:
Beschreibung:
[/code]

wie bekomme ich das jetzt hin das jedes Eingetragene Datum jeweils eine ID forlaufend bekommt, und das man somit keine neuen Einträge an einem Tag machen kann?,
und mir ist entfallen wie genau ich das datum speichern muss? musss ich das mit . oder einfach in dem format speichern? 10102008 oder als timestamp? ich weiß gerade nicht wie ich das genau speichern muss stehe iwie aufm schlauch,

kann mir jemand behilflich sein?
würde mich freuen
mfg
paul