Hej!
Jag har lite funderingar vad gäller implementeringen av en "infoga-bild-funktion" i mitt artikelgränssnitt.
Användare kan på ett enkelt sätt kunna skriva artiklar. Nu har jag kommit så långt att det är dags att göra infoga-bild-fuinktionen så att man enkelt kan lägga in en bild på valfritt ställe i texten.
Mitt tankesätt är som följer. Varje användare har en profil. Kopplat till den profilen finns en avdelning som heter "Mina bilder". Hit skall användaren kunna ladda upp sina bilder. När användaren senare skriver en artikel är det enbart dessa som användaren skall kunna använda och infoga i en artikel.
Vet inte vad som är bästa lösningen för att få detta att fungera. En tanke jag har är att det vid sidan om artikelformuläret finns en länk med "infoga bild". När användaren trycker på den så kommer det upp ett pop-up-fönster med samtliga bilder som finns i "Mina bilder". Sedan skall användaren kunna välja en bild varpå fönstret stängs och bildID för vald bild klistras in i artikelformulärets textarea-del på följande sätt:
[IMG]3[/IMG]
Som jag har kodat nu läser jag av den taggen med ett pregmatch uttryck som hämtar ut sökväg, bildtext mm från databasen och skickar tillbaka resultatet till artikelutskriften.
Om det är någon som gar gjort något liknande tidigare eller har någon annan smart lösning än den jag presenterade vore det kul att få ta del av den :)
Inser att denna tråd förmodligen är ämnad för Javascript/DHTML-forumet och inte PHP. Går det att få den flyttad dit?!
Visst går det, men det snabbaste sättet är att rapportera inlägget.
Flyttad från PHP..
Peter SMedlem sedan dec. 20025 483 inlägg Popupfönstret:
<script type="text/javascript">
function f(id){
if (window.opener){
var e = window.opener.document.forms["namn_på_formulär"].elements["namn_på_textarea"];
e.value += "[IMG]" + id + "[/IMG]";
window.close();
}
}
</script>
<img src="bild1.png" onclick="f('bild-id_1')">
<img src="bild1.png" onclick="f('bild-id_2')">
<img src="bild1.png" onclick="f('bild-id_3')">
Peter S skrev:
Popupfönstret:
<script type="text/javascript">
function f(id){
if (window.opener){
var e = window.opener.document.forms["namn_på_formulär"].elements["namn_på_textarea"];
e.value += "[IMG]" + id + "[/IMG]";
window.close();
}
}
</script>
<img src="bild1.png" onclick="f('bild-id_1')">
<img src="bild1.png" onclick="f('bild-id_2')">
<img src="bild1.png" onclick="f('bild-id_3')">
Jag blev bönhörd - Precis vad jag sökte :) Tack Peter!
Om jag förstår det hela rätt så är detta koden jag har i mitt pop-up-fönster. Koden känner alltså av formulär även om det inte förekommer i det aktiva fönstret?
Vet inte om jag är seg i huvudet ikväll men jag får inte ovanstående kod att fungera när jag ska till att klicka på en av bilderna i pop-up-rutan. Det dyker inte upp någoit tecken i mitt underliggande formulär. Jag har dubbelkollat namnet på formuläret samt för textarean och det stämmer :OO
Nu fick jag det att fungera så att img-taggen åker in i formuläret. Däremot vill inte popuen öppnas när jag trycker på den så som du skrev i ditt exempel.
Peter SMedlem sedan dec. 20025 483 inlägg Om du döper om de två senast bifogade filerna till *.html och testkör exemplet, fungerar det då inte menar du?
Jag hade en popup-kod tidigare fast den var mycket krångligare än den du hade så jag valde att använda din. Nu får jag inte popupfönstret att öppnas när jag väljer länken infoga bild.
Peter SMedlem sedan dec. 20025 483 inlägg Får du något felmeddelande? Om inte får du posta koden.
Kod ur writearticle.php:
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Text:</td>
<td width="52%"><textarea class="textarea" cols="50" rows="10" name="article"><?php if($_POST['article'] <> '') { echo stripslashes(htmlentities($_POST['article'])); } ?></textarea></td>
<td style="padding-left: 5px; font-weight: bold; vertical-align: top;"><a href="javascript:void(window.open('articlepictures.php','','height=800,width=750'))">Popup</a></td>
</tr>
Kod ur articlepictures.php:
<td>
<?php while($picture = mysql_fetch_array($RSobj)) { ?>
<img src="<? echo $picture['path'].$picture['filename']; ?>" onclick="f('1')"><br />
<?php } ?>
</td>
Peter SMedlem sedan dec. 20025 483 inlägg Är det möjligt för dig att bifoga HTML-koden i writearticle.php för en annan att testa?
Visst! :)
<div id="content">
<script language="JavaScript" src="../inc/function.js"></script>
<?php
if(trim($_POST['createarticle']) == 'Skapa artikeln') {
$threaddata['articlesubject'] = stripslashes(htmlentities(trim($_POST['articlesubject'])));
$threaddata['article'] = stripslashes(htmlentities(trim($_POST['article'])));
$threaddata['posterID'] = $_SESSION["uid"];
$threaddata['ip'] = getenv("REMOTE_ADDR");
# Uppdaterar användarprofilen i databasen ############################
$sqlInsert = "INSERT INTO tblarticle (date_time, headline, content, published, memberID) VALUES (now(), '$threaddata[articlesubject]', '$threaddata[article]', 1, '$threaddata[posterID]')";
$RSobj = mysql_query($sqlInsert) or die (mysql_error());
echo "<script Language='JavaScript'>location.href=('myprofile.php');</script>";
}
?>
<?php
# Lagrar information om användarens aktivitet. Skrivs till tblOnline för presentation i online.php. ##########################################
$activity = "Skriver artikel.";
$sqlUpdate = "UPDATE tblonline SET date_time = now(), forumID = 'NULL', activity = '".$activity."' WHERE sessionID = '".session_id()."'";
mysql_query($sqlUpdate) or die (mysql_error());
?>
<div id="content_two_columns">
<h1 class="dotted_line">Skriv artikel</h1>
<?php if($_POST['previewarticle'] == 'Förhandsgranskning') { ?>
<table width="100%" cellspacing="0px" cellpadding="0px" style="background-color: #888; border-top: 1px solid #888; border-right: 1px solid #888; border-left: 1px solid #888;">
<tr style="background-image: url(/picture/page_bar.jpg); color: #000;">
<td width="100%" height="23px" style="padding-left: 5px; text-align: left;"><span style="font-size: 10px; font-weight: bold;">Förhandsgranskning av artikel</span></td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="100%" style="padding: 5px 0 3px 5px; font-weight: bold; font-size: 10px;"><?php echo stripslashes(htmlentities($_POST['articlesubject'])); ?></td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="100%" style="padding-left: 5px; vertical-align: top;"><?php echo stripslashes(htmlentities(nl2br($_POST['article']))); ?></td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="100%" style="padding-left: 5px; font-weight: bold;"> </td>
</tr>
</table>
<?php } ?>
<form action="myprofile_writearticle.php" method="post" name="writearticle" onSubmit="return validateNewThread(this)">
<table width="100%" cellspacing="0px" cellpadding="0px" style="background-color: #888; border: 1px solid #888;" border="0px">
<tr style="background-image: url(/picture/page_bar.jpg); background-color: #0E3171; color: #000;">
<td colspan="4" width="100%" height="23px" style="padding-left: 5px; text-align: left; border-bottom: 0px solid #888;"><span style="font-size: 10px; font-weight: bold;">Skriv artikel</span></td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"> </td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Rubrik:</td>
<td colspan="3" width="85%"><input class="text" type="text" value="<?php if($_POST['articlesubject'] <> '') { echo stripslashes(htmlentities($_POST['articlesubject'])); } ?>" name="articlesubject" size="30" maxlength="255"> Relaterat till artikeln</td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"> </td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"> </td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Text:</td>
<td width="52%"><textarea class="textarea" cols="50" rows="10" name="article"><?php if($_POST['article'] <> '') { echo stripslashes(htmlentities($_POST['article'])); } ?></textarea></td>
<td style="padding-left: 5px; font-weight: bold; vertical-align: top;"><a href="javascript:void(window.open('articlepictures.php','','height=800,width=750'))">Popup</a></td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"> </td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"><input class="buttons" name="createarticle" type="submit" value="Skapa artikeln" /> <input class="buttons" name="previewarticle" type="submit" value="Förhandsgranskning" /></td>
</tr>
<tr style="background-color: #F1EEE9;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"> </td>
</tr>
</table>
</form>
</div>
</div>
Peter SMedlem sedan dec. 20025 483 inlägg Den koden fungerar utmärkt för mig. Fönstret poppar upp som på beställning! :)
Kan det ha att göra med att jag kör Firefox?! :OO
Det fungerade inte i IE heller nu när jag prövade :(
Då är det väl SBS som vanligt :e
Det är inte så att jag har en funktion någonstans som ev. blockerar alla popups? hmmm...