Ankündigung

Einklappen
Keine Ankündigung bisher.

Automation von Dateienänderung und Upload in Joomlafeld

Einklappen

Neue Werbung 2019

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

  • Automation von Dateienänderung und Upload in Joomlafeld

    Hallo liebe Leute,

    ich bin neu hier im Forum und habe eine Frage zu einem Code.
    Also was passieren soll:
    Ich habe eine Telefonliste.Diese soll mittels SQL Befehl in eine Datenbank hochgeladen werden. Vorher muss diese CSV Datei aber noch umgebaut werden mittels Makro für den CSV Upload in die Datenbank.
    Nach dem erfolgreichen Upload in eine Datebank-Tabelle, soll eine php diese Daten aus der Bank ziehen und in HTML umwandeln.
    Die umgewandelten Daten sollen nun wieder per php in joomla (joomla db), in ein Feld eingefügt werden.
    Soweit zum Ablauf.
    Jetzt mein Problem, bis zum Umwandeln und Herunterziehen der Daten mittels php klappt alles. Aber wie kann ich jetzt die Ausgabe in HTML Form von der PHP in einer Datei speichern und diese dann in das Feld in joomla pushen?

    So und jetzt hier sind die Codes:
    1.PHP Code zum Download der Daten aus der DB und Umwandeln in HTML
    PHP-Code:
    <?php

     
    /** Tabellenname definieren**/
    define(TABLENAME"Telefonliste");
     
     
    /** Datenbankverbindung definieren**/
    $con mysql_connect("localhost","****","****");
    if (!
    $con)die('Keine Verbindung zur Datenbank' mysql_error());
     
    mysql_select_db("telefonliste") or die("Datenbank nicht vorhanden");

    echo 
    "{supertable table}";
    echo 
    "<table border='5'>";
    echo 
    "<tbody>";
     
    $sortBy = (isset($_GET["sortBy"])) ? $_GET["sortBy"] : mysql_field_name(mysql_query("SELECT * FROM " TABLENAME), 0);
    $direction = (isset($_GET["direction"])) ? $_GET["direction"] : "ASC";
     
    $sql "SELECT * FROM " TABLENAME .  " ORDER BY " $sortBy " " $direction;
    $query mysql_query($sql);
    $feldcontainer = array();
     
     
    /** Spaltenüberschriften **/
     
    echo "<tr>";
     
    for(
    $i 0; @$feld mysql_field_name($query$i); $i++):
    echo 
    "<td align='center'><strong>" $feld " <a href='?sortBy=$feld&direction=ASC'>&uarr;</a> &nbsp; <a href='?sortBy=$feld&direction=DESC'>&darr;</a>" "</strong></td>";

    $feldcontainer[$i] = $feld;
     
    endfor;
     
    echo 
    "</tr>";
     
     
    /** Zeilen **/
     
    if(mysql_num_rows($query)):
     
    while(
    $row mysql_fetch_object($query)):
     
    echo 
    "<tr>";
     
    foreach(
    $feldcontainer AS $key => $value):
     
     
    /** $key und nächstes if werden nur für die Spaltenfarbe benötigt **/
     

    echo "<td >" $row->$value "</td>";
     
    endforeach;
     
    echo 
    "</tr>";
     
    endwhile;
    echo 
    "</tbody>";
    echo 
    "</table>";
    echo 
    "{/supertable}";

    else: echo 
    "<tr><td colspan='" count($feldcontainer) ."'>Es befinden sich keine Eintr&auml;ge in der Datenbank</td></tr>";

    endif;


    ?>
    So dies Funktioniert auch wenn ich das über Apache aufrufe.
    Ich möchte aber jetzt die erzeugte HTML in ein Feld bei joomla hochladen.
    Muss ich die HTML erst als extra Datei abspeichern und dann hochladen, oder kann ich die Ausgabe direkt mittels eines Befehls weitergeben?
    Ich habe das so probiert:
    PHP-Code:
    <?php 
    $var
    =file_get_contents('http://redminetest.teepack.com/Telefonliste_in_HTML.php');

    $host "localhost";
    $user "***";
    $passwort "****";
    $verbindung mysql_connect ($host$user$passwort);
    $db_selected mysql_select_db('joomla'$verbindung);
    $query mysql_query("UPDATE jml_content Set introtext='$var' WHERE id=16");
    $query2 mysql_query("SHOW WARNINGS");
    echo 
    $query2;
       
        
    if(
    $verbindung == true)
    {
    echo 
    "Eintragx war erfolgreich";
    }
    else
    {
    echo 
    "Fehlerx beim Speichern";
    }
        
    if(
    $query == true)
    {
    echo 
    "Eintrag war erfolgreich";
    }
    else
    {
    echo 
    "Fehler beim Speichern";
    }
    ?>
    So das funktioniert auch aber nur mit einem Text statt einer Variablen in der Spalte
    PHP-Code:
    $query mysql_query("UPDATE jml_content Set introtext='$var' WHERE id=16"); 
    Ich würde aber gerne die Ausgabe der php dort direkt einfügen.

    Ich hoffe mir kann jemand helfen.
    Vielen Dank schon mal.

  • #2
    Wenn du eine Zeichenkette in einen Query einfügst muss die escapt werden.

    Ansonsten, wenn ein Query nicht macht was er soll http://php.net/manual/de/function.mysql-error.php und den roten Kasten gleich mit lesen.

    Kommentar


    • #3
      Die älteste der drei mysql-Erweiterungen ist veraltet (mysql_*-Funktionen, nicht die MySQL-Datenbank) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
      Choosing an API
      Warum man mysql* generell nicht (mehr) nutzen sollte.
      Wie man von mysql* auf PDO umsteigt
      Wissenswertes zum Thema SQL-Injection

      ----

      Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional. In einigen Fällen ist das Weglassen hilfreich:
      • Es können ungewollte Whitespaces am Ende einer Datei auftreten, durch die ein späteres setzen von headern be-/verhindert werden kann.
      • Außerdem verhindert dies, dass beim Output Buffering Whitespaces am Ende eines durch die eingebundenen Dateien erzeugten Parts.
      • Im PSR Standard (PSR-2) ist ?> sogar ausdrücklich verboten, wenn in einer Datei ausschliesslich PHP verwendet wird (2.2 Files).


      ----

      Es ist nicht mehr zeitgemäß, Anwendungslogik und Ausgabelogik zu kombinieren. Dadurch leidet die Wartbarkeit beider Komponenten. In der Regel folgen in PHP geschriebene Applikationen daher dem EVA-Muster, welches einen leicht nachvollziehbaren Datenfluss ermöglicht, besser wartbare Applikationen erzeugt und leichter von anderen Entwicklern verstanden wird. In der PHP-Welt hat sich hierauf aufbauend das (häufig falsch interpretierte) MVC-Muster [1] etabliert (siehe auch DCI oder ADR). Ganz einfach gesagt handelt es sich bei dem EVA-Muster um eine Aufteilung der Aktionen "Auswertung der Eingabeparameter", "Verarbeitung der damit verknüpften Anwendungslogik" und "Erzeugung und Übermittlung der Ausgabe". Oder vereinfacht: Erst Daten sammeln, dann daraus die Darstellung erzeugen und ausgeben. Die Verwendung einer Templateengine (mit Layout-Support) ist dafür Empfehlenswert - jedoch aber keine Voraussetzung. Mehr Informationen: http://php-de.github.io/jumpto/eva-prinzip/

      ----

      Die Verwendung von "*" in SQL-Abfragen wird im Allgemeinen als schlechter Stil angesehen. "*" kann entweder alle Felder aus einer Tabelle, oder (wenn mehrere Tabellen mit einbezogen werden) aus allen Tabellen ziehen.

      Zwei Gründe sprechen dagegen: Wenn du dein Tabellenschema anpasst, wird die Abfrage weiterhin funktionieren. Die Abfrage wird in deinem Code aber Variablen (bzw. Array-Keys) erzeugen, die von deinem Programm so nicht erwartet werden. Das kann (je nachdem, wie deine Applikation aufgebaut ist) zu schwer nachvollziehbaren Problemen führen. Würdest du die Spaltennamen direkt in deiner SQL-Abfrage angeben, würde die SQL-Abfrage direkt lautstark fehlschlagen. Dann kannst du möglicherweise einen Alias für umbenannte Tabellenspalten angeben, ohne dass du deinen Applikationscode anpassen musst.

      Außerdem kann man durch eine explizite Angabe die Reihenfolge und die Anzahl der Tabellenspalten begrenzen. Die Reihenfolge kann je nach Applikation eine Rollen spielen und je weniger Felder man einbezieht, desto schneller wird das Ergebnis zum abfragenden Client übertragen.

      Kommentar


      • #4
        Zitat von rkr Beitrag anzeigen
        Die Verwendung von "*" in SQL-Abfragen wird im Allgemeinen als schlechter Stil angesehen. "*" kann entweder alle Felder aus einer Tabelle, oder (wenn mehrere Tabellen mit einbezogen werden) aus allen Tabellen ziehen.

        Zwei Gründe sprechen dagegen:[...]
        Und die Gründe treffen hier zu? In dem Code sind ganz andere Sachen faul...

        Kommentar


        • #5
          Da ist ne Menge faul, aber dafür habe ich noch keine Textvorlagen

          Kommentar

          Lädt...
          X