{"id":569,"date":"2017-07-31T18:04:10","date_gmt":"2017-07-31T16:04:10","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=569"},"modified":"2017-07-31T18:04:10","modified_gmt":"2017-07-31T16:04:10","slug":"nachtrag-zu-evis-csv-importer","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/07\/31\/nachtrag-zu-evis-csv-importer\/","title":{"rendered":"Nachtrag zu Evis CSV-Importer"},"content":{"rendered":"<h2>Euer Wunsch ist mir Befehl<\/h2>\n<p>Ich bin gebeten worden, die Mechanik wie man abfragt ob ein Datensatz beim Import schon vorhanden ist, doch noch mal n\u00e4her zu erl\u00e4utern. Also, eigentlich ist die Sache ganz einfach. Wir haben ja die Konvention, da\u00df der Beitragstitel f\u00fcr einen Mitgliedsbeitrag immer mit der eindeutigen ID (mnr) beginnt, danach folgt ein Leerzeichen, danach Vorname, Leerzeichen, Nachname. Da die ID eindeutig ist, reicht es v\u00f6llig aus auf einen Substring zu pr\u00fcfen. der Select sieht im einfachsten Fall so aus:<\/p>\n<pre>$schon_da = $wpdb-&gt;get_results( \"SELECT * from wp_posts \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0where post_status like 'publish'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 and SUBSTRING_INDEX( post_title,' ',1) like \".$arr_akt_zeile[0].\"\");<\/pre>\n<p>Der SUBSTRING_INDEX() holt uns alle Zeichen des Post Title vor dem ersten Leerzeichen, und das vergleichen wir mit der aktuellen Mitgliedsnummer, die im Array $arr_akt_zeile[0] steckt. Den post status checken wir noch ab, und das wars schon!<\/p>\n<p>Man kann dann bequem die Anzahl der zur\u00fcckgegebenen Datens\u00e4tze mit num_rows abholen:<\/p>\n<pre>$anzahl_gefunden = $wpdb-&gt;num_rows;<\/pre>\n<p>Dann packt man den ganzen Programmabschnitt zur Anlage des neuen Datensatz in eine If-Abfrage, die nur ausgef\u00fchrt wird wenn noch kein Datensatz mit der aktuellen ID vorhanden ist. Ich h\u00e4nge mal noch eine Debug-Ausgabe in den else-Zweig, aber das reicht jetzt wirklich.<\/p>\n<pre>if ($anzahl_gefunden == 0) {\r\n\r\n... neuen Beitrag anlegen und benutzerdefinierte Felder f\u00fcllen...\r\n\r\n} else {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo \"Datensatz mit der ID \".$arr_akt_zeile[0].\" Ist bereits vorhanden &lt;br&gt;\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0}<\/pre>\n<p>&nbsp;<\/p>\n<h2>N\u00fctzlicher Helfer: Bulk Delete<\/h2>\n<p>Wahrscheinlich gehts euch wie mir, beim Testen hab ich -zig Beitr\u00e4ge neu angelegt, und die in WordPress oder im phpmyadmin einzeln wieder rauszuloschen, ist ein m\u00fchselig Spiel.Nein, da kann man lange suchen, es gibt im WordPress-Beitragseditor keine M\u00f6glichkeit &#8222;Alle Beitr\u00e4ge&#8220; zu selektieren.<\/p>\n<p>Daf\u00fcr gibts ein praktisches Plugin: <a href=\"https:\/\/de.wordpress.org\/plugins\/bulk-delete\/\">Bulk Delete<\/a> erlaubt die selektive L\u00f6schung von Beitr\u00e4gen etc. en masse, das kann man hier ganz gut gebrauchen. Schauts euch mal an, ist immer wieder mal n\u00fctzlich!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Euer Wunsch ist mir Befehl Ich bin gebeten worden, die Mechanik wie man abfragt ob ein Datensatz beim Import schon vorhanden ist, doch noch mal n\u00e4her zu erl\u00e4utern. Also, eigentlich ist die Sache ganz einfach. Wir haben ja die Konvention, da\u00df der Beitragstitel f\u00fcr einen Mitgliedsbeitrag immer mit der eindeutigen ID (mnr) beginnt, danach folgt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[25,7,4,8,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/569"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=569"}],"version-history":[{"count":1,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":570,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/569\/revisions\/570"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}