Eingabefeld kopieren in anderes Eingabefeld

amsel0_0

Grünschnabel
Gute Tag,
habe folgendes Problem möchte von den einem Feld den Namen in ein anderes Feld übergeben.Finde dazu leider nix was das macht so wie ich das will.
Feld 1 landet das file drin mit Namen :
PHP:
 tr("Metadatei", "<input type=\"file\" name=\"file\" size=\"80\" name=\"wantusername\" onBlur=\"namecheck();\" id=\"wantusername\" /><a name='namecheck' id='namecheck'> </a>\n", 1);
Feld 2 zum Namen ändern ist normal leer :
PHP:
tr("Name", "<input type=\"text\" name=\"name\" size=\"80\" /><br />(Wird keine Name angegeben, wird der Dateiname benutzt.)\n", 1);

Hat wer eine Idee wie ich das machen kann finde bei Google leider nix was man nutzen kann.

mfg amsel0_0
 

Yaslaw

alter Rempler
Moderator
Mit PHP?
Solche Sachen macht man normalerweise mit Javascript.
Und tr() ist auch keine bekannte PHP-Funktion. Was macht diese? Ich kenne [itags]<tr>...</tr>[/itags] aber das ist HTML.

Im Code steht "(Wird keine Name angegeben, wird der Dateiname benutzt.)". Was für eine Datei?

Bitte gin ein wenig Mehr infos, was dein Code machen soll. Ich finde es icht heraus.
 

amsel0_0

Grünschnabel
Guten Abend Yaslaw,
tr macht eine Zeile in Tabellenform ist als Funktion vorgeben.
PHP:
function tr($x, $y, $noesc = 0){
    if ($noesc)
        $a = $y;
    else {
        $a = htmlspecialchars($y, ENT_QUOTES);
        $a = str_replace("\n", "<br />\n", $a);
    }
    print("<tr><td class=\"tableb\" valign=\"top\" align=\"left\">$x</td><td class=\"tablea\" valign=\"top\" align=left>$a</td></tr>\n");
}
Ich lade ein Bild runder im Netz. Will es auf die Homepage hochladen (842bbc3199486b2f2a9c97ea51319c48.gif) original Name
um den nahmen nicht vorher ändern zu müssen ist das gedacht .

Das mit dem Javascript ist mir schon klar nur finde ich einfach nichts im Netz was mir so was anbietet oder macht.

mfg amsel0_0
 

basti1012

Erfahrenes Mitglied
Wo lädst du das Bild den runter?
Kannst du das Bild nicht direkt mit PHP holen und speichen ?
Zb

file_put_contents('zielordner/842bbc3199486b2f2a9c97ea51319c48.gif',file_get_contents('https://da_wo das_her_ist.de/842bbc3199486b2f2a9c97ea51319c48.gif');

Wie viele Bilder sind das den?
Für 2 oder 3 Bilder baut man sich ja kein Code.

Dein Versuch einen veralteten Tabellenlayout-Code auszugeben ist so auch nicht sinnvoll.

Du kannst dir zwar ein <input type="file"> Upload Button auf deiner Seite erstellen und nutzen, doch da lädt man Dateien von seinem Computer hoch und da bleiben die Namen üblicherweise gleich.
Hier mal ein Code
Upload von Dateien auf den Webserver mit PHP
Man könnte da auch die Dateien Namen beim Hochladen ändern.

Zeig uns mal den Rest von deinem Code und erklär auch mal wo die Bilder herkommen und wo sie hinsollen, bzw. was da mit gemacht werden soll.
 

Sempervivum

Erfahrenes Mitglied
Da der Fragesteller ein Eingabefeld vom Typ "file" erzeugt, wird die betr. Datei offenbar aus dem lokalen Filesystem gelesen und er will dem Benutzer die Möglichkeit geben, einen alternativen Dateinamen einzugeben in dem zweiten Eingabefeld. Aber den originalen Namen als Voreinstellung dort eintragen.

Versuche dies:
PHP:
tr("Metadatei", "<input type=\"file\" name=\"file\" size=\"80\" name=\"wantusername\" onBlur=\"namecheck();\" onchange=\"tosecond(this);\" id=\"wantusername\" /><a name='namecheck' id='namecheck'> </a>\n", 1);

Javascript:
function tosecond(ele) {
    document.querySelector('input[name="name"]').value = ele.value;
}
(ungetestet)

Edit: Getestet mit dem Ergebnis, dass der Browser (bei mir Opera) einen Fakepath vor den Namen setzt, siehe auch hier:
How to get file name when user select a file via <input type="file" />?
D. h. die Funktion tosecond muss so aussehen:
Code:
        function tosecond(ele) {
            const nameOnly = ele.files[0].name;
            document.querySelector('input[name="name"]').value = nameOnly;
        }
 
Zuletzt bearbeitet:

amsel0_0

Grünschnabel
Hab mal zu dem Java Script noch eine Frage:
kann man noch was erweitern so das er wie bei php
substr(filename, 3) macht

mfg amsel0_0
 

amsel0_0

Grünschnabel
Thx,
hab nur ein Problem dabei wie soll ich das so einbinden
Code:
const anyString = tosecond; /* funzt nicht */
const anyString = input[name="name"]; /* funzt nicht */
console.log(anyString.substring(0, 4));
ich möchte nur das er mir die Endung weg macht wegen suche suche in der db

mfg amsel0_0
 

Sempervivum

Erfahrenes Mitglied
Das funktioniert deshalb nicht weil Du in der ersten Zeile die Variable mit "const" definierst, das selbe in der zweiten Zeile noch Mal geht nicht. Versuche es so:
Code:
        function tosecond(ele) {
            const nameOnly = ele.files[0].name.split('.')[0];
            document.querySelector('input[name="name"]').value = nameOnly;
        }
(ungetestet)