MySQL » Feld, Zeile oder Spalte » Automatisch beschreiben

DaveThuet

Erfahrenes Mitglied
Hallo Profis,

ich habe eine Frage wo ich wiedermal Eure Hilfe benötige, ich weiss nicht ob mein vorhaben überhaupt Realisierbar ist!?

Ich würde gerne in meine bestehende MySQL "tbl_uploads" zwei weitere Zeilen einfügen was soweit kein Problem ist, diese Zeilen sollten sich automatisch Beschreiben mit informationen die aus der selben Tabelle stammen aus der Zeile "bildpfad".

Ich versuche mal meine Frage in ein Beispiel zu formulieren:
Wir haben ein Bild das hochgeladen wurde in der "tbl_uploads.bildpfad" daraus würde ich gerne die Grösse (filesize) in Bytes auslesen und in der tbl_uploads.bildsize automatisch reinschreiben lassen und dann ebenso das Format des Bildes (imagesize) in der Zeile "tbl_uploads.bildformat zum Beispiel als 1920x1080.

Ist dies machbar das MySQL diese zwei Zeilen automatisch beschreibt, da immer wieder neue Bilder dazukommen in der genannten Tabelle und wenn ja wie realisiert man solche MySQL-Automatisierungsbefehle?

Wäre allen für jegliche Hilfe sehr dankbar und verbleibe mit den besten
 
MySql ist kein Bildbearbeitungsprogramm und auch kein Dateimanager.
Wenn ich das richtig verstanden habe enthält MySql nicht das Bild, sondern nur ein Stück Text mit dem Pfad zum Bild.
Da hat MySql keinerlei Möglichkeit die Dateigrösse zu bestimmen und erst recht nicht das Bildformat.

Die Berechnungen musst du in PHP machen und beim INSERT zusammen mit dem Pfad speichern.
 
Hallo Thomasio,

