Marcus
Avatar Marcus
Themenersteller
Guru (223 Beiträge)

Einzahl / Mehrzahl ausgeben lassen!

am 30.06.2012, 10:53 Uhr eröffnete Marcus folgenden Thread
PHP & MySQL    7003 mal gelesen    21 Antwort(en).

Hallo zusammen!

Ich lasse auf einem Blog hinsichtlich Umfragen verschiedene Dinge ausgeben!

Z. B. bei welcher Umfrage zuletzt abgestimmt wurde, welche Antwort ausgewählt wurde und wieviele andere diese Antwort auch schon gewählt haben.

Bei letzterem scheitere ich aber an der Ausgabe von Ein- und Mehrzahl.

Ich möchte das folgendes Ausgegeben wird:

Wenn 1 Besucher die Antwort gewählt hat: 1 weiterer Besucher stimmte ...
Wenn mehr als 1 Besucher die Antwort gewählt hat: x weitere Besucher stimmten...

Mein Code, den ich mir zusammengesucht habe, sieht jetzt so aus:

.$updat->polla_votes.(count($updat->polla_votes == 1) ? ' weitere Besucher stimmten' : 'weiterer Besucher stimmte').

Die Variabel updat->polla_votes enthält die Anzahl der Stimmen!

Was mach ich falsch?

Danke und Gruß

Marcus


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

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 30.06.2012, 10:58 Uhr schrieb romacron

Am besten nicht alles inline machen.

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


Marcus
Avatar Marcus
Guru (223 Beiträge)
am 30.06.2012, 11:02 Uhr schrieb Marcus

Hallo Roman!

Danke schön!

Und: schön, Dich wieder zu lesen!


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

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 30.06.2012, 12:04 Uhr schrieb Marcus

Hallo nochmal!

Ich muss in meinem Code irgendwo einen Fehler haben!

Die Ausgabe klappt immer noch nicht korrekt!

Der ganze Code sieht jetzt so aus:

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) :
$polliptime_ger = $updat->polliptime_ger;
$polla_votes = $updat->polla_votes;
$updat->polla_votes = $polla_votes - 1;
$pollq_question = $updat->pollq_question;
$pollip_qid = $updat->pollip_qid;
$polla_answers = $updat->polla_answers;
$cntVotedUser = count($updat->polla_votes);
$personsString = ($cntVotedUser > 1) ? \' weitere Besucher stimmten\' : \' weiterer Besucher stimmte\';
echo \'

\';
echo \'

    \';
    echo \'
  1. \'.$updat->pollq_question.\',
    \'.$updat->polliptime_ger.\'
    Letzte gewählte Antwort:
    \'.$updat->polla_answers.\'
  2. \';
    if ($updat->polla_votes == 0) {
    echo (\'Erste Stimme für diese Antwort\');
    }
    else {
    echo \'\'. $updat->polla_votes . $personsString .\' auch so ab\';
    }
    echo \'

\';
echo \'

\';
endforeach;
}


Wo liegt mein Denkfehler?


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, 12:14 Uhr schrieb joerg

Hallo Marcus

Erstmal wäre es ganz schön zu wissen wo du deinen Kode als fehlerhaft ansiehst.

Vielleicht solltest du mal das Error Reporting anstellen.

Oder zumindest dir anschauen was die Variable $upd_result überhaupt zurückgibt.

Gruß
Jörg


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

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 30.06.2012, 12:26 Uhr schrieb Marcus

Hallo Jörg!

Der Code ist dahin Fehlerhaft, das folgendes Ausgeben wird:

x weiterer Besucher stimmte auch so ab

Und das unabhängig davon, ob nur 1 weiterer Besucher so abstimmte, oder ob 2, 3 4 oder noch mehr die gleiche Antwort gewählt haben!


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

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 30.06.2012, 13:03 Uhr schrieb romacron

kannst du einmal
direct unter

$upd_result = $wpdb->get_results($upd_query);


/*wenn xdebug aktiv ist */
var_dump($upd_result);

/*ohne xdebug*/
echo "

";

print_r($upd_result);
echo"

";


hier einfügen.


Marcus
Avatar Marcus
Guru (223 Beiträge)
am 30.06.2012, 13:16 Uhr schrieb Marcus

Hallo Roman!

Die Ausgabe

