# kann Javascript Mysql werte auslesen ?



## coaxa (3. November 2006)

hallo alle zusammen, ich fang mal gleich an mit meiner frage bzw überlegung... Ich habe ein Kalender script  und habe diese zeile hier umgeschrieben in

"<a href=\"javascript:;\" class=\"cal_event\" onMouseover=\"javascript: return escape('".$year. "-" .$month. "-" . sprintf("%02d",$i)."');\">"

die bewirkt nun das ich wenn ich über das datum gehe das sihc ein (info Fesnter) öffnet was den Inhalt anzeigen soll  die betohnunh liegt auf soll 

also er zeigt mir in dem Fenster leider nur das Datum an und das auch noch falsch herum also erst das Jahr dann der Monat und dann der Tag aber den Inhalt zeigt er nicht an...

da das eine javascript funtion ist weiß ich nicht genau ob das so alles seine richtigekiet hat... und ich frage mich wieso er das nciht in dem klinene Fenster nazeigt kann Javascript nichts aus einer Mysql datenbank auslesen  aber woher bekommt er dann das  Datum ?

Sonst kam immer ein Pop Up Fenster und ich hatte das vorzeitig in ein iframe gepackt aber mit onmouseover solution würde ich das gerne haben...


----------



## Malaxo (3. November 2006)

Hat nichts mit PHP zu tun, wenn es um Javascript geht.

Verstehe deine Frage auch nicht so ganz. Nach dem verschieben durch ein Admin bitte neu beschreiben

So viel ich weiss kannst du mit Javascript nichts aus einer Datenbank direkt auslesen (hoffe verzapf hier keinen Blödsinn)


----------



## DeeJTwoK (3. November 2006)

Abgesehen davon, dass ich nicht verstehe, was das mit mysql zu tun hat, sollte die umgekehrte reihenfolge des datums wohl dadran liegen, dass du es falschherum ausgibst....

```
"<a href=\"javascript:;\" class=\"cal_event\" onMouseover=\"javascript: return escape('".sprintf("%02d",$i)."-".$month."-".$year."');\">"
```
... in der Annahme, dass in $i der Tag gespeichert ist...

Wo soll denn da ein Infofenster kommen? Das ist in dem bisschen Code nirgends festgelegt...


----------



## Gumbo (3. November 2006)

Wozu soll das „javascript“-Pseudo-Protokoll dort sein?


----------



## coaxa (3. November 2006)

also mit 


```
.sprintf("%02d",$i)."-".$month."-".$year.
```

klappt das gut mit dem datum bvorerst   danke schon mal aber...

ich habe ja noch in der mysql datenbank einen Eintrag für das jeweilige Datum... kann das irgendwie ausgelesen werden ? scheint mir ja so als wenn es dann nicht gingen :/




> Wozu soll das „javascript“-Pseudo-Protokoll dort sein?



ist php .... javascript ist nur das Fenster was sich öffnet...

-------------------------------------------------------------------------------------------------------------------------------

Edit:

also so war die ursprüngliche Zeile ....


```
/* if there is an event do */
		if( isset($event[$i]) )
    {
      $link_start = "<a href=\"calendar2.php?show_event=true&event_date=" .$year. "-" .$month. "-" . sprintf( "%02d", $i) . "\" target=\"today\" class=\"cal_event>\" >"; 
      $link_end   = "</a>";
      $class      = "cal_event";
    }
```

und so habe ich die umgeschrieben ....


```
/* if there is an event do */
		if( isset($event[$i]) )
    {
     $link_start = "<a href=\"javascript:;\" class=\"cal_event\" onMouseover=\"javascript: return escape('".sprintf("%02d",$i)."-".$month."-".$year."');\">";
      $link_end   = "</a>";
      $class      = "cal_event";
    }
```

Wenn ich mir das ganze so angucken fehlt evtrl bei mir das heir oder ?


```
?show_event=true&event_date
```

aber wie bekomm ich das da rein ?....


also ich habe nochmal den richtigen quellcode gedownloaded.. das oben war ja eine iframe lösung die ich hatte...

hier der original script code schnippsel...


```
$link_start = "<a href="javascript:;" class="cal_event" onclick="javascript: open_event('".$year."-".$month."-".$i."');">";
```

das hier habe ich auch noch gefunden....


```
<script language=\"javascript\">
      function open_event(date_stamp){
        window.open(\"" . $calendar_script . "?show_event=true&event_date=\" + date_stamp, \"calendar_popup\",\"height=" . $event_popup_height . ",width=".$event_popup_width."\");
      }
		</script>
```


----------



## graffcon (4. November 2006)

Wozu unbedingt JavaScript?

