Brauche Hilfe bei JavaScript :(

Ich glaube, yerushas Variante ist von Hand gemacht (wegen dem HTML in der URL - freenet biete ja AFAIK kein PHP an), aber wie ich in Deinem Thread in Lose4Scripts gelesen habe, hast Du ja schon den Thread mit den Scripten von Veers und mir gefunden. Die sind dynamisch.
 
hier mal der code

PHP:
<script language=javascript>
function Smilie(smilie) { document.getElementsByName("feld_a")[0].value = "[IMG]"+smilie+"[/IMG]"; document.getElementsByName("feld_b")[0].value = "<img src=\""+smilie+"\" border=0>"; scrollTo(0, 1000000000); return true; }</script>
</script>
<meta content="MSHTML 6.00.2900.2963" name=generator></head>
<body text=#000066 bgcolor=#b0c4de>
<div align=center><font face="Comic Sans MS"><br>Schilder 2<br><br></font>
<table><tr>
<?php
$verz=opendir ("./$dir/");
while($data = readdir($verz)){
if($data != "" and $data != "." and $data != ".." and $data != "Thumbs.db" and $data != "thumbs.db"){
    $bilder[] = $data;
}
}
for($i=0; $i<count($bilder); $i++){
echo '<td><img onclick=smilie(this.src); src="'.$dir.'/'.$bilder[$i].'" border="0"></td>';
$a = $i+1;
if($a%5==0){ echo '</tr><tr>'; }
}
?>
<td colspan="5">
<form name=form>Foren-Code: <input onmouseover=this.focus()
style="FONT-WEIGHT: bold; TEXT-ALIGN: center" onfocus=this.select() size=80
value="Smilie-Code - Klick auf einen Smilie und kopiere hier den Code heraus."
name=feld_a><br><br>HTML-Code: <input onmouseover=this.focus()
style="FONT-WEIGHT: bold; TEXT-ALIGN: center" onfocus=this.select() size=80
value="Smilie-Code - Klick auf einen Smilie und kopiere hier den Code heraus."
name=feld_b> </form></td></tr></table>
 
Ich weiss grad nicht mehr, wo der Thread dazu ist (ob hier oder im Crashforum), deshalb bin ich grad zu faul zum Suchen, aber ich glaube, meins hat alle Smilies aus dem aktuellen Verzeichnis ausgelesen und angezeigt.

Zu Deinem Problem:

Die JS-Funktion heisst Smilie(), du rufst aber smilie auf. Das macht in JavaScript einen grossen Unterschied.

Änder Zeile 16 mal in diese:
PHP:
echo '<td><img onclick="Smilie(this.src);" src="'.$dir.'/'.$bilder[$i].'" border="0"></td>';

[edit]

BTW: Das hier ist die Version von mir, die noch auf der Platte rumliegt. Vielleicht hilft die Dir ja auch noch irgendwie weiter:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
 <title>Smilies</title>
 <script type="text/javascript">
 function displayCode(element) {
   document.getElementById('url').value = element.src;
   document.getElementById('vbcode').value = "[img]"+element.src+"[/img]";
 }
 </script>
 <style type="text/css">
   body { margin: 0px; }
   table { border-collapse: collapse; margin: 5px;}
   td { padding: 10px; border: 1px solid #CCC; text-align: center; }
   td:hover { background-color: #FFC; cursor: pointer; }
   form { background-color: #CCC; padding: 5px; border-bottom: 1px dashed black; margin-bottom: 0px;}
   input { width: 300px; border: 1px solid black; padding: 1px; margin: 1px;}
   label { display: block; float: left;  width: 80px; }
 </style>
</head>
<body>
<form action="#">
 <label for="url">URL:</label>
 <input type="text" id="url"/><br/>
 <label for="vbcode">VB-Code:</label>
 <input type="text" id="vbcode"/><br/>
</form>
<table cellspacing="0" cellpadding="0">
<?php
  define('MAXPERROW', 10); // Wieviele Einträge pro Zeile
  function displaySmilie($filename) {
    echo '<td onclick="displayCode(this.firstChild);"><img src="'.$filename.'" alt="'.$filename.'"/></td>'."\n";
  }
  $smilies = glob('*.{gif,jpg,jpeg,png}', GLOB_BRACE);
  $rows = floor(count($smilies)/MAXPERROW);
  for ($j=$idx=0; $j<$rows; $j++) {
    echo '<tr>'."\n";
	for ($i=0; $i<MAXPERROW; $i++)
      displaySmilie( $smilies[$idx++] );
    echo '</tr>'."\n";
  }  
  if (($remainder = count($smilies)-$rows*MAXPERROW)>0) {
    echo '<tr>'."\n";
	for ($i=0; $i<$remainder; $i++)
      displaySmilie( $smilies[$idx++] );
	echo '<td colspan="'.(MAXPERROW-$i).'"> </td>'."\n";
    echo '</tr>'."\n";
  }
?>
</table>
</body></html>
Kann gut sein, dass das CSS noch auf den IE angepasst werden muss, aber ich glaub, damals ging's irgendwie primär darum, das Ganze auf ~50 Zeilen zu bringen, wenn mich nicht alles täuscht. ;)
 
ja, das mit dem Smilie habe ich gerade auch gefunden *g*

ich bin halt so, dass ich immer die ganzen html-tags in klein schreiben lasse, das prog konvertiert aber gleich alles um :ugly:

nun klappt das auch mit der anzeige in der tabelle

aktuell suche ich dann noch eine möglichkeit, um zu sagen, dass nach zb 10 reihen a 5 smilies ein link kommt >weiter<, und auf der folgeseite dann quasi ab smilie 51 weiter angezeigt wird ...

mit meiner version kann ich aktuell aber nur alles auf eine seite setzen (oder müsste manuell einfach begrenzen und nicht mehr als 50 ´smilies pro verzeichnis hochladen)
 
Naja, das müsste eigentlich recht simpel sein.

Du liest ja schon alle Bilder in ein Array ein. Dann musst Du bei der Anzeige das Limit einbauen. Etwa so:
PHP:
for($i=$limit; $i<count($bilder) and $i<$limit+MAXPERPAGE; $i++){
MAXPERPAGE muss dann noch als Konstante definiert werden:
PHP:
define('MAXPERPAGE', 50);
Aber sag doch mal ganz genau, was das Skript können soll. Hab grad ein bisschen Langeweile und wenn ich mir Deinen Code so anschaue, könntest Du ein wenig Hilfe wohl brauchen. ;)
 
naja

es soll halt wie die smilieseiten sein, nur nicht so kommerziell, weil ich eben wissen will, was da drin ist und auch im notfall noch was ändern können

sollte quasi sein, wenn ich mal fertig bin:

- kleiner adminbereich mit upload und sortierfunktion (quasi aus dem ordner neu per klick in ordner X verschieben)
- upload durch user
- anzeige nach rubriken
- anzeige von X pro zeile, max Y zeilen pro seite
- ausgelesen wird per verzeichnis (also nicht direkt als array oder doch?!)

wie gesagt, ich mache das aktuell als funprojekt und versuch es eben stück für stück aufzubauen, erstmal einfach den anzeigebereich, dann irgendwann den upload für user, dann mal, wenn ich viel zeit habe, den adminbereich

mache das meistens ja so, dass ich mir hier denkanstöße geben lasse, und setze diese dann um, siehe meine kleinigkeiten, die ich durch das proggerforum hier schon alles an game-fire.de geändert habe

wie gesagt, aktuell will ich schritt 1 erstemal machen, die anzeige

will das ganze dann danach mit menü versehen, a la

href=anzeige.php?dir=xxxx
dann wird in der anzeige.php, wie jetzt oben, eben das directory ausgelesen und ausgegeben ...
das ganze danach noch per mod_rewrite verschönern, a la...

schilder_1.php , was dann auf anzeigen.php?dir=schilder&seite=1 gehen würde, aber das ist das kleinste prob, mod_rewrite kann ich mittlerweile
 
Ok, dann kümmern wir uns erstmal um die Anzeige.

Zum Aufbau der Tabelle würde ich Dir empfehlen, Dir den Code aus meinem Edit in einem der vorherigen Posts anzugucken. Dort wird eine Limitierung auf X Smilies pro Zeile umgesetzt und ebenfalls die Tabelle so aufgebaut, dass sie valide ist - was sie in Deinem Fall leider nicht ist.

Die Limitierung auf Y Zeilen pro Seite kannst Du durch den Umstand erreichen, dass die Daten erst in ein Array gelesen werden (also irgendwie schon direkt als Array und nur indirekt aus dem Verzeichnis). Ich persönlich würde das (wie in meinem Code zu sehen) mit der Funktion glob() machen, da sie Dir schon direkt ein Array zurückliefert und wesentlich einfacher zu bedienen ist als opendir()/readdir()/closedir().

Nun hast Du ein Array mit N enthaltenen Smilies. Anzeigen willst Du X pro Zeile*Y Zeilen. Dementsprechend musst Du für die 2. Seite eben erst Position X*Y anfangen, die Smilies aus dem Array zu lesen. Für die 3. Seite wäre es demzufolge 2*X*Y usw.

Wie das umgesetzt wird, hängt von der Variante ab, wie Du die Daten aus dem Array liest. So wie Du's momentan umgesetzt hast, steht die Lösung dafür schon ansatzweise in meinem letzten Post. Hier wird ja immer nur ein Datensatz ausgelesen.
Falls Du die Variante aus meinem Edit wählen solltest, gestaltet sich das Ganze nur unwesentlich anders. Hier musst Du eine gewisse Anzahl von Zeilen überspringen, dazu müsste die Initialisierung von $idx aus der Schleife genommen werden (wo es durch $j=$index=0 immer auf 0 gesetzt wird) und einfach auf den neuen Startwert gesetzt werden.

Wichtig ist aber auf jeden Fall, dass Du auf die Grenzen des Arrays prüfst. Gibt es keine Smilies mehr für die Seite, darf natürlich auch nicht versucht werden, diese auszulesen.

So viel erstmal dazu. Ich hoffe, ich habe mehr geholfen als Verwirrung gestiftet... ;)
 
ja, genug verwirrung und hausaufgaben für heute abend

mache ich mich dann mal dran, sobald ich zu hause bin, da gleich feierabend ist

bei probs poste ich hier, bei erfolg auch, wirst mich dann nicht los, will ja was lernen