Beiträge von diltigug


    Warum wird eigentlich für den Beitrag/Seite keine eigenes Template gebaut, das im PHP code die POST Bearbeitung der per Editor eingeklebten <Form> macht ? Wäre doch um einiges leichter und braucht kein Plugin.

    O.K. als Hobby-WPler und Gelegenheits- und Freizeitcoder darf ich doch vielleicht nicht auf so eine Idee kommen, oder? :???:

    Kann ich nur zur Zeit nicht antesten, weil mein FTP-Zugang zur Zeit wegen ´ner Serverumstellung nicht mehr funkt. Unser Admin ist erst morgen wieder greifbar.


    Was is denn das nu wieder? :shock: Was steht in Zeile 30 des eval'd Code? Also wahrscheinlich die 30. Zeile des Codes im Editorfenster. Sollte es doch mit Exec-PHP zusammenhängen, dass es anders nicht funktioniert?


    Das war wohl my mistake, ich hatte die Schleife zur Ausgabe des Arrays nicht auskommentiert.

    diltigug: Das 2., aber mit Anführungszeichen:

    Code
    $ergebnis = $my_wpdb->get_results([COLOR=Red][B]"[/B][/COLOR]SHOW TABLES[COLOR=Red][B]"[/B][/COLOR]);

    Aha, endlich passiert mal was neues :):

    Zitat

    WordPress database error: []
    SET NAMES 'utf8'

    array(9) { [0]=> object(stdClass)#147 (1) { ["Tables_in_intranet02"]=> string(7) "bereich" } [1]=> object(stdClass)#148 (1) { ["Tables_in_intranet02"]=> string(7) "gewerke" } [2]=> object(stdClass)#149 (1) { ["Tables_in_intranet02"]=> string(11) "mitarbeiter" } [3]=> object(stdClass)#175 (1) { ["Tables_in_intranet02"]=> string(8) "projekte" } [4]=> object(stdClass)#176 (1) { ["Tables_in_intranet02"]=> string(8) "prospekt" } [5]=> object(stdClass)#177 (1) { ["Tables_in_intranet02"]=> string(11) "urteilarten" } [6]=> object(stdClass)#178 (1) { ["Tables_in_intranet02"]=> string(7) "urteile" } [7]=> object(stdClass)#179 (1) { ["Tables_in_intranet02"]=> string(12) "vergabearten" } [8]=> object(stdClass)#180 (1) { ["Tables_in_intranet02"]=> string(8) "vergaben" } }
    Catchable fatal error: Object of class stdClass could not be converted to string in /srv/www/wordpress/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()'d code on line 30

    Kannst du mal irgendwas "einfaches" ausprobieren?
    "SHOW TABLES" oder sowas?

    Vielleicht auch mal direkt als 1. Parameter von get_results(), statt vorheriger query()?


    :oops: So?

    PHP
    $my_wpdb->query($my_wpdb->prepare("SHOW TABLES"));

    und/oder so?

    PHP
    $ergebnis = $my_wpdb->get_results(SHOW TABLES);

    erstes bringt

    und zweites einen syntax-error.

    Sorry, ich hab´s einfach noch nicht so drauf mit der richtigen Syntax-Formulierung, brauch da immer ein paar Anläufe.:-?

    So langsam bekomme ich Muffensausen, das es irgendein blöder Syntxfehler ist, obwohl ich alles schon ich weiß nicht wie oft kontrolliert habe.:neutral:

    Guten Morgen,
    mmh... irgendwie ist mein letzter Tread verloren gegangen, also nochmal:

    Da du aber mit dem Theme-Editor ?

    Ich arbeiten an dem Skript derzeit im Beitragseditor von WP im html-Bereich (nicht im Visuell-Bereich). Hier habe ich eine statische Seite angelegt auf der die externen Daten ausgegeben werden sollen.
    Das "Ursprungsskript" ist mit Phase5 erstellt und Teile davon mit copy+paste in WP eingefügt worden.
    Aber irgendwie glaub ich nicht, das es daran liegt, denn ich habe bereits ein Skript, was anstandslos funktioniert (noch ohne wpdb-Klasse), das ich auf die gleiche Weise erstellt habe.
    Auch ein direkter Vergleich dieser Skripte hat mich nicht weitergebracht. Die einzigen Unterschiede im SQL-String bestehen darin, das ich nicht alles auslese (sprich "*" nicht verwende, sondern Felder definert habe) und keine where-Klausel benutze.
    Sehr verwirrend finde ich.

    d.

    Wenn deine DB auf UTF-8 läuft und du die Datei mit diesem Text 'Büro' direkt gefüttert hast, hast du sie auch als UTF-8 ohne BOM Marker im TextEditor gespeichert ? Wenn nicht, ist es eine ANSI Datei mit korruptem Zeichen in einer Anfrage für UTF-8.

    Sowohl die Tabellen der WP-DB als auch die der mit den mitarbeiter-Daten stehen laut phpmyadmin auf latin1_general_ci nur das Feld ort hatte ich im Laufe unserer Versuchsreihe auf utf8_unicode_ci umgestellt.

    Was ist ein BOM Marker? Das musst Du mir nochmal erläutern.
    Das Skript bearbeite ich derzeit im Editor in WP im html-Fenster, ansonsten arbeite ich mit Phase5.

    bin gerade noch auf die glorreiche Idee gekommen, es mal ohne die where-Klausel zu probieren (hätte ich auch früher drauf kommen können).
    Allerdings ohne Erfolg, nach wie vor:

    Zitat


    WordPress database error: []
    SELECT * FROM mitarbeiter ORDER BY lastname ASC, firstname ASC

    NULL

    Aber immerhin scheinen dann die Umlaute kein Problem zu sein.

    Update:
    Auch noch probiert statt * nur ein Feld auszulesen, ohne Erfolg:

    Zitat


    WordPress database error: []
    SELECT lastname FROM mitarbeiter WHERE ort = 'Büro' ORDER BY lastname ASC, firstname ASC

    NULL

    Ach ja, sagtest du ja schon, nix mehr mit mysql_*

    o.k. jetzt kommt das:

    PHP
    WordPress database error: []
    SELECT * FROM mitarbeiter WHERE ort = 'Büro' ORDER BY lastname ASC, firstname ASC


    Sieht doch gar nicht so schlecht aus, oder?


    P.S. gibt es eigentlich irgendwann einen Preis für den längsten Tread des Forums? :D

    so?

    PHP
    $my_wpdb->query($my_wpdb->prepare("SELECT * FROM mitarbeiter WHERE ort = %s ORDER BY lastname ASC, firstname ASC", $ortvalue));
    echo mysql_error();
    $ergebnis = $my_wpdb->get_results(null, ARRAY_N);
    var_dump($ergebnis);

    Da kommen keine weiteren Meldungen:

    Zitat


    NULL

    Warning: Invalid argument supplied for foreach() in /srv/www/wordpress/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()’d code on line 27

    so, jetzt hab´ich´s soweit und stehe, glaub ich, wieder am Anfang:
    Folgende Meldung wird ausgegeben:

    Zitat


    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/wordpress/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()’d code on line 25

    Das hatte ich irgendwann schon mal. Müsste sich eigentlich auf die folgende Zeile beziehen:

    Zitat

    while($ergebnis=mysql_fetch_array($ergebnis))

    So schaut der Code jetzt aus:

    Dann noch gleich die Frage, wie schliesse ich die DB-Verbindung wieder?

    PHP
    <?php
    $pass="xxx";  //Datenbankpasswort
    $data="xxx";  //Datenbank
    $user="xxx";  //Datenbanknutzer
    $tabelle="mitarbeiter";

    Bis hierher okay.

    PHP
    $link=mysql_connect("localhost", $user, $pass, true);
    mysql_select_db($data, $link);

    So, hier legst du jetzt eine neue Datenbank-Verbindung mit Hilfe der WPDB-Klasse an.


    Hier geht´s leider schon wieder los, wie genau mach ich das? Ich habe mich mit meine Englischkenntnissen versucht was in der Doku zu finden, leider ohne Erfolg. Darum einfach mal ins Blaue geraten:

    PHP
    $pass="xxx";
    $data="xxx";
    $user="xxx";
    $tabelle="mitarbeiter";
    $wpdb->selectdb($data, $wpdb->connect("localhost", $user, $pass, true));

    Funktionert natürlich nicht:

    Zitat


    Fatal error: Call to a member function selectdb() on a non-object in /srv/www/wordpress/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()'d code on line 17

    ich vermute, weil selectdb und connect keine Objekte der Klasse sind? Ist das so richtig formuliert?

    Besser wäre es allerdings, wenn du die bestehende Datenbank-verbindung nutzen könntest, d.h. die Mitarbeiter-Tabelle würde in der selben Datenbank liegen wie die wp_*-Tabellen. Dann sparst du dir eine weitere Datenbank-Verbindung, das spart Resourcen und schließt mögliche Fehlerquellen aus.


    Ist in diesem Fall leider nicht möglich.

    PHP
    /*Hier der Code von marX*/
    $ort_value = 'büro';
    $wpdb->query(
       $wpdbprepare("
           SELECT * FROM mitarbeiter
           WHERE ort = %s
           ORDER BY lastname ASC, firstname ASC",
           $ort_value));
    /*marX-Code ende, und dann... ? */

    ...

    Alle Klarheiten beseitigt?

    Wie man siehtst, leider nein. In dem Code oben, muss das $wpdbprepare oder $wpdb->prepare heissen. Ist im Zitat und Original unterschiedlich.

    Gruss,
    diltigug, oder die Hoffnung stirbt zuletzt.:?

    Hallo marX,

    mir fehlt einfach Grundwissen in Bezug auf Klassen und deren Anwendung. Und alles was ich dazu lese, verstehe ich im Moment nicht wirklich. Ziemlich frustrierend.

    Ich habe es mal mit Deinem Code probiert, habe aber jetzt z. B. überhaupt keine Ahnung, wie ich die Daten denn damit ausgeben kann.

    Mir ist klar, das das Forum hier kein PHP-Grundkurs sein kann, aber vielleicht kannst Du mir ja doch nochmal weiterhelfen?

    Hier mal mein bisherigen Code im Zusammenhang:

    Ich würde die Tabellen so gerne in dem Blog ausgeben, wäre ein echter Mehrwert für unser Büro-Intranet.

    Gruß, diltigug

    Als erstes würde ich mal mit Prepared Statements arbeiten, statt irgendwelche Werte direkt in die Query zu tippen. Siehe hier:
    WordPress Coding Standards « WordPress Codex
    (Abschnitt "Formatting SQL statements")
    Möglicherweise behebt das bereits das Problem, da hier Escaping und Quoting der Daten die WPDB-Klasse für dich übernimmt und so eine mögliche Fehlerquelle ausgeschlossen wird.


    Prepared Statements ? in die Query zu tippen ? WP-DB-Klasse nutzen ?

    So langsam komme ich da als Hobby-WPler doch ins schwitzen :???:.
    Aber egal, ich werde trotz meiner beschränkten Englischkenntnisse mal mit dem Codex-Link beschäftigen. Auf den ersten Blick wird da der SQL-String irgendwie so übergeben (Bsp. aus dem WP Codex):

    Zitat

    $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id ) );

    Das habe ich bisher nicht so gemacht. Demnach sähe die Abfrage ungefähr so aus:

    Code
    $wpdb->query( $wpdb->prepare( "SELECT $wpdb-> * FROM mitarbeiter WHERE ort='büro' ORDER BY lastname firstname ASC ) );

    richtig? Wenn ja, werde ich damit nachher mal rumspielen. Mein SQL-String wird ja auch noch durch eine if-Abfrage zusammengesetzt. Aber ich glaub, das bekomme ich hin.
    Bin jetzt aber erstmal weg, melde mich auf jeden Fall nochmal, ob es klappt.
    Jedenfalls schon jetzt mal danke für diesen Super-Support von Euch.
    Ich glaube, ohne dieses Forum wären meine autodidaktischen Fähigkeiten schon lange an ihre Grenzen gestossen.

    diltigug