Avatar billede lademan Novice
22. januar 2003 - 16:23 Der er 22 kommentarer og
2 løsninger

Hvordan gør i?

Hej

Jeg vil lige høre, hvordan i gør mht billeder i artikelsystemer. Jeg har i forvejen lavet et system, men jeg synes det er svært at gøre det supersmart!

- hvordan navngiver i billederne?
- hvordan relateres billederne til artiklen, så de "hænger sammen"?
- hvordan skriver i en artikel med x antal billeder - og samtidig sikrer jer kontinuitet i alle artiklerne?
- bruger i uploadsystemer og hvordan?
- hvordan redigerer/ sletter i billeder?

Jeg har i det hele taget lyst til at vide, hvordan laver man det smarteste system, der gør det let for skribenten at lave artiklerne og stabilitet og ensartethed for webmasteren?
Avatar billede lademan Novice
22. januar 2003 - 16:27 #1
.
Avatar billede Slettet bruger
22. januar 2003 - 18:22 #2
Hvis du gemmer dine billeder på disken og de øvrige informationer i databasen så:

1) Lad os sige alle dine billeder ligger i /uploaded_media/. Så giver du den uploadede fil et af PHP valgt tilfældigt navn ala media_fDeeXdd34.jpg (typen på filen .jpg, .gif whatever får du fra mimetypen eller filnavnet på den orignalt uploade fil). Du skal så checke, at der ikke eksisterer en fil med det genererede tilfældige navn inden du gemmer til mappen, hvis der gør, generer du et nyt tilfældigt navn osv.

2) Går udfra at du i databasen har information omkring dine artikler, og at hver artikel har en nøgle (et unikt id eksempelvis). Endvidere skal du have en tabel i basen der indeholder information om dine forskellige billeder, der ligger i /uploaded_media/. Her kan der stå filstørrelse, width, height, og så skal der naturligvis stå navnet på billedet også (media_fDeeXdd34.jpg).
Dvs. en tabel 'artikel' og en tabel 'billede'. For at kæde de 2 sammen opretter du en 3. tabel 'artikel_billede'. Dette er en link tabel, der består af nøglen fra 'artikel' og nøglen fra 'billede'. Eg. (3, 4) = artikel 3 bruger billede 4. (5, 7) = artikel 5 bruger billede 7. (400, 7) = artikel 400 bruger billede 7. osv.

3) Billederne skal uploades fra et modul, du har lavet i PHP. Dette sørger for at genere de nye filnavne, indsætte information i 'billede' databasen osv.

4) Når du sletter et billede (som du også skal gøre via et modul, du har lavet i PHP), sletter du billedet fra 'billede' tabellen, og du sletter filen fra selve disken (filnavnet står jo i databasen), og så skal du huske at slette fra 'artikel_billede' - dvs. slette links der anvender billedet.

Håber du kan følge mig.
Avatar billede lademan Novice
22. januar 2003 - 18:48 #3
Okay, dvs du anvender 3 tabeller til formålet.
Er det normal kotume at bruge 3 tabeller til dette?
Behøves man en tabel om billedoplsyninger?
Avatar billede fangel Nybegynder
22. januar 2003 - 18:51 #4
hvis du har GDLib, kan du få GDLib til at sige: billedstørrelse (højde og brede), og uden GDLib kan du få filstørrelse, så det behøves du rent faktisk ik'....

jeg ville generere et navn efter hvilket ID artiklen havde i DB'en...

fx, hvis artiklen havde IDnr 47, så hedder billederne

artikel_47_1.jpg
artikel_47_2.gif

OSV... for så kan du se hvor billederne "hører hjemme", uden at skulle tjekke i DBen...

Morten
Avatar billede Slettet bruger
22. januar 2003 - 18:54 #5
lademan: Det tror jeg er helt normalt ja. Tabellen 'billede' indeholder alle de meta-oplysninger, der knytter sig til billede. Beskrivelse, dato for upload, type, filnavn og hvad du ellers kan finde på.