Array
(
[0] => stdClass Object
(
[polliptime_ger] => 29.06.2012 um 21:03:39
[pollip_aid] => 144
[polla_aid] => 144
[polla_answers] => Abschaffen, und nur noch zivilrechtlich verfolgen.
[polla_votes] => 2
[pollq_active] => 1
[pollq_question] => Wie sollte man damit verfahren
[pollip_qid] => 27
[pollip_timestamp] => 1340996619
)

[1] => stdClass Object
(
[polliptime_ger] => 26.06.2012 um 22:50:12
[pollip_aid] => 153
[polla_aid] => 153
[polla_answers] => Ich helfe direkt
[polla_votes] => 4
[pollq_active] => 1
[pollq_question] => Was unternehmt wenn ihr so etwas seht?
[pollip_qid] => 29
[pollip_timestamp] => 1340743812
)

[2] => stdClass Object
(
[polliptime_ger] => 26.06.2012 um 22:49:52
[pollip_aid] => 150
[polla_aid] => 150
[polla_answers] => Ich unterstütze das
[polla_votes] => 5
[pollq_active] => 1
[pollq_question] => Wie ist Eure Reaktion bei soetwas?
[pollip_qid] => 28
[pollip_timestamp] => 1340743792
)

)


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, 16:19 Uhr schrieb joerg

Hallo Marcus

Also wenn ich das richtig sehe schlägst du dich selbst mit unnutzen Variablen herrum. Vor allen da du die dann auch nicht mehr einsetzt.

Zusätzlich lässt du die Möglichkeit ausser Acht das keine weitere Stimme vorliegt.

Brauchst du die weiteren Felder der Datenbank an anderer Stelle in deinem Kode?
Sonst würde ich mir nochmal überlegen die Abfrage entsprechend zu reduzieren.

Du scheinst auch nicht zu erkennen das wir hier quasi einen Blindflug ohne weitere Angaben von dir unternehmen müssen. Ohne die Ãœbersicht über das Array was zurückgegeben wird hätte ich mir das auch nicht näher angeschaut.

Mir fehlte zwar immer noch überhaupt eine Darstellung was in diesem Fall zurückkommt also bleibt es ein Blindflug.

So das HTML habe ich nach valide gebracht denn in einer numerierten Liste als Kindelemente keine Listenpunkte zu setzen ist auch so ein Punkt.

Ab dem Punkt kann man dann weiter mit CSS vorgehen.

Auf weitere Anpassungen habe ich jetzt keine Lust mehr.

Gruß
Jörg

<?php
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 \'

\';
}
?>




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

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 30.06.2012, 19:22 Uhr schrieb Marcus

Hallo Jörg!

Danke erst einmal für Deine Antwort und die Mühe, die Du Dir gemacht hast!

Also wenn ich das richtig sehe schlägst du dich selbst mit unnutzen Variablen herrum. Vor allen da du die dann auch nicht mehr einsetzt.



Da ich in php (leider) nicht so wirklich firm bin, hab ich mir das soweit zusammengebastelt, bis es letztlich funktionierte wie es sollte. Das dann bis ins kleinste zu optimieren, damit habe ich mich ehrlich gesagt noch nicht wirklich beschäftigt!

Zusätzlich lässt du die Möglichkeit ausser Acht das keine weitere Stimme vorliegt



Das irritiert mich jetzt ein wenig: Was ist mit der Ausgabe \'Erste Stimme für diese Antwort?

Zudem hätte ich vielleicht auch auf diesen Artikel in meinem Blog verweisen können.

Du scheinst auch nicht zu erkennen das wir hier quasi einen Blindflug ohne weitere Angaben von dir unternehmen müssen. Ohne die Ãœbersicht über das Array was zurückgegeben wird hätte ich mir das auch nicht näher angeschaut.

Mir fehlte zwar immer noch überhaupt eine Darstellung was in diesem Fall zurückkommt also bleibt es ein Blindflug.



Wie gesagt: Ich bin in den Programmiersprachen nicht firm. Wie man eine Ausgabe wie die von Romans Code erzeugt, ist für mich etwas zu hohe Mathematik! Und das ich z. B. auf den Artikel, in dem ein Beispiel mit einem Großteil der Ausgabe zu sehen ist, verlinke, ist mir leider nicht eingefallen!

So das HTML habe ich nach valide gebracht denn in einer numerierten Liste als Kindelemente keine Listenpunkte zu setzen ist auch so ein Punkt.

Ab dem Punkt kann man dann weiter mit CSS vorgehen.

Auf weitere Anpassungen habe ich jetzt keine Lust mehr.



Ich danke Dir nochmal für die Mühe und für die Arbeit die Du Dir - ungefragt -gemacht hast!

Und da Du ja ein wenig Dampf abgelassen hast - keine Angst, ich bin nicht beleidigt, nur etwas erstaunt / verwundert - erlaube ich mir das auch mal:

Worüber ich erstaunt / verwundert bin?

Ganz einfach: Ãœber Deine Reaktion im letzten Post!

Das kann ich mir nur auf zweierlei Art erklären. Denn das hier (mein) Code optimiert wird / valide gemacht wird, darum habe ich ja nicht gebeten!