ja das ist richtig die DB enthält natürlich nur einen reinen Text zur eigentlichen Bilddatei.
Wie kann ich dies denn anders Lösen, damit die zwei Spalten automatisch gefüllt werden?
Kannst du mir da irgendwie Helfen, ich bin einfach kein Programmierer und mit PHP komme ich nicht klar. :(

Wo sollte ich die Berrechnung einfügen...
PHP:
...
// und wie sollte den die Berrechnung aussehen für meine zwei gewünschte vorhaben
...
function Trigger_FileUpload(&$tNG) {
  $uploadObj = new tNG_FileUpload($tNG);
  $uploadObj->setFormFieldName("bildpfad");
  $uploadObj->setDbFieldName("bildpfad");
  $uploadObj->setFolder("wallpaper/");
  $uploadObj->setMaxSize(5500);
  $uploadObj->setAllowedExtensions("jpg, gif, png, jpeg");
  $uploadObj->setRename("auto");
  return $uploadObj->Execute();
}
...
// oder muss die Berrechnung hier einfügt werden
...
  $ins_tbl_uploads->setTable("tbl_uploads");
  $ins_tbl_uploads->addColumn("id_user", "NUMERIC_TYPE", "POST", "id_user");
  $ins_tbl_uploads->addColumn("id_unterkategorie", "NUMERIC_TYPE", "POST", "id_unterkategorie");
  $ins_tbl_uploads->addColumn("bildpfad", "FILE_TYPE", "FILES", "bildpfad");
  $ins_tbl_uploads->addColumn("keywords", "STRING_TYPE", "POST", "keywords");
  $ins_tbl_uploads->addColumn("id_lizenzen", "NUMERIC_TYPE", "POST", "id_lizenzen");
  $ins_tbl_uploads->addColumn("id_kategorie", "NUMERIC_TYPE", "POST", "id_kategorie");
  $ins_tbl_uploads->setPrimaryKey("id_uploads", "NUMERIC_TYPE");
...
Das Upload Formular sieht so aus...
PHP:
<form method="post" id="form1" action="<?php echo KT_escapeAttribute(KT_getFullUri()); ?>" enctype="multipart/form-data">
<h4><i>&loz;</i> Einzel-Uploadformular:</h4>
<p>Nur für einzelnes Bild, die Unterkategorie kann gewählt oder eröffnet werden.<br />Bitte nur neue Unterkategorien eröffnen wenn Sie mindestens 6 Wallpapers dafür besitzen, vielen dank!<br />Uploaden Sie ansonsten Ihr Bild in den vorhandenen &laquo;Diverse ...&raquo; Unterkategorien der gewählten Kategorie.<br />Wichtig: Warten Sie unbedingt die Bestätigungsseite ab nach dem Klick auf "Hochladen".<br /></p>
<br />
  <div align="left" class="abstand">
    <table cellpadding="2" cellspacing="0" class="KT_tngtable">
      <tr>
        <td class="KT_th"><label for="bildpfad">Wallpaper:</label></td>
        <td><input type="file" name="bildpfad" id="bildpfad" size="32" />
          <?php echo $tNGs->displayFieldError("tbl_uploads", "bildpfad"); ?> Maximal à 5 Megabytes</td>
      </tr>
      <tr>
        <td class="KT_th"><label for="id_lizenzen">Bild Lizenz:</label></td>
        <td><select name="id_lizenzen" id="id_lizenzen">
          <option value="-1" <?php if (!(strcmp(-1, $rstbl_uploads->Fields('id_lizenzen')))) {echo "SELECTED";} ?>>Lizenz wählen</option>
<?php
  while(!$lizenz->EOF){
?>
          <option value="<?php echo $lizenz->Fields('id_lizenzen')?>"<?php if (!(strcmp($lizenz->Fields('id_lizenzen'), $rstbl_uploads->Fields('id_lizenzen')))) {echo "SELECTED";} ?>><?php echo $lizenz->Fields('mousetext')?></option>
          <?php
    $lizenz->MoveNext();
  }
  $lizenz->MoveFirst();
?>
          </select>
          <?php echo $tNGs->displayFieldError("tbl_uploads", "id_lizenzen"); ?> <span class="tt fragezeichen"><span class="tooltip"><span class="top"></span><span class="middle"><strong>Lizenz-Information:</strong><br />Mehr über die Lizenzen auf folgenden <a href="./index.php?page=lizenzen" target="_blank">Link</a>.</span><span class="bottom"></span></span></span></td>
      </tr>
	  <tr>
    <td class="KT_th"><label for="keywords2">Suchw&ouml;rter:</label></td>
        <td><textarea name="keywords" id="keywords" cols="50" rows="5" onFocus="if(this.value=='Mindestens, 6, Suchwörter, durch, Komma, getrennt, -> Idealerweise mit Informationen über das Bild****** -> Beispiel: Blume, Art, Familie, Ort, Farbe, Jahreszeit, Kameramodell, Copyright-Information') this.value=''">Mindestens, 6, Suchwörter, durch, Komma, getrennt, -> Idealerweise mit Informationen über das Bild****** -> Beispiel: Blume, Art, Familie, Ort, Farbe, Jahreszeit, Kameramodell, Copyright-Information<?php echo KT_escapeAttribute($rstbl_uploads->Fields('keywords')); ?></textarea>
          <?php echo $tNGs->displayFieldHint("keywords");?> <?php echo $tNGs->displayFieldError("tbl_uploads", "keywords"); ?> </td>
      </tr>
      <tr>
        <td class="KT_th"><label for="id_kategorie">Kategorie:</label></td>
        <td><select name="id_kategorie" id="id_kategorie">
          <option value="-1" <?php if (!(strcmp(-1, $rstbl_uploads->Fields('id_kategorie')))) {echo "SELECTED";} ?>>Kategorie wählen</option>
  <?php
  while(!$hauptkategorie->EOF){
?>
          <option value="<?php echo $hauptkategorie->Fields('id_kategorie')?>"<?php if (!(strcmp($hauptkategorie->Fields('id_kategorie'), $rstbl_uploads->Fields('id_kategorie')))) {echo "SELECTED";} ?>><?php echo $hauptkategorie->Fields('kategorie')?></option>
          <?php
    $hauptkategorie->MoveNext();
  }
  $hauptkategorie->MoveFirst();
?>
          </select>
          <?php echo $tNGs->displayFieldError("tbl_uploads", "id_kategorie"); ?> </td>
      </tr>
      <tr>
        <td class="KT_th">Unterkategorie:</td>
        <td><select name="id_unterkategorie" id="id_unterkategorie" wdg:subtype="DependentDropdown" wdg:type="widget" wdg:recordset="unterkategorie3" wdg:displayfield="kategorie" wdg:valuefield="id_unterkategorie" wdg:fkey="id_kategorie" wdg:triggerobject="id_kategorie">
          </select> 
          &nbsp;&nbsp;&nbsp;Neue Unterkategorie:&nbsp;<span class="tt fragezeichen"><span class="tooltip"><span class="top"></span><span class="middle"><strong>Wichtig:</strong><br />Bitte nur neue Unterkategorien eröffnen wenn Sie mindestens 6 Wallpapers dafür haben, vielen dank! Uploaden Sie ansonsten Ihr Bild in den vorhandenen &quot;Diverse...&quot; Unterkategorien der gewählten Kategorie.</span><span class="bottom"></span></span></span>&nbsp;
        <input name="id_neueunterkategorie" type="text" id="id_neueunterkategorie">
        &nbsp;
        <input type="submit" name="KT_Insert1" id="KT_Insert1" value="Hochladen" /></td>
      </tr>
    </table>
    <input type="hidden" name="id_user" id="id_user" value="<?php echo $_SESSION[kt_login_id] ?>" />
  </div>
</form>
Ich wäre sehr dankbar für Hilfe in dieser Angelegenheit.
 
Also, du musst jetzt zwei sachen machen.

1.) Die bestehende Tabelle mit den neuen Werten anpassen. Dafür brauchst du ein Programm, dass nur diese eine Aufgabe übernimmt und danach wieder gelöscht werden kann.