dea_pg: Det lyder som en rigtig dårlig idé. Og hvad nu, når et billede er tilknyttet flere artikler? Og mht. til det med billedestørrelsen. Der er jo ingen grund til at bestemme det hver gang, du skal bruge billedet, det kan du gøre én eneste gang, og det er når du uploader dette.
Avatar billede fangel Nybegynder
22. januar 2003 - 19:00 #6
mercur8 => han spurgte om man SKULLE have det med, man SKAL ikke... ;)
Avatar billede lademan Novice
22. januar 2003 - 19:32 #7
Men hvordan redigerer i artiklen?
Hvordan indsætter i billedet i artiklen - via en form (fx eet billede = een artikel) eller sætter i dem ind som i har lyst?
Avatar billede lademan Novice
22. januar 2003 - 19:44 #8
Bruger i formstruktur til jeres artikler?

Ex: Artikel:

textarea: tekst
input: billede
textarea: tekst
input: billede
textarea: tekst
input: billede
etc ..

Eller hvordan sikrer i at artiklerne bliver nogenlunde ens?
Avatar billede lademan Novice
22. januar 2003 - 19:52 #9
Hvorn gør I?
Avatar billede lademan Novice
22. januar 2003 - 20:01 #10
tsk tsk
Avatar billede Slettet bruger
22. januar 2003 - 20:06 #11
Man definerer typisk nogle templates, man læser indholdet ud i. Når du så opretter en artikel, vælger du template. Det er ihvertfald én måde at gøre det på.

Så har du bare i forb. med artikelopret en side, der hedder tilknyt billede. Her kan man uploade (eller vælge mellem uploade filer), der skal tilnyttes ens artikel.

Alt afhængig af hvilken template, man har valgt, placeres billederne herefter (når du læser indholdet ud) på siden.

Andre løsninger bruger en WYSIWYG editor, så man kan placere billederne frit i teksten.
Avatar billede lademan Novice
22. januar 2003 - 20:06 #12
hulla balu - er der nogen hjemme :)
Avatar billede lademan Novice
22. januar 2003 - 20:07 #13
ok
Avatar billede lademan Novice
22. januar 2003 - 20:15 #14
Dvs du på forhånd vælger hvor mange billeder du vil anvende i artiklen?!
Avatar billede Slettet bruger
22. januar 2003 - 20:22 #15
Nej. Med template mener jeg bare, hvordan tekst og billeder skal placeres i forhold til hinanden.

Du tilknytter det antal billeder, du har lyst til.
Avatar billede swaxi Nybegynder
22. januar 2003 - 20:52 #16
du kunne også lave et markup for indsæt billede. eg. :

<textarea>
blah blah blah ... dette er teksten i en artikel, og her kommer der lige et billede :
[fDeeXdd34]
og nu skriver jeg så videre nedenunder billedet.
</textarea>

med lidt smart javascript kunne du have en liste ved siden af textarea'et hvor du lister de billeder, der er indsat i textarea'et, og evt tillade at man ændrer properties som ombrydning etc.

jeg har selv engang lavet noget i den stil - imho er det smartere end WYSIWYG, fordi det tvinger folk til at være en smule mere strukturerede på den måde. og det uden at det ligger helt så mange begrænsninger på som med en template.
Avatar billede lademan Novice
22. januar 2003 - 21:05 #17
Okay! Det lyser spændende. Kan du ikke eventuelt uddybe lidt, eller smide en kode i tråden?
Avatar billede lademan Novice
22. januar 2003 - 21:05 #18
lyder
Avatar billede swaxi Nybegynder
22. januar 2003 - 23:51 #19
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>no title</title>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
    <meta http-equiv="imagetoolbar" content="false" />
    <base target="_blank" />
<script>
// array med tilgængelige billeder og tilhørende metainfo
var available_images_id = Array(4988,3445,007);
// skal self. populeres dynamisk med php
var available_images_meta = Array();
available_images_meta[4988] = Array('en hvid hund','hund.gif');
available_images_meta[3445] = Array('et får med briller','får.gif');
available_images_meta[7] = Array('portræt af min mor','minmor.jpg');


function storeCaret (textEl)
{
    if (textEl.createTextRange)
        textEl.caretPos = document.selection.createRange().duplicate();
}

function insertAtCaret (textEl, text)
{
    if (textEl.createTextRange && textEl.caretPos) {
        var caretPos = textEl.caretPos;
        caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
    } else
        textEl.value  = text;
}

function str_split(str,allow)
{
    var matches = Array();
    var currentString = null;
    var i = 0;
    while (i < str.length) {
        var ch = str.charAt(i);
        if (ch == '[') {
            currentString = "";
        } else if (ch == ']') {
            if (currentString != null) {
                matches[matches.length] = currentString;
                currentString = null;
            }
        } else if (allow.indexOf(ch) > -1) {
            if (currentString != null) {
                currentString = currentString + str.charAt(i);
            }
        } else {
                currentString = null;
        }
        i++;
    }
    return matches;
}