Entweder, man / Du hat / hast das Gefühl, das ich Euch hier nur als Abholstation benutze, wenn ich mal bei einem Problem nicht weiterkomme und ich mich dann bei einer Lösung als undankbar erweise,

oder - für den Fall das Deine Reaktion nicht das Ergebnis einer momentanen Stimmung / Laune und / oder nicht nur auf mich bezogen ist -

im Forum hat sich irgendwann in der letzten Zeit etwas drastisch verändert.

Denn bisher kannte ich das Seitenreport-Forum als überaus / überdurchschnittlich hilfsbereit. Wesentlich Hilfsbereiter als andere Foren. Deswegen ist eine Reaktion wie Deine in diesem Forum für mich was völlig neues - und ich bin ja nicht erst seit gestern hier Mitglied!

Die erinnert mich an Threads in Foren, wo Leute ohne Ahnung denen mit ganz viel Ahnung ne Zeile Code hinklatschen und die dann erwarten, eine komplette Funktion daraus gebastelt zu bekommen!

Aber das war - wenn ich mich nicht ganz irre - bei mir noch nicht wirklich der Fall! Ich denke zumindest, das ich bislang zumindest immer versucht habe, schon ein bisschen was an Eigeninitiative vorweisen zu können!

Also, wenn das jetzt nicht nur eine Antwort aufgrund einer Laune / aufgrund dessen das ich der mit dem Problem bin, war, was ist dann hier passiert?

Viele Grüße

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 30.06.2012, 20:45 Uhr schrieb joerg

Marcus schrieb:

Das irritiert mich jetzt ein wenig: Was ist mit der Ausgabe \'Erste Stimme für diese Antwort?



Hallo Marcus

Wenn ich den Kode richtig überflogen habe wäre auch die Möglichkeit das keine Stimme vorliegt.
Die Irritation kann ich verstehen da habe ich ein Wort zuviel gesetzt.


Marcus schrieb:

Ich danke Dir nochmal für die Mühe und für die Arbeit die Du Dir - ungefragt -gemacht hast!

Und da Du ja ein wenig Dampf abgelassen hast - keine Angst, ich bin nicht beleidigt, nur etwas erstaunt / verwundert - erlaube ich mir das auch mal:

Worüber ich erstaunt / verwundert bin?

Ganz einfach: Ãœber Deine Reaktion im letzten Post!

Das kann ich mir nur auf zweierlei Art erklären. Denn das hier (mein) Code optimiert wird / valide gemacht wird, darum habe ich ja nicht gebeten!



Ich habe keinen Dampf abgelassen. Ich habe meine Gedanken halt eben ausgesprochen zu dem Kode. Das du den wahrscheinlich kopiert hast und im Grunde nicht verstehst war mir schon bewusst.

Es waren so viele Fehler in der Schleife vorhanden das das noch ein bisschen valide zu machen auch kein Akt mehr war. Und wenn ich dann schon Kode hier poste dann sollte der zumindest halbwegs eine gewisse Qualität aufweisen. Wäre mir sonst selbst peinlich gewesen.

Sollte ich jetzt die veränderte Version ohne Erklärung posten das hätte für dich keinen Mehrwert gehabt. So kannst du zumindest Vergleiche anstellen und was daraus lernen.

Ich habe jetzt nicht meine Worte vorher auf eine Goldwaage gelegt und mir ist auch nicht bewusst was an meinem Posting dich gestört hat. War das der letzte Satz mit der Lust?

Du ich war mit einer eigenen Problematik beschäftigt bei der ich eine kurze Auszeit brauchte. Das wollte ich aber noch fertig machen und den Kode nicht noch mehr verfeinern.

Was habe ich im Grunde denn gemacht.
Den Kode etwas performanter und die HTML Ausgabe valider. Wenn sowas bereits als negativ empfunden wird und als nicht gewollt obwohl es mehr Vorteile bringt dann sei es eben so.

Entweder scheint der Kode jetzt einwandfrei trotz Blindflug zu funktionieren oder du hast dich jetzt über mich warum auch immer aufgeregt.

Mich hätte jetzt mehr interressiert ob du jetzt dein Problem gelöst hast anstatt zu meiner Wortwahl Stellung zu nehmen.

Vielleicht war es auch das Wort Blindflug. Kann ich jetzt nicht so nachvollziehen. Jedes Problem ist einfacher für andere zu lösen wenn mehr Informationen vorliegen.
Sorry aber da wusste ich jetzt nicht das du im Grunde die Basics zur Fehlersuche in PHP nicht beherrscht. Da war ich eher von der Annahme ausgegangen das das zumindest sitzt.

Da war ich wohl etwas davon irritiert wieviel Webseiten du betreust.

Gruß
Jörg


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



« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5267 Themen und 36090 Beiträge.
Insgesamt sind 48174 Mitglieder registriert.