Ankündigung

Einklappen
Keine Ankündigung bisher.

Php Variable in einen Javascript Array einfügen?

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

  • #31
    Das sieht ja schonmal sehr gut aus, nun bleibt nur noch ein Problem, die Daten sind zwar jetzt richtig, aber wird mir im Kalender das ganze nicht mehr Markiert.
    Eine Idee wie ich das jetzt noch hinbekomme?
    Bei Tagen die nicht eingetragen sind wird angezeigt dass nichts ist, und wenn was an dem tag ist dann wird es aufgelistet, das bleibt jetzt aber leer?

    Kommentar


    • #32
      Wahrscheinlich musst Du den Text noch hinzu fügen:
      Code:
              $events[$year][$month][$day] = [
                  'startTime' => $row['start_time'],
                  'endTime' => $row['end_time'],
                  'text' => $row['event_title'],
              ];

      Kommentar


      • #33
        Den text habe ich schon hinzugefügt, und als das nicht funktioniert hat, habe ich auch noch versucht den Link hinzuzufügen.

        Kommentar


        • #34
          Da war noch ein Fehler in der generierten Struktur, der Tag enthält ein Array, da mehrere Events pro Tag möglich sind:
          Code:
          $sql = "SELECT * FROM event_calendar";
          $erg = $conn->query($sql);
          echo mysqli_error($db_con);
          $events = [];
          if ($erg) {
              /* fetch object array */
              while ($row = mysqli_fetch_assoc($erg)) {
                  $datearr = explode('-', $row['event_date']);
                  $year = $datearr[0];
                  $month = $datearr[1];
                  $day = $datearr[2];
                  $events[$year][$month][$day][] = [ // <-- hier
                      'startTime' => $row['start_time'],
                      'endTime' => $row['end_time'],
                      'text' => $row['event_title'],
                  ];
              }
          }

          Kommentar


          • #35
            Vielen Vielen Dank für die Hilfe.
            Nun funktioniert es so wie es soll.

            Einen angenehmen Abend noch.

            Kommentar


            • #36
              Gern geschehen, ebenfalls einen schönen Abend!

              Kommentar


              • #37
                Hi Nightland Driver

                Dein Post ist schon 'ne Weile her und daher weiß ich nicht ob er noch relevant ist. Falls ja habe ich 'nen Tip, falls nein - ignorieren :-)

                Du schreibst dass der erste Lösungsweg gut ist, aber... "Die idee an sich ist ganz gut, leider müssen vor der übergabe an Javascript noch einige Html Tags entfernt werden, zudem benötige ich in dem Javascript Array nur die "$text" spalte aus der Datenbank."

                Arbeitest du unter JavaScript mit DOM-Direktiven? Mit element.innerHTML bekommst du nur den Text zwischen zwei Tags ausgelesen (im Gegensatz zu element.outerHTML. Ferner könntest du damit direkt auf die entsprechenden Text-Knoten des Elements zugreifen (z.B. getElementsByTagNames().value).

                Oder unter Anwendung von AJAX, wäre aber dann schon fortgeschrittenes JS...

                Gruß
                ________
                Megabyte66
                ________

                Kommentar


                • #38
                  Hey,

                  um zuerst auf die letzte antwort im Thema einzugenen, ich denke nicht, ich habe mich aber bis jetzt nur ein wenig mit Javascript befasst und wollte es mir bis ende des Jahres etwas genauer ansehen, da ich das für ein zukünftiges Projekt brauche.

                  Nun zum grund warum ich erneut in das Thema geschaut habe, ich hatte zuvor für jedes Event(auch wenn mehrere Tage) immer ein einzelnen Eintrag angelegt. Dass ganze ist nicht sehr übersichtlich und wurde zu einem großen Chaos in der Datenbank.
                  Daher habe ich nun eine neue Struktur fr die Datenbank erstellt und möchte diese nun in die ausgabe einbinden. Ich habe die Struktur so geändert, dass es nun ein "end_date" gibt, wo der letzte Tag des Events eingetragen wird. Zudem wird bei der "start_time" nun der startzeitpunkt vom ersten Tag angegeben und bei "end_time" nur der Zeitpunkt wo das Event endet. Wenn ein Event nur einen Tag geht sind "start_date" und "end_date" auf dem selben wert.

                  Ich habe versuch dass ganze hinzubekommen aber so richtig funktioniert es nicht. Da die Zeit bei einem TagesEvent gleich ist, habe ich eine Abfrage hinzugefügt ob dass datum gleich ist. Wenn dass der fall ist trägt er das ein und alles ist Top.
                  Nun zu den mehrtägigen Events. Dort wollte ich mit einer While Schleife jedes mal das benötigte Event ausgeben solange das Start Datum nicht gelich den End Datum ist. Das funktioniert nur bedingt, da mir immer hintendran ein Tag fehlt. wie kann ich diesen Tag noch ausgleichen?

                  PHP-Code:
                  $sql "SELECT * FROM event_calendar";
                  $erg $conn->query($sql);
                  echo 
                  mysqli_error($conn);
                  $events = [];
                  if (
                  $erg) {
                  /* fetch object array */
                  while ($row mysqli_fetch_assoc($erg)) {
                  $start_time strtotime($row['start_time']);
                  $start_time date('H:i'$start_time);

                  $end_time strtotime($row['end_time']);
                  $end_time date('H:i'$end_time);

                  $event_repeat $row['event_repeat'];

                  $start_date date('Y-m-d'strtotime($row['start_date']));
                  $end_date date('Y-m-d'strtotime($row['end_date']));

                  if(
                  $start_date == $end_date){
                  $event_date date("Y-n-j"strtotime($row['end_date']));
                  $datearr explode('-'$event_date);
                  $year $datearr[0];
                  $month $datearr[1];
                  $day $datearr[2];

                  if(
                  $event_repeat != 1){
                  $events[$year][$month][$day] [] = [
                  'startTime' => $start_time,
                  'endTime' => $end_time,
                  'text' => $row['event_title'],
                  'link' => $row['link'],
                  ];
                  } else {
                  $year date("Y");
                  for(
                  $i 0$i <= 1$i++){
                  $events[$year][$month][$day] [] = [
                  'startTime' => $start_time,
                  'endTime' => $end_time,
                  'text' => $row['event_title'],
                  'link' => $row['link'],
                  ];
                  $year ++;
                  }
                  }
                  } else {
                  while (
                  $start_date != $end_date){
                  $event_date date("Y-n-j"strtotime($start_date));
                  $datearr explode('-'$event_date);
                  $year $datearr[0];
                  $month $datearr[1];
                  $day $datearr[2];

                  if(
                  $event_repeat != 1){
                  $events[$year][$month][$day] [] = [
                  'startTime' => $start_time,
                  'endTime' => $end_time,
                  'text' => $row['event_title'],
                  'link' => $row['link'],
                  ];
                  } else {
                  $year date("Y");
                  for(
                  $i 0$i <= 1$i++){
                  $events[$year][$month][$day] [] = [
                  'startTime' => $start_time,
                  'endTime' => $end_time,
                  'text' => $row['event_title'],
                  'link' => $row['link'],
                  ];
                  $year ++;
                  }
                  }
                  $start_date date('Y-m-d'strtotime($start_date ' +1 day'));
                  }
                  }
                  }

                  Kommentar


                  • #39
                    Erst Mal vorab eine dringende Empfehlung: Tu dir selbst und anderen, die das lesen, einen Gefallen und rücke deinen Code sinnvoll ein. Dann hat man sofort einen Überblick über die Struktur. Es gibt Editoren, die das automatisch tun. Sieht dann so aus:
                    PHP-Code:
                    $sql "SELECT * FROM event_calendar";
                    $erg $conn->query($sql);
                    echo 
                    mysqli_error($conn);
                    $events = [];
                    if (
                    $erg) {
                    /* fetch object array */
                        
                    while ($row mysqli_fetch_assoc($erg)) {
                            
                    $start_time strtotime($row['start_time']);
                            
                    $start_time date('H:i'$start_time);
                            
                    $end_time strtotime($row['end_time']);
                            
                    $end_time date('H:i'$end_time);
                            
                    $event_repeat $row['event_repeat'];
                            
                    $start_date date('Y-m-d'strtotime($row['start_date']));
                            
                    $end_date date('Y-m-d'strtotime($row['end_date']));
                            if (
                    $start_date == $end_date) {
                                
                    $event_date date("Y-n-j"strtotime($row['end_date']));
                                
                    $datearr explode('-'$event_date);
                                
                    $year $datearr[0];
                                
                    $month $datearr[1];
                                
                    $day $datearr[2];
                                if (
                    $event_repeat != 1) {
                                    
                    $events[$year][$month][$day][] = [
                                        
                    'startTime' => $start_time,
                                        
                    'endTime' => $end_time,
                                        
                    'text' => $row['event_title'],
                                        
                    'link' => $row['link'],
                                    ];
                                } else {
                                    
                    $year date("Y");
                                    for (
                    $i 0$i <= 1$i++) {
                                        
                    $events[$year][$month][$day][] = [
                                            
                    'startTime' => $start_time,
                                            
                    'endTime' => $end_time,
                                            
                    'text' => $row['event_title'],
                                            
                    'link' => $row['link'],
                                        ];
                                        
                    $year++;
                                    }
                                }
                            } else {
                                while (
                    $start_date != $end_date) {
                                    
                    $event_date date("Y-n-j"strtotime($start_date));
                                    
                    $datearr explode('-'$event_date);
                                    
                    $year $datearr[0];
                                    
                    $month $datearr[1];
                                    
                    $day $datearr[2];
                                    if (
                    $event_repeat != 1) {
                                        
                    $events[$year][$month][$day][] = [
                                            
                    'startTime' => $start_time,
                                            
                    'endTime' => $end_time,
                                            
                    'text' => $row['event_title'],
                                            
                    'link' => $row['link'],
                                        ];
                                    } else {
                                        
                    $year date("Y");
                                        for (
                    $i 0$i <= 1$i++) {
                                            
                    $events[$year][$month][$day][] = [
                                                
                    'startTime' => $start_time,
                                                
                    'endTime' => $end_time,
                                                
                    'text' => $row['event_title'],
                                                
                    'link' => $row['link'],
                                            ];
                                            
                    $year++;
                                        }
                                    }
                                    
                    $start_date date('Y-m-d'strtotime($start_date ' +1 day'));
                                }
                            }
                        }

                    Das Problem, auf das sich deine eigentliche Frage bezieht, sollte sich leicht lösen lassen, indem Du auf eine do-while-Schleife umstellst:
                    https://www.php.net/manual/de/contro...s.do.while.php
                    Wahrscheinlich wird diese auch gleich den Fall abdecken, das Starttag gleich Endetag ist, so dass Du auf diese Fallunterscheidung verzichten kannst.

                    Kommentar


                    • #40
                      Tu dir selbst und anderen, die das lesen, einen Gefallen und rücke deinen Code sinnvoll ein <- Mein Code ist im Editor ordentlich und übersichtlich strukturiert, das Forum übernimmt aber nicht immer die Struktur, manchmal klappt es manchmal nicht.

                      Mit do-while habe ich das selbe Problem, dass er alles bis auf den Letzten Tag vom event ausgibt. Beispiel: Mein Event "Test" geht vom 31.10.2021 -> 07.11.2021 angezeigt wird nur 31.10.2021 -> 06.11.2021.

                      Wahrscheinlich wird diese auch gleich den Fall abdecken, das Starttag gleich Endetag ist, so dass Du auf diese Fallunterscheidung verzichten kannst. <- Wenn ich die Abfrage entferne und nur die do-while laufen lasse, passiert nichts und ich erhalte nur die Meldung: Allowed memory size of 536870912 bytes exhausted.

                      PHP-Code:
                      do {
                          
                      $event_date date("Y-n-j"strtotime($start_date));
                          
                      $datearr explode('-'$event_date);
                          
                      $year $datearr[0];
                          
                      $month $datearr[1];
                          
                      $day $datearr[2];
                          
                          if(
                      $event_repeat != 1){
                              
                      $events[$year][$month][$day] [] = [
                                  
                      'startTime' => $start_time,
                                  
                      'endTime' => $end_time,
                                  
                      'text' => $row['event_title'],
                                  
                      'link' => $row['link'],
                              ];
                          } else {
                              
                      $year date("Y");
                              for(
                      $i 0$i <= 1$i++){
                                  
                      $events[$year][$month][$day] [] = [
                                      
                      'startTime' => $start_time,
                                      
                      'endTime' => $end_time,
                                      
                      'text' => $row['event_title'],
                                      
                      'link' => $row['link'],
                                  ];
                                  
                      $year ++;
                              }
                          }
                          
                      $start_date date('Y-m-d'strtotime($start_date ' +1 day'));
                      } while (
                      $start_date != $end_date); 

                      Kommentar


                      • #41
                        Mein Code ist im Editor ordentlich und übersichtlich strukturiert, das Forum übernimmt aber nicht immer die Struktur, manchmal klappt es manchmal nicht.
                        Dann lag ich natürlich falsch mit meinem Hinweis, blöd, dass das Forum die Formatierungen nicht übernimmt.

                        Wenn ich die Abfrage entferne und nur die do-while laufen lasse, passiert nichts und ich erhalte nur die Meldung: Allowed memory size of 536870912 bytes exhausted.
                        Ja, das habe ich leider nicht überblickt, da geraten wir dummerweise in eine Endlosschleife hinein. Da Du das Datum als 'Y-m-d' formatiert hast, müsste es aber möglich sein, einen Vergleich auf <= zu machen:
                        PHP-Code:
                        do {
                            
                        $event_date date("Y-n-j"strtotime($start_date));
                            
                        $datearr explode('-'$event_date);
                            
                        $year $datearr[0];
                            
                        $month $datearr[1];
                            
                        $day $datearr[2];
                            
                            if(
                        $event_repeat != 1){
                                
                        $events[$year][$month][$day] [] = [
                                    
                        'startTime' => $start_time,
                                    
                        'endTime' => $end_time,
                                    
                        'text' => $row['event_title'],
                                    
                        'link' => $row['link'],
                                ];
                            } else {
                                
                        $year date("Y");
                                for(
                        $i 0$i <= 1$i++){
                                    
                        $events[$year][$month][$day] [] = [
                                        
                        'startTime' => $start_time,
                                        
                        'endTime' => $end_time,
                                        
                        'text' => $row['event_title'],
                                        
                        'link' => $row['link'],
                                    ];
                                    
                        $year ++;
                                }
                            }
                            
                        $start_date date('Y-m-d'strtotime($start_date ' +1 day'));
                        } while (
                        $start_date <= $end_date); 

                        Kommentar


                        • #42
                          Sehr gut, das läuft jetzt anscheinend ohne Probleme, jetz mag ich das mit der Zeit noch machen, dass alles mit Platzhalter 00:00 bzw 23:59 gefüllt wird was innerhalb dieser Zeitspanne liegt.
                          Die Startzeit soll beim ersten Eintrag ausgegeben werden und die Endzeit beim letzten. Da bin ich gerade am rätzeln wie man dass schlau anstellt.

                          Kommentar


                          • #43
                            Hier ein kleiner 'dirty hack' meinerseits:

                            Generell ist der saubere Weg über json wie bereits richtig vermerkt. Wenn es aber 'quick 'n dirty'
                            sein soll mach dir ein <div id="jstransfer">, im css mit #jstransfer {visibility: hidden} unsichtbar machen
                            und den Inhalt des DIV's dann mit var jsvariable = document.getElementById('jstransfer') auslesen :-)

                            Ist programmiertechnisch 'koscher' und vor allem simple :-)

                            Aber trotzdem: Wie Sempervivum schon sagte: Bereite php-seitig deine Variable so vor wie du sie braucht und verwende
                            da dann 'json_encode'
                            ________
                            Megabyte66
                            ________

                            Kommentar

                            homepage-forum.de - Hilfe für Webmaster! Statistiken

                            Einklappen

                            Themen: 56.839   Beiträge: 430.423   Mitglieder: 28.593   Aktive Mitglieder: 54
                            Willkommen an unser neuestes Mitglied, digital-mc.

                            Online-Benutzer

                            Einklappen

                            222 Benutzer sind jetzt online. Registrierte Benutzer: 3, Gäste: 219.

                            Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

                            Die neuesten Themen

                            Einklappen

                            • arnego2
                              Antwort auf Besucher-Explosion am 10.4.2021
                              Hi Karl
                              Bei Google brauchst du gar nicht erst nachzuhaken, schau in die Serverstats da findest du die Rohdaten.
                              Google geht den Weg der Kirche und hält uns für doof....
                              Heute, 23:02
                            • Nightland Driver
                              Antwort auf Upload Script gibt Undefined array key "file" zurück
                              Vielen Dank für deine Antwort, da liegt der fehler nicht. Wie oben zu erkennen ist, ist der name des inputs welcher den File enthält "file".
                              PHP-Code:
                              <?php echo '<input onchange="$(submit_profileimage).click();" name="file" type="file" class="custom-file-input
                              ...
                              Heute, 21:01
                            • Megabyte
                              Antwort auf Hompage erstellen lassen?
                              Mein Fazit:

                              CMS wäre hier totaler Unsinn. CMS = ContentManagementSystem. Hier muss kein Content 'gemanagt' werden. Weder Firmenname, noch Anschrift oder angebotene Leistungen müssen hier intervalartig redaktionell bearbeitet werden.

                              Baukasten... B-Lösung. Ich kenne 'Wix'...
                              Heute, 20:46
                            • Megabyte
                              Antwort auf Upload Script gibt Undefined array key "file" zurück
                              Wenn ich es richtig gelesen habe wird hier das Wort 'file' das erste Mal als 'key' verwendet:
                              $lastDot = strrpos($_FILES["file"]["name"], ".");

                              Es soll hier also die letzte Position ermittelt werden wo ein '.' steht inhalb der Variablen (Array) $_FILES["file"]["name"]...
                              Heute, 20:26
                            • speedy1
                              Antwort auf Hompage erstellen lassen?
                              AW: Homepage erstellen lassen?

                              Ich habe mit dem Website-Builder Wix gute Erfahrungen gemacht, welcher auch ein gutes Preis-Leistungs-Verhältnis besitzt.

                              Die Vorteile:
                              - Einfach zu bedienender Editor, mit einem Seitenmenü zum Hinzufügen von Bildern und Anwendungen...
                              Heute, 20:23

                            Die neuesten Beiträge

                            Einklappen

                            • admin
                              Besucher-Explosion am 10.4.2021
                              Hallo,

                              wir hatten am 10.4.2021 eine extrem hohe Zahl an Besuchern hier im Homepage-Forum - hier ein Screenshot von Google Analytics:



                              6.4.2021: 346 Seitenaufrufe
                              7.4.2021: 302 Seitenaufrufe
                              8.4.2021: 289 Seitenaufrufe
                              9.4.2021: 312 Seitenaufrufe...
                              12.04.2021, 17:18
                            • arnego2
                              Antwort auf Besucher-Explosion am 10.4.2021
                              Hi Karl
                              Bei Google brauchst du gar nicht erst nachzuhaken, schau in die Serverstats da findest du die Rohdaten.
                              Google geht den Weg der Kirche und hält uns für doof....
                              Heute, 23:02
                            • Nightland Driver
                              Upload Script gibt Undefined array key "file" zurück
                              Hey,

                              ich habe mit meinem Upload Script ein kleines Problem, es gibt mir nurnoch

                              Warning: Undefined array key "file" in E:\Benutzer\Documents\Xampp\htdocs\Projekt\Homepag e\includes\user.inc.php on line 20
                              Warning: Trying to access array offset on value of type...
                              Heute, 17:44
                            • Nightland Driver
                              Antwort auf Upload Script gibt Undefined array key "file" zurück
                              Vielen Dank für deine Antwort, da liegt der fehler nicht. Wie oben zu erkennen ist, ist der name des inputs welcher den File enthält "file".
                              PHP-Code:
                              <?php echo '<input onchange="$(submit_profileimage).click();" name="file" type="file" class="custom-file-input
                              ...
                              Heute, 21:01
                            • Megabyte
                              Antwort auf Hompage erstellen lassen?
                              Mein Fazit:

                              CMS wäre hier totaler Unsinn. CMS = ContentManagementSystem. Hier muss kein Content 'gemanagt' werden. Weder Firmenname, noch Anschrift oder angebotene Leistungen müssen hier intervalartig redaktionell bearbeitet werden.

                              Baukasten... B-Lösung. Ich kenne 'Wix'...
                              Heute, 20:46
                            • Megabyte
                              Antwort auf Upload Script gibt Undefined array key "file" zurück
                              Wenn ich es richtig gelesen habe wird hier das Wort 'file' das erste Mal als 'key' verwendet:
                              $lastDot = strrpos($_FILES["file"]["name"], ".");

                              Es soll hier also die letzte Position ermittelt werden wo ein '.' steht inhalb der Variablen (Array) $_FILES["file"]["name"]...
                              Heute, 20:26
                            • speedy1
                              Antwort auf Hompage erstellen lassen?
                              AW: Homepage erstellen lassen?

                              Ich habe mit dem Website-Builder Wix gute Erfahrungen gemacht, welcher auch ein gutes Preis-Leistungs-Verhältnis besitzt.

                              Die Vorteile:
                              - Einfach zu bedienender Editor, mit einem Seitenmenü zum Hinzufügen von Bildern und Anwendungen...
                              Heute, 20:23
                            • ST747
                              impfen oder schrott
                              A

                              nachdem wegen astraZ. das impfen ausgesetzt wurde, wird das jetzt wieder fortgesetzt. aber der grund ist, den impfstoff kann man leicher in den arztpraxen an "den mann" bringen.
                              nur so etwas zu empfehlen, weil man das besser in der praxis bewältigen kann, ist schlecht....
                              20.03.2021, 12:15
                            • ST747
                              Antwort auf impfen oder schrott
                              hallo,

                              zwei hinweise:

                              1. Ärzte empfehlen selbst die Hintergrundimmuniät zu stärken:

                              .... wichtig zum Schutz vor dem schweren Verlauf einer Infektion ist auch die "Hintgergrundimmunität". Dazu zählen z.B. eine ausreichend gute Vit D- Versorgung, Selen,
                              ...
                              GlaxoSmithKline plc (LSE/NYSE: GSK) und CureVac N.V. (Nasdaq: CVAC) veröffentlichen heute eine neue Kooperation über 150 Millionen Euro, die auf ihrer bestehenden Zusammenarbeit aufbaut. Ziel der Kooperation ist die Entwicklung von mRNA-Impfstoffen der nächsten Generation, die das Potential eines multivalenten Ansatzes gegen potenziell aufkommenden Virusvarianten in einem Impfstoff mit sich bringt.
                              Heute, 14:47
                            • ST747
                              Antwort auf Besucher-Explosion am 10.4.2021
                              hallo admin,
                              ich bin bei alfahosting. da gibt es eine gute funktion.
                              man kann sich die umfangreiche serverstatistik anschauen.
                              da sieht man auch z.b. die bots.
                              gerhard...
                              Heute, 13:38
                            Lädt...
                            X