Anzeige

input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)

input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i) | PSD-Tutorials.de

Erstellt von martinhahn90, 17.05.2009.

  1. martinhahn90

    martinhahn90 Nicht mehr ganz neu hier

    Dabei seit:
    23.06.2008
    Beiträge:
    56
    Geschlecht:
    männlich
    input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)
    Servus Jungs,

    ich bin gerade dabei, eine kleine Galerieverwaltung weiterzuschreiben. Und zwar sitze ich daran, dass man die angelegten Bilderkategorien, sowie die angelegten Bilder sortieren kann.
    Bei den Kategorien ging das recht einfach, selbst ohne große PHP-Kenne.

    Auch beim Bilder-Upload war es einfach, die PositionsID zu vergeben und diese in die Datenbank eintragen und später auslesen zu lassen.
    Funktioniert wunderbar, hatte ich keine Probleme mit (bin ich auch stolz drauf, wie Oskar, so als völliger N00b^^).

    Das Prinzip beim Bilder-Upload war einfach:
    Da hier ein statisches Formular existiert, welches jeweils nur fünf Bilderuploads gleichzeitig erlaubt, kann für jedes input-Feld ein eigener Name von Hand eingegeben werden, nach dem Prinzip: name='image_1', name="'image_2' und so weiter.
    Das ganze konnte ich dann in der Prozess-Datei wunderbar abholen und in die Datenbankschreiben lassen via folgender Zeile:
    SET name = \''.varchar($_POST['name_'.$i]).'\'


    Nun möchte ich die Positionierung auch bei der Bilderbearbeitung noch als Feature hinzufügen. Hier habe ich aber das Problem, dass es sich eben nicht um ein statisches Formular mit immer jeweils fünf Feldern handelt, sondern hier werden so viele inputs angezeigt, wie ich Bilder in die Kategorie geladen habe. Also zwischen 0 und unendlich.
    Hier weiß ich nun nicht, wie ich sagen kann, dass der Name des input-feldes sich immer erhöht, sodass ich es dann nach dem gleichen Prinzip wie oben auslesen und in die Datenbank schreiben kann.


    Ich hoffe, das ist halbwegs verständlich dargestellt...:rolleyes:

    Grüße und danke vorab,

    Martin
     
    #1      
  2. martinhahn90

    martinhahn90 Nicht mehr ganz neu hier

    Dabei seit:
    23.06.2008
    Beiträge:
    56
    Geschlecht:
    männlich
    input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)
    AW: input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)

    Dachte gerade, ich hätte einen tollen Ansatz, aber der geht auch nicht...vielleicht wird dadurch aber noch einmal deutlicher, was ich will. Fürchte nämlich, ich drücke mich etwas schwerverständlich aus, eben weil es für mich schwerverständlich ist. :D

    admin/index.php
    Code (Text):
    1. <fieldset><legend>Bilder bearbeiten, Kategorie: <?=$row->name;?></legend>
    2.                     <?php
    3.                     $query = $sql->sendQuery('SELECT id, posID, name
    4.                         FROM fdw_images
    5.                         WHERE catID = \''.intval($_GET['id']).'\'
    6.                         ORDER BY posID');
    7.                     while($row = $sql->fetchObject($query)) {
    8.                         echo '<div style=\'margin:3px;\'>';
    9.                             echo '<img style=\'vertical-align:middle;\' src=\'../thumbs/'.$_GET['id'].'/'.$row->name.'\' alt=\'\' title=\''.$row->name.'\' />';
    10.                             echo 'Pos: <input type=\'text\' name=\'posID_'.$i++.'\' value=\''.$row->posID.'\' style=\'width: 30px;\' />';
    11.                             echo '<a href=\'index.php?site=deleteImage&amp;id='.$row->id.'\'>entfernen</a>';
    12.                             echo '<br /><form action=\'send.php\' method=\'POST\' enctype=\'multipart/form-data\'><input type=\'submit\' name=\'editImage\' value=\'Absenden\' />';
    13.                         echo '</div>';
    14.                     }
    15.                     ?>
    16.                 </fieldset>

    admin/send.php
    Code (Text):
    1. elseif($_POST['editCats']) {
    2.    
    3.     for($i = 0; $i < $_POST['entrys']; $i++) {
    4.         $query = $sql->sendQuery('UPDATE fdw_image_cats
    5.             SET name = \''.varchar($_POST['name_'.$i]).'\',
    6.                 posID = \''.intval($_POST['posID_'.$i]).'\',
    7.                 titleTag = \''.varchar($_POST['titleTag_'.$i]).'\'
    8.             WHERE id = \''.intval($_POST['id_'.$i]).'\'');
    9.     }
    10.    
    11.     header('Location:index.php?site=category');
    12. }
     
    #2      
  3. exo

    exo Aktives Mitglied

    Dabei seit:
    17.04.2006
    Beiträge:
    357
    Geschlecht:
    männlich
    Ort:
    Lutherstadt Wittenberg
    Software:
    Photoshop
    Kameratyp:
    Canono EOS 50D
    input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)
    AW: input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)

    du schonmal dran gedacht es mit einer foreach-schleife zu versuchen? die läuft ja bekannterweise nur solang - wie etwas existiert - also bei 5 bildern - läuft se 5x und bei 8 - 8x usw. usw. vielleicht hilft dir das ein wenig weiter
     
    #3      
  4. martinhahn90

    martinhahn90 Nicht mehr ganz neu hier

    Dabei seit:
    23.06.2008
    Beiträge:
    56
    Geschlecht:
    männlich
    input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)
    AW: input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)

    hmmm...das Teil zeigt mir aber ja auch nur so viele Einträge an, wie ich haben will.
    Das Problem ist nur: Trage ich in die inputfelder etwas ein und sende es ab, passiert nichts. Die Übertragung in die Datenbank klappt nicht. Auslesen geht wunderbar, schreiben nicht. Und das auch nur bei der Bilderbearbeitung, bei den Kategorien klappt es wunderbar, ebenso beim Neueinstellen von Bildern.

    Und den einzigen Unterschied, den ich zwischen Bearbeitung und Neueinstellung sehe ist, dass beim einen der input-Name fix ist, beim anderen nicht. Und den muss ich nun so hinbekommen, dass die Zahl hinter posID_ einfach höhergezählt wird.

    Daher dachte ich eben an name=\'posID_'.$i++.'\' - was dann so in die DB geschrieben wird: posID = \''.intval($_POST['posID_'.$i]).'\',
     
    #4      
  5. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)
    AW: input-Anzahl wird generiert, input-Name soll fortlaufend sein (name_$i)

    Ein kurzes Beispiel um Dein Vorhaben zu verdeutlichen:
    Inputzahl generieren:
    PHP:
    1. <?
    2.  
    3. foreach( $result as $data )
    4. {
    5.     print '<input type="text" name="link['.$data['id'].']"/>';
    6. }
    7.  
    8. ?>
    Nach dem Absenden:
    PHP:
    1.  
    2.  
    3. print_r($_POST['link']);
    4.  
    Kurze Erläuterung:
    Wenn man den Formularfeldern im name-Attribut ein [ ] hintersetzt erzeugt man damit im Übertragenen Sinne ein Array, was man sich dann über print_r($_POST['name']) ausgeben kann.

    So funktioniert beispielsweise auch die Übergabe der Daten in phpMyAdmin
     
    #5      
Seobility SEO Tool
x
×
×