Marcus
Avatar Marcus
Themenersteller
Guru (223 Beiträge)

(Zusammenhängende) Daten aus 2 Tabellen auslesen

am 08.06.2012, 15:24 Uhr eröffnete Marcus folgenden Thread
PHP & MySQL    2051 mal gelesen    5 Antwort(en).

Hallo zusammen!

Ich möchte, wie die Ãœberschrift wohl schon sagt, zusammenhängende Daten aus 2 DB-Tabellen auslesen!

Es geht darum, das ich anzeigen lassen möchte, bei welcher Umfrage zuletzt abgestimmt wurde. Die Daten werden also von einem Plugin in die DB, in ganze 3 Tabellen, geschrieben.

Die eine Tabelle namens pollsip speichert eben diese Information. Die Spalte aid ist dabei mit der Spalte id aus der Tabelle pollsq identisch, die auch die notwendige Information des Umfrage-Titels speichert.

Nun habe ich mir soweit schon ein Konstrukt gebastelt, was aber nicht wirklich funktioniert

<?php $upd_query = "SELECT FROM_UNIXTIME(pollip_timestamp,'%d.%m.%Y um %H:%i:%s') AS polliptime_ger, pollip_qid AS pollidqid, pollq_question AS pollqquestion FROM $wpdb->pollsip, $wpdb->pollsq
WHERE pollsq.pollq_id = pollsip.pollip__qid
ORDER BY pollip_timestamp DESC
LIMIT 3";
$upd_result = $wpdb->get_results($upd_query);
if ( empty($upd_result) ) {
echo '... keine Umfrage beantwortet';
}
foreach ($upd_result as $updat) :
$polliptime_ger = $updat->polliptime_ger;
$pollqquestion = $updat->pollqquestion;
$pollidqid = $updat->pollidqid;
echo '

    ';
    echo '
  1. '.$updat->pollqquestion.'
    Zuletzt am: '.$updat->polliptime_ger.'
  2. ';
    echo '
';?>

Könnt ihr mir auf die Sprünge helfen?

Danke im voraus!


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

MatthiasHuehr
Avatar MatthiasHuehr
Programmierer
Content Halbgott (705 Beiträge)
am 09.06.2012, 16:37 Uhr schrieb MatthiasHuehr

SELECT * FROM pollsq, pollsip

WHERE pollsq.pollq_id = pollsip.pollip__qid
ORDER BY pollip_timestamp DESC
LIMIT 3";



MV-Trip - mein Reiseführer für Mecklenburg-Vorpommern
insideGREIFSWALD - mein Newsmagazin über Greifswald


gelöschter Benutzer
am 09.06.2012, 21:56 Uhr schrieb

Hallo Macrus,

