Försöker lösa en skoluppgift.. att göra en drupal site och göra lite egna plugins.. (jag brukar alltid försöka lösa kodning på det lättaste, snabbaste sättet. Så jag gjorde det jag kunde hämta ut från databastabellen där aggregator sparar mina twitter posts..
Men när jag gör det hör får jag bara ut nonsen data typ:
utdata:
J
Link to post'h
Link to post'
T
Link to post'h
Link to post'
<?php
$sql = "SELECT title, link FROM {aggregator_item}"; // Add more fields here or use * for all
$results = db_query($sql); // Run the query
while ($fields = db_fetch_array($results)) { // Get the next result as an associative array
echo "<pre>"; // Wrap each record in a pre tag for clarity
foreach($fields as $key => $value) {
// Iterate over all of the fields in this row
$test="$value[title]";
$test2="$value[link]";
echo $test . " <br/> " . "<a href =' ". $test2 . " class='twitterlinks' '> Link to post</a>'";
}
echo "</pre>";
}
?><?php
$sql = "SELECT title, link FROM {aggregator_item}"; // Add more fields here or use * for all
$results = db_query($sql); // Run the query
while ($fields = db_fetch_array($results)) { // Get the next result as an associative array
echo "<pre>"; // Wrap each record in a pre tag for clarity
foreach($fields as $key => $value) {
// Iterate over all of the fields in this row
echo $value/n; /<em>(som jag hittade på en tutorial funkade)</em>/
}
echo "</pre>";
}
?>När jag gör det senare får jag ut båda twitter tweeten och texten, men jag vill ju kunna formatera datan det är ju det som är problemet..
Och ja vet att det finns enklare/och snyggare lösningar kanske men poängen är ju att jag ska göra en egen lösning.. Så om ni berättar vad jag gör för fel så lär jag mig åtminstone vad jag gör för fel o lär mig lite på kuppen.. o ja jag har kollat på dokumentationen om layer of obscurity eller vad det nu hette.. jag skojja bara hette layer of abstracation..
För er som vill lösa det på det snygga riktiga sättet: Twitter feed kod snutt
PS. Modulen Panels sög ganska mkt.. Knepig css den skriver ut.. rörigt blir det..
Comments
$test="$value[title]"; $test2
$test="$value[title]";
$test2="$value[link]";
vet att de är överflödiga men jag har provat alla sätt att skriva det på men funkar ändå inte..
echo "$value['link']";ger ut ännu fler errors, då skrivs inget ut alls..
Även provat echo "$value[0]" . " " . $value[1]; ger också errors
Används Drupal i
Används Drupal i undervisningen eller är det ditt eget val? Vad läser du?
Kan inte se att foreach loopen behövs. Du får ut det du behöver från while loopen.
Här är ett exempel i Drupal coding standard, funktionen l() används för att bygga länken och theme_item_list för att bygga en lista för resultatet.
<?php$items = array();
$sql = "SELECT title, link FROM {aggregator_item}";
$results = db_query($sql);
while ($row = db_fetch_array($results)) {
$items[] = $row['title'] .' - '. l(t('Link to post'), $row['link'], array('attributes' => array('class' => 'twitterlinks')));
}
print theme('item_list', $items);
?>
Har du hittat till http://api.drupal.org/ ?
K ska prova - men verkar krångligt..
Varför behöver man ett speciellt sätt med att bygga länkar i Drupal kan man verkligen fråga sig?
l(t('Link to post') array('attributes' => array('class' => 'twitterlinks'))); ser inte någon direkt koppling med att ha en array direkt efter links som man stoppar in class namnet i, hade det inte varit med logiskt att ha i det i indatan innanför paranteserna i l() funktionen? Har det kanske med db_fetch_array att göra? Det är kanske är rätt att skriva så i den funktionen? Onödigt krångligt vad är det för fel på det vanliga php sättet? Men en array utan namn hur vet den vart dens data ska? Kanske db_fetch_array letar efter sån data?
Men jag ska följa anvisningarna.. Frågan är bara om jag kan säga att jag kommit med koden bara för att jag googlat ihop lite olika kodsnuttar!? (det viktigaste är väl kanske att jag kan förklara koden iofs..) Haha, men l() skapar länkar lalala.. läraren behöver inte veta att jag inte fattar varför..
Lite diskussion:
Kan tyckas att man inte borde spärra annan php funktionalitet, bara för att det ska finnas annan funktionalitet i Drupal (the drupal way).. (t.ex. det att man kan ha flera databas uppkopplingar är bra och att man därför har annat sätt att göra databas hämtning dvs db_query(); istället för mysql_query();. Men det är dåligt ur synvinkeln användarvänlighet. Kan tycka om man skulle satsa på enkelheten först så skulle man få fler användare.. Så skulle man eventuellt kunna slå på en "flera databas uppkopplingar samtidigt funktionalitet", om man behöver en sån lite mer avancerad funktion i ngn setting.php fil (eller i det grafiska admin gränssnittet till och med). Jag menar kan inte vara fler än 4% som behöver en sån funktionalitet, finns en risk med opensource projekt att det sitter för många programmera i klubben som inte fattar poängen med att inte ha för häftiga/avancerade funktioner som ingen förstår sig på och använda, för att det inte ger inget mervärde till projektet om folk inte kan använda det sen.. Linux är ett exempel på det också men de blir iaf bättre och bättre på det!
Hur gör man i andra situationer om man vill göra fler olika hämtningar från olika databaser det borde väl gå att ha flera mysql_connect()? och om inte det går hur gör man då, kanske har flera olika php filer med separata databaskopplingar och att man har en header på slutet som skickar i väg en med de olika resultaten till en slut sida..?
PS. oj ser att en del enkel fnuttar hade flyttat in i min kod, tur att det inte var det som var felet utan annat då hade jag blivigt galen på mig själv..
Iofs så har nog mycket kanske
Iofs så har nog mycket kanske med kontroll o säkerhet att göra.. att man inte kan göra vad som helst i drupal..
PS. Svaret om jag valt drupal sj. Så är svaret ja och nej.. vi ska använda valfri CMS system för att göra en fansida som vi gör lite kopplingar till facebook, twitter, flikr osv på.. Men drupal verkar förhållandevist enkelt o välkänt sen har vi redan haft en kurs i det så tänkte att det kunde va rätt system.. Wordpress har jag iofs också jobbat med men tänkte att det var bra att bredda sig lite (sen tycker jag det verkar krångligt att hämta ur data från mer än ett ställe i Wordpress också faktiskt, därför valde jag drupal som verkar mer gjort för det).. Jag är mest frontend programmerare, men det är ju bra att kunna vara lite bredda sig lite och titta under huven åtminstonne litegranna..Haha, men egentligen finns det inget som heter frontend programmerare det är bara ett finare ord för nybörjare.. haha.. eller inkompetent programmerare kanske man också kan va, alternativt programmerare med andra intressen än datorer o joltcola haha.. Jag är nog lite av varje.. det handlar ju om intresse och fokus.. web kan va kul, men det riktigt avancerade lämnar jag till andra.. :)
F.ö. pluggar interaktiondesign på Nackademin.. (egentligen borde kursen dock heta webdesign, för vi kodar nämligen mer än vad vi håller på med interaktiondesign..)
Kul att skolorna börjar
Kul att skolorna börjar uppmärksamma Drupal. Hoppas du med tiden gillar vad du ser.
Drupal växer idag så snabbt att bristen på kompetenta Drupal utvecklare, temabyggare etc, är ett betydande problem. När man börjar prata Drupal i skolorna kan man hoppas på en ökad nytillströmning.
P.S. Är det bara Twitter du vill visa så kan Views modulen i version 3 ansluta till Twitter direkt.
Poängen med att använda en
Poängen med att använda en funktion för att bygga länkar är att den:
Läs mer på http://api.drupal.org/api/function/l/6
Att drupal har ett databas-lager, db_query() m m., istället för att hårdkoda mot t. ex. MySQL är nog avgörande för att systemet ska få bred användning. I Drupal 7 används PHP PDO för att prata med databaser så systemet blir än mer flexibelt.
För att prata med flera databaser anger man dem bara i settings.php genom att göra $db_url till en array.
$db_url['default'] = 'mysqli://user:pass@localhost/database';
$db_url['example'] = 'mysqli://user:pass@localhost/database2';
Sedan använder man db_set_active() för att växla mellan dem.
Läs mer på http://api.drupal.org/api/function/db_set_active/6
Det går alldeles utmärkt att
Det går alldeles utmärkt att ha flera mysql connections.
db_query/mysql_query. Den är ju inte bunden mot bara mysql (postgres, mssql)
Arrayer i arrayer, det är en av grundstenarna i drupals hela upplägg. formulär apit, renderingar, argument, settings.
Syftet är att hålla så pass mycket information som möjligt strukturerad, så länge som möjligt.
Just vad gäller argument, så kan man ju se det som att man får en del saker som php normalt inte stödjer:
Valfria parameters i vilken ordning som helst, inte bara vänster -> höger, och namn på parametrarna.
Du kan skriva ut länkar och grejer hur som helst, det är inte det som är felet. Varför man använder l() eller åtminståne url()
är för att systemet och andra moduler ska kunna påverka vart länkarna pekar.
Exempelvis så fungerar siten utan problem i en subfolder, i webroot, utan htaccess (alla länkar blir då ?q=user osv)
Länkar till node/1 kan istället bli nyhet/drupal-installerat
Felet med koden du postade är att du har blandat ihop fnuttarna
Håller inte med riktigt att
Håller inte med riktigt att man kan skriva ut saker hur som helst i Drupal... :(
En viktig (viktigaste?) anledningen till att använda Drupals funktioner och sätt att skriva ut saker på är att tvätta data som man skriver ut så att man inte råkar ut för cross-skripting eller andra säkerhetsproblem som gör att sajten kan hackas eller sprida otrevligheter.
Titta efter i säkerhetsbulletinerna så syns det tydligt att många av dessa beror på att folk missat att tvätta utdata.
/Thomas
Men dessa länkar pekar
Men dessa länkar pekar utanför drupal systemet till twitter så det bör nog inte va några problem i så fall, ska kika om det var fel med fnuttarn, kan lätt bli så en sen kväll..
Jupps, php och fnuttar.
Jupps, php och fnuttar. :)
tips: installera devel modulen, och testa dsm();
typ
while ($fields = db_fetch_array($results)) { // Get the next result as an associative arraydsm($fields);
Tror det var den extra
Tror det var den extra foreach loopen som ställde till det.. men grejen var väl att jag provat utan den och att det inte funkade då.. Men då gjorde väl jag något annat fel istället.. Nu funkar det iaf med och utan l() prylen och det andra joxet.. TACKAR!
Man ska heller inte glömma
Man ska heller inte glömma att man vinner en massa säkerhetsfördelar när man använder Drupals API. db_query filtrerar t ex bort sådant som kan öppna upp för SQL-injektioner. Genom att använda Drupals API och Forms API slipper du oroa dig över XSS, SQL-injektioner och CSRF.
Jakob Persson – Leancept – Results-only digital and marketing consultants – Personal blog