Kaum stellt jemand im Browser JavaScript auf OFF, ist dein Script wahrscheinlich nur noch begrenzt zu gebrauchen....

mfg
graffcon


----------



## Gumbo (4. November 2006)

Des weiteren entspricht die Fenstergröße nicht der Größe des tatsächlichen Darstellungsfelds.


----------



## DeeJTwoK (4. November 2006)

Also, ich fasse mal zusammen:

Du hast irgendwo diesen Code gefunden
Es git davon eine IFrame-Lösung und eine JS-Lösung, die ein neues Fenster öffnet
Nach dem Klick auf den Link sieht man jeweils irgendein Event
Der Aufruf


```
onclick="javascript: open_event(<DATUM>);"
```
 öffnete ursprünglich durch die JS-Funktion ein neues Browserfenster, in dem dann das gleiche wie im IFrame angezeigt wird. Den Aufruf hast du allerdings ganz rausgenommen. Also kommt auch kein Fenster mehr.

Deine Lösung mit


```
onMouseover="javascript: return <DATUM>;"
```
 macht für mich keine Sinn. Wohin soll denn da was returned werden?

Das Datum, das bisher aus einer Quelle stammt, die ich nicht kenne, soll irgendwie aus einer MySQL-Datenbank kommen. Woher kommt das Datum bisher her (wo werden die Variablen $i, $month, $year gesetzt)? Besteht das Problem darin, dass du nicht weisst, wie man aus einer Datenbank liest?

Ich hoffe das war soweit richtig.


----------



## coaxa (4. November 2006)

Also  so viele Saychen auf einma 

einmal so wie es dazum kam 

Ich habe für meine Homepage einen Kalender gesucht. In dem Kalender war die funktion mit dem neuen Fenster öffnen was für mich nicht ausreichend ist 

Durch Hilfe eines Forums habe ich eine iframe Lösung zusammengeschnipselt doch da diese Lösung viel platz auf der Homepage benötigt da ich extra ein iframe anlegen muss und dieser platz dann besetzt ist wollte ich eine onmouse over tooltip lösung haben 
Ich habe schon immer das tooltip von walterzorn in benutzung und habe mir gedacht das ich der Kalendereintrag somit gut darstellen kann.

So weit so gut  er zeigt mir ja auch ein Fenster an mit dem Datum aber mehr auch nicht der inhalt aus der mysql datenbank fehlt einfach.

Was ich mir nun noch überlegt habe ist das ich eine variable schreiben müsste die die ganzen funktionen zum auslesen aus der mysql datenbank übernimmt und ich somit nur die variable in die Javascript zeile einfügen muss und der Rest macht das php script...
-----------------

da ich sowas aber erst in ein Paaar MOOnaten realisieren könnte da ich keine Ahnung habe vom auslesen aus irgendwelche datenbanken ist das nicht unbedingt eine gute Lösung für mich...

Ich dachte ja da er ja schon im iframe und im neuen Fenster das alles richtig angezeigt hat das ich das nur so hinbasteln muss ist aber leider nicht so 

Ich würde gern wissen wie nun die daten aus der Datenbank auslese die für das Datum vorgesehen ist.... 

Allergins gibt es das bestimmt schon im script sonst würde das ja nicht vorher auch schon gehen  ich konnte auch meine Zeile nun ein bisschen verbessern


```
$link_start = "<a href=\"javascript:;\" class=\"cal_event\" onMouseover=\"javascript:this.T_STATIC=true;this.T_TEXTALIGN='justify'; this.T_BGCOLOR='#e2eef5';this.T_TITLE='".sprintf("%02d",$i).".".$month.".".$year."';this.T_OFFSETX=-60;  this.T_WIDTH=120; return escape('');\">";
```

nun wird das Datum als Titel angezeigt und ich habe jetzt neune platz für den Inhalt aus der datenbank  genau im Bereich nach 
	
	
	



```
return escape ('')
```
 genau da zwischen müsste ich doch nun die Variablen eintragen die die werte aus der mysql db holen oder ?


----------



## coaxa (4. November 2006)

Dieser Teil des scriptes ist doch für das Fenster öffnen und ausgeben des Inhaltes aus der Datenbank oder nciht ?


