Wohin mit custom php ?
am 25.01.2010 - 12:53 Uhr in
Hi,
Ich habe mir Node_comment installiert, und dort ueber ein text feld bei comments eine frage fuer die user eingerichtet welche sie ueber radio buttons beantworten koennen
Wuerdest du dieses Buch weitermepfehlen ?
* Ja
* Nein
So das funktioniert auch wunderbar, jetzt moechte ich aber auf dem main node, also dem fuer das die comments geschrieben werden anzeigen wieviel % mit Ja gestimmt haben. Habe mir gedacht sollte ja gar kein problem sein habe mir ein php script gemacht das funktionieren sollte, tut es aber nicht :( hatte es in die node-mode.php.tpl gepackt gehabt.
<?php
echo $nid; //just to check... This returns the node id
$myquery = "SELECT count (*) FROM `my_database`.`content_type_comment` where (`field_name_if_customer_return_value` = 'yes') and `field_parent_id_target' = $nid)";
$link = mysql_connect('localhost', 'user', 'xxxxxxxx');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $link);
$result = mysql_query($myquery, $link);
echo "How many said YES: " . $results;
mysql_close($link);
?>
Jetzt ist die frage was mache ich falsch?
Wo sollten eigene Code snippets hin?
Muss dafuer ein eigenes modul erstellt werden oder gibt es eine "einfachere " loesung?
Vielen Dank
Wiz
- Anmelden oder Registrieren um Kommentare zu schreiben
Vorab
am 25.01.2010 - 13:45 Uhr
Ich kenne Node_comment nicht, aber hast du vorab mal per
print_r($node);
überprüft, ob deine gesuchten Daten vielleicht schon Teil von $node sind? Ist in anderen Fällen (etwa CCK) ja auch so.In jedem Fall müsstest du meines Wissens nicht extra eine Datenbankverbindung aufbauen, das müsste Drupal schon erledigt haben. Du kannst dann die Drupal-Syntax (Database abstraction layer) nutzen, um darauf zuzugreifen - siehe etwa http://michaelosmith.com/node/5
--
textformer mediendesign | Webkrauts
Ok, aber das was du jetzt
am 25.01.2010 - 15:26 Uhr
Ok, aber das was du jetzt geposted hast ist ja dafuer da das ich es in den content packe richtig? Also meinst du ich sollte ein neues field erstellen und dieses per tpl datei dort hinpacken wo ich es auf der seite haben will? Dies wuerde daber dazu fuehren das jedesmal wenn eine neuer "main node" angeleght wird jemand diesen code manuel einfuegen muesste. Gibt es keine moeglichkeit das ganze direkt in die tpl datei einzufugen?
Schon richtig
am 25.01.2010 - 15:40 Uhr
Du hast das schon an die richtige Stelle gepackt. Dafür ist die node-mode.php.tpl da. Ich habe nur in Frage gestellt, ob die Datenbankabfrage extra notwendig ist - und wenn, dann sollte sie anders aussehen.
Lass dir einfach mal in der node-mode.php.tpl die $node ausgeben, und schau nach, ob das Modul die Daten dort bereits hinterlegt hat; dann könntest du sie nämlich ohne erneute Datenbankabfrage ausgeben.
--
textformer mediendesign | Webkrauts
Ok bin leider im moment
am 25.01.2010 - 17:04 Uhr
Ok bin leider im moment unterwegs, werde es mir heute abend einmal angucken, glaube aber nicht das die anzahl der Ja angezeigt wird, da diese ja nur ein text feld sind welches als radio button dargestellt wird. In der datenabank sind dann diese felder mir ihren nodes "verbunden" welchen dann wiederum mit dem main node verbunden sind das heisst alle comments haben eine eigene nid welche dann wieder mit der main nid verbunden sind. Wenn es hilft koennte ich heute abend auch einen screenshot von der datenbank einstellen.
Eventuell hilft eine kleine beschreibung von node_comment:
Node Comment ist ein ersatz fuer das comment system, welches nodes als comments nutzt. D.h. das comment system ist deaktviert und jeder comment ist ein node welcher dan mit dem "main" node verbunden ist.
Vielen Dank auf jedenfall schonmal das du dich damit befasst.
So hier ist ein Screenshot
am 26.01.2010 - 10:40 Uhr
So hier ist ein Screenshot der Datenbank.
1) ist die id der Node auf der die Frage mit der antwort option ist.
2) ist die id der Node mit der diese Node verbunden ist
3) ist der eintrag der gezählt werden soll
Also alle ja in 3) die mit node z.B. verbunden sind sollen gezählt und dann auf der website ausgegeben werden. Die antwort währe bei node 14 also 2 und um dies als % auszugeben müsste diese Zahl dann durch die komplette anzahl von antworten die mit 14 asoziert getilt und dann *100 genommen werden.
Mh und das ist im moment wo ich hänge.
Voting API
am 26.01.2010 - 10:48 Uhr
Hi,
ich sehe hier große Probleme, da du wohl über keine API gehst. Meine Empfehlung wäre, das du nicht versuchst, das allein zu lösen, sondern auf der Grundlage der reichhaltigen API von und um Drupal. Voting API wäre bestimmt was für dich. Und "Ja/Nein" Module sollte es auch schon eine Menge geben. Vorteil ist, das du mehr Sicherheit hast, in der Planung und gegen Angriffe und du Module wie Views benutzen kannst, da VotingAPI zB eine Anbindung hat.
"Einfach so" etwas ins Template zu schreiben, ist zwar auch eine meiner lieblingsübungen, ist aber nicht wirklich zu empfehlen. Du tust damit Logik in die Theming Schicht. Die Logik könntest du zB. in eine Preprocess Function tun und damit ermöglichen, das dein Theme auch wirklich von Themern bearbeitet werden kann, da die kaum PHP vorfinden. Das geht dann auch in den Bereich API.
Schau doch nochmal in das Handbuch auf drupal.org. Es lohnt sich!
---
Viele Grüße,
Kars-T
| comm-press
Danke für deine Antwort,
am 26.01.2010 - 11:19 Uhr
Danke für deine Antwort, wie gesagt mein hauptproblem ist das ich nicht wirklich weiss wo php code bei drupal überhaupt hingehört, und wie so etwas anzugehen ist. Ich denke hier hast du mir zumindest schon mal einen schubs in die richtige Richtung gegeben. Das problem das ich bei den modulen immer sehe ist das sie eventuell nicht weiter geführt werden bzw das sie halt nicht in die nächsten version übernommen werden. Aber generell sollte man sich also ein modul suchen das praktisch das macht was man haben möchte, und dieses dann anpassen?!
So kurz mal ist das doch
am 26.01.2010 - 12:07 Uhr
So kurz mal ist das doch recht schwierig zu beantworten.
Schau mal hier: http://drupal.org/contributors-guide
Drupal besteht aus einem Kern und auf diesen setzen Module auf. "Never hack core" ist die Devise. Du kommst im allgemeinen an alles ran und brauchst nie die Basis zu verändern.
Du schreibst also Modul. Diese Module bieten Templates als Dateien oder Module. Die Moduel können auch sog. Hooks zur Verfügung stellen oder benutzen, über die du Daten manipulieren kannst oder ganze Funktions Teile. Das ist alles vom Prinzip her wie Objekt Orientiertes Programmieren.
Also so ganz allgemein kann man sagen: PHP kommt in Module. Du kannst von dort auch Variablen für die Templates manipulieren oder ergänzen. Die Themes sollten nur "spezielles" PHP und auch Syntax benutzen. Das steht aber auch alles auf d.o
---
Viele Grüße,
Kars-T
| comm-press
Nein sicher wird das schwer
am 26.01.2010 - 12:50 Uhr
Nein sicher wird das schwer zu erklären sein ^^. Das man "core" nicht hacked ist mir schon aufgefallen, allerdings hatte ich halt angenommen da es ja mein eigenenes tmepalte ist das ich mich dort auch mit php auslassen kann. Bin allerdings schnell darauf gestossen das dem wohl nicht so ist. Leider ist es schwer herauszufinden wie man es denn wirklich machen soll... Ich werde mir deinen oberen link mal in ruhe durchlesen, und hoffe dann etwas lich am ende es tunnels zu sehen im moment sitzt der frust relativ dicht, da ich mir halt über einem Monat mir mein gesammtes projekt ausgemahlt habe und jetzt natürlich etwas überfordert bin als nicht coder, aber ich bin nicht dafür bekannt aufzugeben :)
Vielen Dank auf jedenfall.
Die Lernkurve für Drupal
am 26.01.2010 - 12:55 Uhr
Die Lernkurve für Drupal ist anfangs wirklich Steil. Du könntest PHP auf in die template.php deines Themes schreiben. Aber was du da machen willst, sieht mehr nach einem Modul aus und in die template.php würde ich eher empfehlen themening Funktionen zu schreiben, als etwas komplexes.
Wenn ich mir deinen Source ansehe, dann solltest du dir auch die Datenbank Abstraktionsschicht nochmal anschauen.
http://api.drupal.org/api/group/database/6
---
Viele Grüße,
Kars-T
| comm-press
Ja wie gesagt im moment sehe
am 26.01.2010 - 13:15 Uhr
Ja wie gesagt im moment sehe ich nur das ich viel lesen muss ^^. Ich muss dazu sagen das bis vor 4 Monaten ich gerade mal etwas Joomla theme veränderungen gemacht habe und das wars, also ich habe keinen coder background und habe mir in den letzten monaten html, css angelesen und fange nun mit php/sql/javascript an, und um es nicht zu leicht zu machen schmeiss ich gleich noch drupal rein lol.
Denn joomla ist auf dauer nicht das was ich nutzen möchte, sondern drupal, und ich habe beschlossen das ich meine Seite erst online stelle wenn sie genau so ist wie ich sie haben will. Was wie du schon sagtest im momentan auf dem weg die lernkurve hinauf ist.