Marcus
Avatar Marcus
Themenersteller
Guru (223 Beiträge)

Einzahl / Mehrzahl ausgeben lassen! (Seite 2)


Marcus
Avatar Marcus
Guru (223 Beiträge)
am 30.06.2012, 21:23 Uhr schrieb Marcus

Hallo Jörg!

Gut, dann hab ich da was reininterpretiert, was Du nicht gemeint hast!

Was meine vielen Webseiten anbelangt:

Es ist richtig: ich sammel mir die Codestückchen im Netz zusammen und bastel dann. Wenn was nicht so will, wie es soll, dann schmeiße ich es manchmal auch einfach wieder raus

Was mein Problem anbelangt: Das ist leider noch nicht gelöst!

Wenn ich meinen Abschnitt ab foreach mit deinem Code ersetze, dann meldet er mir ein unexpected $end in der letzten Zeile.

Ich werde mir das die Tage noch mal genauer reintun. Mal sehen, ob ich da die Lösung selbst finde!


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

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 30.06.2012, 22:18 Uhr schrieb joerg

Hallo Marcus

Und ich bin dazu übergegangen gar nicht nach Code Schnipsel zu suchen sondern die anhand der Beschreibungen auf de.php.net beispielsweise oder anhand dem was eine leistungsstarke IDE dazu an Informationen parat selbst zu bauen.



Ich weiss jetzt nicht welchen Editor du nutzt um deine Seiten aufzubauen. Es gibt da aber einige IDE die zumindest die Syntax in deinem Kode auf Fehler überprüfen.

Okay die Fehlermeldung sollte klar sein, so wie du ausgetauscht hast.

Mein überarbeiterter Kode beinhaltete nur die foreach Schleife und da fehlt dir wohl noch eine schliessende Klammer.

Gruß
Jörg


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

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 01.07.2012, 08:23 Uhr schrieb romacron

Hallo Marcus,

wurde denn dein Problem nun gelöst?


Marcus
Avatar Marcus
Guru (223 Beiträge)
am 01.07.2012, 10:16 Uhr schrieb Marcus

Hallo zusammen!

@Joerg: Da meine Webseiten auf Wordpress aufbauen, braucht man da ja nur wirklich Coding-Kenntnisse, wenn man eien Funktion um-, aus- oder einbauen will!

Das ist für Leute wie mich ja wie gemacht.

@Roman: Leider nein

Ich habe, wie bereits erwähnt, meine foreach-Schleife durch Jörgs Code ersetzt - und eine schließende Klammer hinzugefügt.

Er frisst das mit Einzahl / Mehrzahl leider immer noch nicht und zeigt, zählt mit angepasster foreach-Schleife auch nicht mehr !