2.) bruachst du eine erweiterung des Skripts für den langfristigen Einsatz, dass direkt beim Upload die entsprechenden Daten speichert und in die Datebank schreibt.

--------
Zur technischen umsetzung: Entweder selber machen, einen im Freundeskreis finden, oder jemanden beauftragen/in Jobbörse posten
 
Guten Abend alxy,

erstmlas danke ich dir für deine Nachricht.
Das mit der Jobbörse habe ich mir auch überlegt, bin aber etwas verunsichert aus einer anderen Geschichte die ich hier nicht erwähnen werde.

Ich habe es nun folgendermassen gemacht ist aber sicher eine Katastrophe für Profis wie Ihr es seid. Also ich lese die Werte auf eine spätere Seite wo die Daten vorhanden sind und füge die Daten dann per INSERT in die Zeilen ein...
PHP:
<?php mysql_query("update tbl_uploads set bildformat = '$groesse[0]x$groesse[1]' WHERE id_uploads = '$_GET[id]'"); ?>
und für die Bildgrösse (filesize) habe ich folgendes:
PHP:
<?php mysql_query("update tbl_uploads set bildsize = '$size' WHERE id_uploads = '$_GET[id]'"); ?>
Das Auslesen der Dateigrösse geschieht folgendermassen:
PHP:
<?php $size = round(filesize('./wallpaper/'.$querywallpaper->Fields('bildpfad'))/1048576, 2); echo "$size MB" ?>
Na ja wie gesagt, ich denke bei Profis wie Ihr, wird dies Euch nur ein verzweifeltes Kopfschütteln auslösen.:rolleyes:
 
Zurück