hier noch mal dein Query:
[SQL]SELECT FROM_UNIXTIME(pollip_timestamp,\'%d.%m.%Y um %H:%i:%s\') AS polliptime_ger,
pollip_qid AS pollidqid,
pollq_question AS pollqquestion
FROM $wpdb->pollsip, $wpdb->pollsq
WHERE pollsq.pollq_id = pollsip.pollip__qid
ORDER BY pollip_timestamp DESC
LIMIT 3[/SQL]

Du verwendest da einen etwas älteren Syntax aber egal. Man sieht nicht wirklich welche Spalte wo hin gehört. (Die Struktur der Tabellen wäre hilfreich.)

Du willst bestimmt nur die letzten drei Umfragen und nicht die letzten drei Antworten der Umfragen haben? Denn wenn die alle gleich sind schauts komisch aus.

Dein Ansatz ist schon ganz gut aber wenn ich das richtig sehe brauchst du alle drei Tabellen. Die eine enthält bestimmt das Thema, die zweite die möglichen Antworten und die dritte die Auswahl der User.

Du müsstest also alle drei JOINen und dann filtern. Wie genau du filterst hängt davon ab was du anzeigen möchtest und wie das Plugin aufgebaut ist. Bei manchen Umfragen kann ein User mehrer Antworten geben das, sollte auch behandelt werden.

Vermutlich willst du die Umfragen auch verlinken so das deine Besucher, die mit abstimmten möchten, direkt dort hin kommen?


Schöne Grüße
Thomas


Marcus
Avatar Marcus
Guru (223 Beiträge)
am 09.06.2012, 22:11 Uhr schrieb Marcus

Hallo Thomas, Hallo Matthias!

Vielen dank für Eure Hilfe!

@Matthias: Der Ansatz passte leider nicht so wirklich! Aber das lag wohl auch mehr an mir und den (fehlenden) Infos.

Ich habs jetzt aber trotzdem tatsächlich hingebastelt bekommen. Der Code sieht dabei wie folgt aus:


<?php
global $wpdb;
$upd_query = "SELECT FROM_UNIXTIME(pollip_timestamp,\'%d.%m.%Y um %H:%i:%s\') AS polliptime_ger, pollq_question,pollip_qid, pollip_timestamp FROM $wpdb->pollsip
INNER JOIN $wpdb->pollsq AS pq ON ($wpdb->pollsip.pollip_qid = pq.pollq_id)
ORDER BY pollip_timestamp DESC
LIMIT 3";
$upd_result = $wpdb->get_results($upd_query);
if ( empty($upd_result) ) {
echo \'... keine Abstimmung\';
}
foreach ($upd_result as $updat) :
$polliptime_ger = $updat->polliptime_ger;
$pollq_question = $updat->pollq_question;
$pollip_qid = $updat->pollip_qid;
echo \'

    \';
    echo \'
  1. \'.$updat->pollq_question.\',
    \'.$updat->polliptime_ger.\'
  2. \';
    echo \'

\';
endforeach;?>

Ein wenig weitergeholfen hat mir da ein Plugin von Tanja Preuße.


@Thomas: Mit dem Verlinken kriege ich das wohl auch noch geregelt, wenn ich mir das genauer anschaue! Sonst melde ich mich sicher noch einmal!


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 10.06.2012, 12:25 Uhr schrieb Marcus

Hallo zusammen!

Ich habe das jetzt soweit hinbekommen!

Leider stimmt die Uhrzeit, die ausgegeben wird, nicht mit der tatsächlichen Zeit zu der abgestimmt wurde überein.

Ein Zeitunterschied von zwei Stunden wird ausgegeben. Z. B. abgestimmt um 10:48, ausgegeben wird 12:48

Wie kann man das ändern?

Der Code sieht jetzt so aus:

function umfrage() {
global $wpdb;
$upd_query = "SELECT FROM_UNIXTIME(pollip_timestamp -2,\'%d.%m.%Y um %H:%i:%s\') AS polliptime_ger, pollip_aid, polla_aid, polla_answers, pollq_active, pollq_question,pollip_qid, pollip_timestamp FROM $wpdb->pollsip
INNER JOIN $wpdb->pollsq AS pq ON $wpdb->pollsip.pollip_qid = pq.pollq_id
INNER JOIN $wpdb->pollsa AS pa ON $wpdb->pollsip.pollip_aid = pa.polla_aid
WHERE pollq_active = \'1\'
ORDER BY pollip_timestamp DESC
LIMIT 3";
$upd_result = $wpdb->get_results($upd_query);
if ( empty($upd_result) ) {
echo \'... keine Abstimmung\';
}
foreach ($upd_result as $updat) :
$polliptime_ger = $updat->polliptime_ger;
$pollq_question = $updat->pollq_question;
$pollip_qid = $updat->pollip_qid;
$polla_answers = $updat->polla_answers;
echo \'

    \';
    echo \'
  1. \'.$updat->pollq_question.\',
    \'.$updat->polliptime_ger.\'
    \'.$updat->polla_answers.\'
  2. \';
    echo \'

\';
endforeach;
}

Danke im voraus!

Marcus


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 10.06.2012, 14:10 Uhr schrieb joerg

Hallo Markus

Der Zeitunterschied wird wohl daher kommen das du die Greenwich time da wohl ausgibst.

Wahrscheinlich nimmst du an einer Stelle die falsche Funktion.

de3.php.net/manual/de/function.date.php



de3.php.net/manual/de/function.gmdate.php



Gruß
Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

  • 1


« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.