function umfrage() {
global $wpdb;
$upd_query = "SELECT FROM_UNIXTIME(pollip_timestamp,\'%d.%m.%Y um %H:%i:%s\') AS polliptime_ger, pollip_aid, polla_aid, polla_answers, polla_votes, 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 \'

\';
}
foreach ($upd_result as $updat) {
$cntVotedUser = count($updat->polla_votes)-1;
$personsString = ($cntVotedUser == 1) ? \' weiterer Besucher stimmte\' : \' weitere Besucher stimmten\';
echo \'

\';
echo \'

\'.$updat->pollq_question.\',\'.$updat->polliptime_ger.\'Letzte gewählte Antwort:\'.$updat->polla_answers.\'
\';
if ($updat->polla_votes == 1) {
echo (\'

Erste Stimme für diese Antwort

\');
}
elseif ($updat->polla_votes > 1) {
echo \'

\'. $cntVotedUser . $personsString .\' auch so ab

\';
}
else {
echo (\'

Keine Stimme für diese Antwort

\');
}
echo \'

\';
}
}

Gruß

Marcus

EDIT: Wer will kann sich das hier in der Sidebar mal angucken


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

gambler
Student
Guru (101 Beiträge)
am 01.07.2012, 12:24 Uhr schrieb gambler

Hallo Marcus,

ich denke es liegt nur ein kleiner Denkfehler vor. Nach deiner geposteten var_dump()-Ausgabe beinhaltet polla_votes doch schon die Anzahl der abgegebenen Stimmen/Votes und beinhaltet auch immer nur ein Element:

Marcus schrieb:


[polla_votes] => 2



Deshalb brauchst du auch kein count() nutzen, weil count() in diesem Fall immer 1 zurückliefert.

Also einfach count() rausnehmen:

Marcus schrieb:


$cntVotedUser = $updat->polla_votes - 1;
$personsString = ($cntVotedUser == 1) ? \' weiterer Besucher stimmte\' : \' weitere Besucher stimmten\';



Gruß Stephan


Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 01.07.2012, 12:32 Uhr schrieb Marcus

Hallo Stephan!

Das scheint der Knackpunkt gewesen zu sein!

Herzlichen Dank!


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

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 08.09.2012, 19:36 Uhr schrieb Marcus

Hallo zusammen!

Da ich den Code für eine andere Funktion nur leicht umgeändert habe, will ich keinen neuen Thread aufmachen für meine Frage!

Der Code sieht folgendermaßen aus:

function offene_umfrage() {
global $wpdb;
$upd_query= "SELECT FROM_UNIXTIME(pollip_timestamp,\'%d.%m.%Y um %H:%i:%s\') AS polliptime_ger,pollq_timestamp, pollip_aid, polla_aid, polla_answers, polla_votes, pollq_active, pollq_question,pollip_qid, pollip_timestamp, pollq_totalvoters 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_totalvoters = \'0\'
ORDER BY pollq_timestamp DESC";
$upd_result = $wpdb->get_results($upd_query);
if ( empty($upd_result) ) {
echo \'

\';
}
foreach ($upd_result as $updat) {
$pollq_question = $updat->pollq_question;
$polla_answers = $updat->polla_answers;
echo \'div class="umfrage">\';
echo \'
\'. $updat->pollq_question .\'
\';
echo \'
\'. $updat->polla_answers .\'
\';
echo \'
\';
}
}


Ich möchte damit erreichen, das er mir nur Umfragen ausgibt, bei denen noch nicht abgestimmt wurde - daher die 0 bei der WHERE-Abfrage! Solche Umfragen gibt es definitiv!

Hier aber ist das Array leer, was ich mit Romans Code geprüft habe! Ändere ich die Zahl in eine größer 0 ist das Array gefüllt und es erfolgt eine Ausgabe!

Ich habe auch schon versuch mit <1 und ähnlichem zu hantieren, leider erfolglos!

Woran kann die fehlende Ausgabe liegen?


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

gambler
Student
Guru (101 Beiträge)
am 09.09.2012, 10:39 Uhr schrieb gambler

Hallo Marcus,

ohne die zugrundeliegenden Tabellendaten zu kennen, kann dir hier glaube ich keiner wirklich helfen. Ich habe mir mal testweise WP_Polls installiert (scheinst du ja zu verwenden) und die Tabellen mit phpmyadmin angeschaut.

Wenn du eine Umfrage hast bei der noch kein Benutzer abgestimmt hat, dann gibt es für diese Umfrage auch keine Einträge in der Tabelle pollsip! Folglich liefert dein SQL-Query auch immer ein leeres Resultat zurück, weil du einen JOIN über die pollsip-Tabelle durchführst. Die Tabelle pollsip benötigst du in diesem Fall nämlich nicht.

Du könntest dich jetzt mit LEFT und RIGHT JOINS beschäftigen, oder einfach die Anfrage anpassen:

[sql]
SELECT
*
FROM
`wp_pollsq` AS pq
INNER JOIN `wp_pollsa` AS pa
ON pq.pollq_id = pa.polla_qid
WHERE
pq.pollq_totalvoters = 0
[/sql]

Mit dieser Anfrage erhälst du dann auch alle Umfragen, für die noch kein Benutzer abgestimmt hat.

Grüße Stephan


Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 09.09.2012, 11:26 Uhr schrieb Marcus

Hallo Stephan!

Das hat mich der Lösung schon sehr nah gebracht. Danke dafür schon mal!

Nur ein kleines \'Problem\' würde ich jetzt gerne noch ausschalten. Und zwar zeigt er mir jetzt jede Umfrage so oft an, wie es Antwortmöglichkeiten gibt!

Sprich, sind 4 Antwortmöglichkeiten vorhanden, wird die Frage 4 mal angezeigt!

Ne Idee, wie man das reduzieren kann?

Danke im voraus!

Marcus


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

gambler
Student
Guru (101 Beiträge)
am 09.09.2012, 11:36 Uhr schrieb gambler

Ehm, zum Beispiel so:

[sql]
SELECT
*
FROM
`wp_pollsq` AS pq
INNER JOIN `wp_pollsa` AS pa
ON pq.pollq_id = pa.polla_qid
WHERE
pq.pollq_totalvoters = 0
GROUP BY
pq.pollq_id
[/sql]

Grüße Stephan


Belegungsplan Ferienwohnung
Blog: Smart-Webentwicklung



« zurück zu: PHP & MySQL

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