```
/////////////////////////////////////////////
	//Print the calendar table header
	//
	echo "
		<script language=\"javascript\">
      function open_event(date_stamp){
        window.open(\"" . $calendar_script . "?show_event=true&event_date=\" + date_stamp, \"calendar_popup\",\"height=" . $event_popup_height . ",width=".$event_popup_width."\");
      }
		</script>
		<table border=\"" . $table_border . "\" cellpadding=\"" . $table_cellpadding . "\" cellspacing=\"" . $table_cellspacing . "\" style=\"height:" . $table_height . "\" width=\"" . $table_width . "\">
			<tr>
				<td align=\"center\" class=\"cal_head\"><a class=\"cal_head\" href=\"" . $_SERVER['PHP_SELF'] . "?" . $QUERY_STRING . "&amp;date=" .
                $previous_date . "\" title=\"" . $table_caption_prev . "\">&laquo;</a></td>
				<td align=\"center\" class=\"cal_head\" colspan=\"5\">" . $table_caption . "</td>
				<td align=\"center\" class=\"cal_head\"><a class=\"cal_head\" href=\"" . $_SERVER['PHP_SELF'] . "?" . $QUERY_STRING . "&amp;date=" .
                $next_date . "\" title=\"" . $table_caption_foll . "\">&raquo;</a></td>
			</tr>
			<tr>
				<td class=\"cal_days\">".$dayname[0]."</td>
				<td class=\"cal_days\">".$dayname[1]."</td>
				<td class=\"cal_days\">".$dayname[2]."</td>
				<td class=\"cal_days\">".$dayname[3]."</td>
				<td class=\"cal_days\">".$dayname[4]."</td>
				<td class=\"cal_days\">".$dayname[5]."</td>
				<td class=\"cal_days\">".$dayname[6]."</td>
			</tr><tr>
			";
```

was benötige ich davon ? das am anfang mit javascript doch nicht oder ?  aber die werte 
	
	
	



```
$table_caption_foll  $table_caption_prev $table_caption
```

 oder ?



```
if (isset ($_GET['show_event'])){
    list ($year, $month, $day) = explode ("-", $_GET['event_date']);
    $query = "
      SELECT *
      FROM " . $event_table . "
      WHERE EventYear  = '" . $year . "'
      AND   EventMonth = '" . $month . "'
      AND   EventDay   = '" . $day . "'
      ORDER BY EventTime ASC
    ";
```

oder brauch ich das ? ich glaube das da oben ist für den normalen Kalender...


----------



## Gumbo (4. November 2006)

Ich wiederhole mich ungern:





Gumbo hat gesagt.:


> Wozu soll das „javascript“-Pseudo-Protokoll dort sein?


----------



## coaxa (5. November 2006)

es zeigt mir in einem Kalender den Eintrag an was an diesem Tag so los ist z.B. Geburtstag oder Termin oder Versammlung oder oder oder  und damit das alles nicht in einem neuen Fenster geschiet wird das als Info Fenster angezeigt das kennt jeder wenn man über die Windows Butttons geht dann kommt doch eine kleine Beschreibung 

und anstatt eine Beschreibung erscheint eben der INhalt aus der DB vom Kalender


----------



## DeeJTwoK (6. November 2006)

Also... das Problem ist... Du steckst nicht wirklich tief im Stoff drin oder?
Außerdem denke ich, dass kaum jemand (wenn nicht sogar niemand) weiss, wie dieses Infofenster funktionier, was du da verwendest und dir deshalb auch keiner sagen kann, wie du darin etwas anzeigen kannst. Noch dazu von einer SQL-Abfrage, von der keiner weiss wo sie aufgerufen wird und mit welchen Variablen dadurch darauf zugegriffen werden kann... 
Ich hoffe ich spreche hier nicht nur für mich!

Aber:
Der Teil, der ein neues Browserfenster öffnet, ist einmal dieses Javascript:

```
<script language=\"javascript\">
      function open_event(date_stamp){
        window.open(\"" . $calendar_script . "?show_event=true&event_date=\" + date_stamp, \"calendar_popup\",\"height=" . $event_popup_height . ",width=".$event_popup_width."\");
      }
        </script>
```
welches von dieser Stelle aus aufgerufen wird:

```
$link_start = "<a href="javascript:;" class="cal_event" onclick="javascript: open_event('".$year."-".$month."-".$i."');">";
```
Wenn das ganze in einem Infofenster bei mouseover erscheinen soll, dann brauchst du den ersten Teil nicht.
Nun zum MySQL:

```
if (isset ($_GET['show_event'])){
    list ($year, $month, $day) = explode ("-", $_GET['event_date']);
    $query = "
      SELECT *
      FROM " . $event_table . "
      WHERE EventYear  = '" . $year . "'
      AND   EventMonth = '" . $month . "'
      AND   EventDay   = '" . $day . "'
      ORDER BY EventTime ASC
    ";
```
Hier wird nur der Abfrage-String festgelegt. An einer anderen Stelle (evtl in der Datei calendar2.php) müsste der dann noch zur Datenbank geschickt werden. Das sieht warscheinlich so aus:

```
$result = mysql_query($query);
```
Danach ist in $result das Ergebnis, um das zu verwenden, brauch man dann sowas ähnliches:

```
while ($einzelnezeile = mysql_fetch_array($result)) {
//und irgendwie diese zeile anzeigen.
}
```
Ich weiss nicht genau, ob das jetzt irgendwie weiter hilft...


----------



## coaxa (7. November 2006)

Huhu danke erstmal für deinen Beitrag 

also ich habe mir gedacht das ich das hier zum abfragen brauch ?


```
window.open(\"" . $calendar_script . "?show_event=true&event_date=\" + date_stamp, \"calendar_popup\",\"height=" . $event_popup_height . ",width=".$event_popup_width."\");
      }
```

$calendar_script   ist  calenar2.php

aber diese show_event=true&event_date.....

ich dachte das wäre die Anweisung um den Event aus der DB zu holen 

ich habe nochmal nach dem 
	
	
	



```
$result = mysql_query($query);
```
geuscht und das hier alles gefunden



```
if ($events_from_database)
  {
    $database_connection = mysql_connect ($server, $username, $password);
    mysql_select_db ($database, $database_connection);
    $result = mysql_query("
      SELECT *
      FROM " . $event_table . "
      WHERE
        EventYear = '" . $year . "'
      AND
        EventMonth = '" . $month . "'
    ");
    while ($record = mysql_fetch_assoc($result)){
      $event[$record['EventDay']] = $record;
    }
  }
```


```
/////////////////////////////////////////////
	//show events in popup?
	//
	if (isset ($_GET['show_event'])){
    list ($year, $month, $day) = explode ("-", $_GET['event_date']);
    $query = "
      SELECT *
      FROM " . $event_table . "
      WHERE EventYear  = '" . $year . "'
      AND   EventMonth = '" . $month . "'
      AND   EventDay   = '" . $day . "'
      ORDER BY EventTime ASC
    ";

    /* connect to the database */
    $database_connection = mysql_connect ($server, $username, $password);
    mysql_select_db ($database, $database_connection);
    $result = mysql_query ($query) or die(mysql_error());
```

und das hier unten zeigt normalerweise die verschiedenen Einträge in 2 verschiedenen Farben an als Variable existieren


```
/* loop through the results via a mysql_fetch_assoc () */
    while ($record = mysql_fetch_assoc ($result)){
      if ($color_alternated){
        $color_alternated = false;
        $background_color_row = $event_background_color1;
      }
      else{
        $color_alternated = true;
        $background_color_row = $event_background_color2;
      }
```

so das ist was ich gefunden habe dazu.

Wäre es leichter eine neue Variable zu erstellen die das hier alles abfragt und dann diese Variable z.b.  $Event_onmouseover in die Zeile mit dem Javascript einzufügen ?

das würde dann so z.b. aussehen 


```
/* if there is an event do */
		if( isset($event[$i]) )
    {
     $link_start = "<a href=\"javascript:;\" class=\"cal_event\" onMouseover=\"javascript:this.T_STATIC=true;this.T_TEXTALIGN='justify'; this.T_BGCOLOR='#e2eef5';this.T_TITLE='".sprintf("%02d",$i).".".$month.".".$year."';this.T_OFFSETX=-60;  this.T_WIDTH=120; return escape(' " . $Event_onmouseover . " ');\">";
      $link_end   = "</a>";
      $class      = "cal_event";
    }
```

ich kann ja das Datum anzeigen lassen und das geschieht ja auch nur durch die Variablen oder sehe ich das falsch ? müsste doch dann klappen oder  

Naja aber wie stell ich das an ? an code schnipseln ist ja alles vorhanden...

oder ist schon alles vorhanden um die sachen aus der Db zu holen ?
.....
also mal zu mir  ich habe gerade erst mit html angefangen und da mit php anscheined viel mehr zu realisiere ist würde ich shcon mehr über php wissen und machen  ich wusste vorher auch nciht das ich einfach meine index.html in index.php umnennnen kann und trotzdem läuft alles 



Edit:....

Wenn ich nun in die Javascript Zeile


```
return escape('".$result."');\">";
```

dann zeigt er mir im Info Fenster das hier an

Resource id #5

oder brauch ich mehr ?

Edit nochmal 

also wenn ich nur die variablen eintrage geht nichts,,

und wenn ich sowas erstelle


```
§event_onmouseover = echo "<table width=\"120\"><tr><td></td></tr>"
```

zeigt er mir falscher echo als fehler an.....

ohje... sowas get auch net oder liege ich mit so einfachen anweisungen falsch ?


```
<?php
$event_onmouseover = echo "".$_GET['show_event']." &gt; ".$_GET['event_date']."<br />\n";
?>
```


----------