function refresh_used()
{
    var txt = document.getElementById('thetext').value;
    var opt_used = document.getElementById('theimages');
    while (opt_used.options.length > 0)
        opt_used.options[opt_used.options.length-1] = null;

    var splitString = str_split(txt,"1234567890");

    for (i=0;i<splitString.length;i++)
        opt_used.options[opt_used.options.length] = new Option(splitString[i],splitString[i]);;
}

function insert_from_avail()
{
    var ar_txt = document.getElementById('thetext');
    var opt_avail = document.getElementById('availimages');
    var str = "["+opt_avail.options[opt_avail.selectedIndex].value+"]";
    insertAtCaret(ar_txt, str);
    refresh_used();
}
function refresh_avail_meta()
{
    var opt_avail = document.getElementById('availimages');
    var avail_meta = document.getElementById('availimages_meta');
    avail_meta.innerHTML = available_images_meta[opt_avail.options[opt_avail.selectedIndex].value][1];
}

function init()
{
    var opt_avail = document.getElementById('availimages');
    while (opt_avail.options.length > 0)
        opt_avail.options[opt_avail.options.length-1] = null;
    for (i=0;i<available_images_id.length;i++)
        opt_avail.options[opt_avail.options.length] = new Option(available_images_meta[available_images_id[i]][0],available_images_id[i]);;
}
</script>
</head>
<body onload="init()">
<table>
<tr><td valign="top">
    <b>available images</b><br>
    <select id="availimages" size="5" style="width:150px;" onchange="refresh_avail_meta()">
    </select>
    <br>
    <div id="availimages_meta">...</div>
    <br>
    <button onclick="insert_from_avail()">insert</button>
</td><td valign="top">
    <b>article</b><br>
    <textarea id="thetext" cols="80" rows="10" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);refresh_used();" onchange="refresh_used();"></textarea>
</td><td valign="top">
    <b>used images</b><br>
    <select id="theimages" size="5" style="width:150px;">
    </select>
</td></tr></table>
</body>
</html>
Avatar billede swaxi Nybegynder
22. januar 2003 - 23:54 #20
såddan noget i den stil. og jeg har svært ved at forestille mig at det skulle virke i andet end IE5.5+ men det gør vel ikke det store
Avatar billede alrua Nybegynder
23. januar 2003 - 16:32 #21
jeg så et lignende system på et tidspunkt. Der havde de gjort det at man til hver artikel kan tilføje forskellige afsnit hvor man så kan vælge om man vil have et billede tilknyttet. Man kan så vælge om billedet skal stå til højre eller venstre for teksten.

Dvs at en artikel kan bestå af så mange afsnit som det er nødvendigt med tilknyttede billeder. Gav det mening? :)

-Alrua
Avatar billede swaxi Nybegynder
23. januar 2003 - 17:52 #22
alrua : det lyder lidt henad et template-system, men lidt mere fleksibelt. hvordan tager det sig ud, rent brugergrænseflade-mæssigt ?
imho er et problem ved templates nemlig at brugerne (som jo pr. definition er dumme) tvinges til at tænke ret abstrakt.
Avatar billede alrua Nybegynder
23. januar 2003 - 17:58 #23
Jeg tror nok at det var predefinerede sider, men det er vel underordnet...
Fidusen var at man oprettede et afsnit og skrev noget tekst. Så kunne man indsætte et billede i den ene side samtidig. Det blev så sat ind med tables eller sådan noget.
Så kan man oprette lange afsnit uden tekst og mindre med, lige så mange afsnit man vil...

Brugerfladen var skam fin nok, tror nok det var en side til et ældrecenter :)
Avatar billede stringbuffer Nybegynder
06. marts 2003 - 18:22 #24
Jeg har moret mig lidt med at lave et chat-community, hvor man kan have brugerprofiler osv...

Jeg lavede alle sider som HTML-skabeloner, så PHP filerne tager sig kun af at hente data fra DB osv. og sætte dem ind i skabelonerne. På den måde er det meget nemt at lave et godt design, da man kan bruge hvilket som helst HTML-designværktøj til det.

Se evt. www.zhat.dk/template/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester