[PHP] Mehrfachauswahl richtig übergeben?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Dark|pUM4, 17. August 2008 .

Schlagworte:
  1. 17. August 2008
    Mehrfachauswahl richtig übergeben?

    Ja ich bins schon wieder ...

    Jetzt hat sich bei mir ein neues Problem herauskristalisiert!

    Wenn ich bei meinem Script eine Artikel anlege, dann habe ich im Formular ein Listenfeld mit Mehrfachauswahl.

    Nun Wähle ich dann zb. 5 Kategorien aus und übergeben diese via POST.
    Und jede Kategorie erzeugt einen extra Eintrag in der Datenbank.

    Wie geht das? Mit einer While Schleife? Wie übergebe ich den Wert richtig an eine Variable das dass dan auch so läuft?

    Hoffe ihr könnt mir folgen! BW gibts natürlich, danke
     
  2. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    kommt darauf an, wie du die namen etc. der checkboxen gewählt hast..

    wenn dieser z.B. ein array ist, könntest du die post daten dann per foreach() auswerten
     
  3. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    ich habe keine checkbox gemacht sondern ein listfeld ... ähh wie mach ich das zb mit dem array??? das mit foreach ahb ich mir schon überlegt, aber das mit dem array hab ich nicht hinbekommen!
     
  4. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    z.B. wenn du die inputs durch eine while schleife erstellst:

    daten[$i][name]

    $i als laufvariable, falls keine schleife verwendet wird kannst du auch für $i 0,1,2,3... einsetzen. und name einfach als platzhalter für das element unter dem der wert gespeichert wird

    und nach dem post rufst du es so auf..
    foreach ($_POST['daten'] as $k)
    {
    und dann normal wie beim array auf die werte zugreifen
    }
     
  5. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    stimmt das so????

    Code:
    $i = 1;
    while($_POST['kategorien']){
    
    $kategorie[$i]=$_POST['kategorien'];
    $i++;
    }
    
    foreach($kategorie as $katid){
    echo $katid;
    }
     
  6. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    kann ich schlecht einschätzen.. kannst du den ausschnitt deines quelltextes posten?
     
  7. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    das ist alles was relevant ist

    Code:
    }elseif($_GET['action'] == 'newpresent'){
    if(!$loggedin) die('Bitte einloggen!');
    $user = mysql_query("SELECT premium FROM present_user WHERE id='$idofuser'");
     $du=mysql_fetch_array($user);
     $premium = $du['premium'];
     
     if($premium == 1){
     $bild= 'max. 120*120 Pixel';
     $link= '<tr>
     <td><div align="right">Link:</div></td>
     <td><input name="link" type="text" id="link" value="http://" /></td>
     </tr>';
     }else{
     $link= '';
     $bild= 'max. 90*90 Pixel';
     }
    
    
    ?><form action="index.php?site=geschenke&action=save" method="post" enctype="multipart/form-data" name="post">
     <table width="90%" border="0" align="center" cellpadding="2" cellspacing="2">
     <tr> 
     <td colspan="2" height="20" class="title"><h3>Neues Geschenk :<br />
     </h3> </td>
     </tr>
     <tr> 
     <td colspan="2"></td>
     </tr>
     <tr>
     <td width="250"><div align="right">* Name:</div></td>
     <td width="1036"><input name="name" type="text" class="form_off" id="name" onFocus="this.className='form_on'" onBlur="this.className='form_off'" size="30" maxlength="30"></td>
     </tr>
     <tr>
     <td width="250" align="right">Bild:</td>
     <td ><input name="bild" type="file" id="bild" /> <br> <? echo $bild; ?></td>
     </tr>
     <tr>
     <td width="250" align="right" valign="top">&nbsp;</td>
     <td align="left" valign="top">&nbsp;</td>
     </tr>
     <tr>
     <td width="250" align="right" valign="top">* Beschreibung:</td>
     <td align="left" valign="top"><textarea name="beschreibung" cols="25" rows="7" class="form_off" id="beschreibung" onFocus="this.className='form_on'" onBlur="this.className='form_off'"></textarea></td>
     </tr>
     <tr>
     <td width="250"><div align="right">* Preis:</div></td>
     <td><input name="preis" type="text" id="preis" /> 
     &euro; <br>
     <br></td>
     </tr>
     <tr>
     <td width="250"><div align="right">* gesehen bei: </div></td>
     <td><input name="seen" type="text" id="seen" />
     <br>
     (keine Links erlaubt, <a class="stobern" href="index.php?site=getpremium"> >> Premiumuser werden</a>) <br>
     <br></td>
     </tr>
    <? echo $link;?>
     <tr>
     <td width="250"><div align="right">* Kategorien:</div></td>
     <td align="left" valign="middle"><table width="100%" border="0" cellspacing="0" cellpadding="0">
     <tr>
     <td width="130" align="left" valign="middle"><? 
    
     $gamesquads=mysql_query("SELECT name FROM present_art ORDER BY id");
     while($ds=mysql_fetch_array($gamesquads)) {
     $hometeam.= '<option value="0">'.$ds['name'].'</option>';
     $squadmembers=mysql_query("SELECT * FROM present_kategorien WHERE art='".$ds['name']."' ORDER BY id");
     while($dm=mysql_fetch_array($squadmembers)) {
     $hometeam.= '<option value="'.$dm['id'].'">&nbsp; - '.$dm['name'].'</option>';
     }
     $hometeam.= '<option value="0">&nbsp;</option>';
     } 
     
     
     echo '<select name="kategorien" size="5" multiple="multiple">'.$hometeam.'</select>'; ?></td>
     <td align="left" valign="middle">(f&uuml;r eine Mehrfachauswahl beim Auswh&auml;len die 'Strg'-Taste gedr&uuml;ckt halten!<br>
     <br></td>
     </tr>
     </table> </td>
     </tr>
     <tr>
     <td width="250"></td>
     <td><input name="save" type="submit" value="absenden" />
    (alle Felder mit * sind Pflichtfelder!) </td>
     </tr>
     </table>
    </form>
    <?
    
    }elseif($_GET['action'] == 'save'){
    if(!$loggedin) die('Bitte einloggen!');
    if($_POST['save']){
    
    $user = mysql_query("SELECT premium FROM present_user WHERE id='$idofuser'");
     $du=mysql_fetch_array($user);
     $premium = $du['premium'];
     if($premium == 1) $premiumfeld = 2;
     else $premiumfeld = 3; 
     
    $name = $_POST['name'];
    $beschreibung = $_POST['beschreibung'];
    $bild = $_FILES[bild];
    $preis = $_POST['preis'];
    $seen = $_POST['seen'];
    $link = $_POST['link'];
    //$kategorie = $_POST['kategorien'];
    //echo $kategorie;
    
    $i = 1;
    while($_POST['kategorien']){
    
    $kategorie[$i]=$_POST['kategorien'];
    $i++;
    }
    
    foreach($kategorie as $katid){
    echo $katid;
    }
    Errormessage:

    Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in C:\xampp\htdocs\present\geschenke.php on line 184

    ich hab no plan
     
  8. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    also du hast 2 verschachtelte while schleifen..
    willst du diese getrennt voneinander auswerten?
    oder gehören diese zusammen
     
  9. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    Code:
     $gamesquads=mysql_query("SELECT name FROM present_art ORDER BY id");
     while($ds=mysql_fetch_array($gamesquads)) {
     $hometeam.= '<option value="0">'.$ds['name'].'</option>';
     $squadmembers=mysql_query("SELECT * FROM present_kategorien WHERE art='".$ds['name']."' ORDER BY id");
     while($dm=mysql_fetch_array($squadmembers)) {
     $hometeam.= '<option value="'.$dm['id'].'">&nbsp; - '.$dm['name'].'</option>';
     }
     $hometeam.= '<option value="0">&nbsp;</option>';
     } 
    
    du meisnt das oder??? das ist zum erstellen des list feldes!

    so sieht das gesamte formular aus und darunter is dann die andere auswertung mit dem


    Code:
    $i = 1;
    while($_POST['kategorien']){
    
    $kategorie[$i]=$_POST['kategorien'];
    $i++;
    }
    
    foreach($kategorie as $katid){
    echo $katid;
    }
    kopier das ganze mal in deine entwicklungsumgebung dann siehst das besser und kommst vll auf die lösung ^^
     
  10. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    Tipp am Rande:

    Du machst das ja so:

    Oberbegriff [id:0]
    - Unterbegriff [id:1]
    - Unterbegriff [id:2]
    leer [id:0]
    ...

    Schonmal was von <optgroup> gehört? (Es sei denn natürlich du willst "Oberbegriff" auch zur Auswahl stellen, denk ich aber mal nicht, allein wegen ID 0..)
     
  11. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    um das gehts ja gar nicht, das is einfach ansichtssache, es geht darum, wie ich das array über das formular befülle und dann mithilfe dieses array einträge in die dantebnak mache! ich mach am besten morgen mal einen screener!!! aber wäre c00l wenn ihrs dennoch schon lösen könnt!
     
  12. 17. August 2008
    AW: Mehrfachauswahl richtig übergeben?


    Sende dein Formular ab und in der Datei wo du's auslesen willst:

    print '<pre>'.print_r($_POST,true).'</pre>';

    Dann siehst du, wie du es verwenden kannst.
     
  13. 30. August 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Mehrfachauswahl richtig übergeben?

    also ich habs immer noch nicht gerafft oO =((( es funktioniert einfach nichts was ich ausprobiere!
    hier mal ein screener vll könnt ihr es auch dann besser vorstellen!

    https://www.xup.in/dl,18437841/Unbenannt-2.jpg/
     
  14. 30. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    Beispiel:

    PHP:
    <form action='bla.php' method='POST'>
       <select multiple name='kategorien[]'>  <!-- "name ='kategorien[]' "  = feld ! -->
           <option value=''><?php  echo  $hometeam ?></option>
       </select>
       <input type='submit' name='gesendet'>
    </form>


    <?php

    for ( $i  $i  sizeof ( $_POST [ 'kategorien' ]) ;  $i ++)
    {
          if (isset(
    $_POST [ 'kategorien' ][ $i ]
          { 
             
    //kram um DB eintrag anzulegen mit inhalt aus $_POST['kategorien'][$i]
          
    }
    }

    ?>

    die optionen die bei dir aus $hometem kommen, werden nach auswahl und abschicken des formulars im numerisch indizierten Feld kategorien[] übergeben. das kannst du dann z.b. mit for & if auslesen.

    hoffe das hat einigermaßen geholfen.

    gruß
    Bomberpilot
     
  15. 30. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    while($_POST['kategorien']){
    da hast ne endlosschleife.

    for ($i = 0 ; $i < sizeof($_POST['kategorien']) ; $i++)
    da hast nen unötigen overhead

    mach es so:
    PHP:
    foreach( $_POST [ 'kategorien' ] as  $kategorie ) {
        
    //mach was mit $kategorie
    }
    btw, wenn du was in eine tabelle eintragen möchtest, reicht ein query für alle inserts.

    Code:
    INSERT INTO foo (bar) VALUES
    ('blah'), -- zeile 1
    ('blub'), -- zeile 2
    ('lala'); -- zeile 3, ";" => ende
     
  16. 30. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    foreach kA er behandelt das so als würde er keine werte erhalten oO ... so weit war ich auch schon

    und zum 2. vorschlag, nein geht leider nicht! jede kategorie muss eienn extra eintrag erzeugen also muss es wohl mit foreach gehen! ja is elegant funktioniert aber nicht.

    hier mein script zum speichern:
    PHP:

    elseif( $_GET [ 'action' ] ==  'save' ){
    if(!
    $loggedin ) die( 'Bitte einloggen!' );
    if(
    $_POST [ 'save' ]){

    $user  mysql_query ( "SELECT premium FROM present_user WHERE id=' $idofuser '" );
            
    $du = mysql_fetch_array ( $user );
                
    $premium  $du [ 'premium' ];
                
        if(
    $premium  ==  1 $premiumfeld  2 ;
        else 
    $premiumfeld  3 ;        
        
    $name  $_POST [ 'name' ];
    $beschreibung  $_POST [ 'beschreibung' ];
    $bild  $_FILES [ bild ];
    $preis  $_POST [ 'preis' ];
    $seen  $_POST [ 'seen' ];
    $link  $_POST [ 'link' ];
    $kategorie  $_POST [ 'kategorien' ];

        if(!(
    strlen ( trim ( $name ))))  $error []= "Geschenkname eingeben!" ;
        if(!(
    strlen ( trim ( $beschreibung ))))  $error []= "Beschreibung eingeben!" ;
        if(!(
    strlen ( trim ( $preis ))))  $error []= "Preis angeben!" ;
        if(!(
    strlen ( trim ( $seen ))))  $error []= "Gesehen bei eingeben!" ;
        if(!(
    strlen ( trim ( $kategorie ))))  $error []= "Bitte mindestens eine Kategorie angeben!" ;

        if(
    is_array ( $error )) {
            echo
    '<b>Ein Fehler ist aufgetreten!</b><br><br>' ;
            foreach(
    $error  as  $err ) {
                echo
    '<li>' . $err . '</li>' ;
            }
            echo
    '<br><br><input type="button" class="button" onClick="javascript:history.back()" value="Zurück">' ;
        }
        else {

            
    mysql_query ( "INSERT INTO `present_geschenk` (`name`, `bild`, `userid`, `preis`, `beschreibung`,  `seen`,  `link`, `premiumfeld`, `grundsperre`) VALUES (' $name ', ' $bild ', ' $idofuser ', ' $preis ', ' $beschreibung ', ' $seen ', ' $link ', ' $premiumfeld ', 'neues Geschenk')" );
            
            
    $geschenkid  mysql_insert_id ();
            
            foreach(
    $_POST [ 'kategorien' ] as  $katid ){
            
    mysql_query ( "INSERT INTO `present_geschenk_kategorien` (`geschenkid`, `kategorieid`) VALUES (' $geschenkid ', ' $katid ')" );
            }

            echo 
    'Ihr Artikel wurde erfolgreich eingetragen' ;
        }
    }else{ echo 
    '<br> Bitte zuerst das Formular ausfüllen!' ; }

    }

    bild von der eingabemaske habt ihr ja !
     
  17. 30. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    hast du denn das

    HTML:
    <select multiple name='kategorien[]'>
    im formular gemacht oder bist bei deinem name='kategorien' geblieben?

    ich hab extra nochmal in meinem schlauen buch nachgelesen, und laut diesem ist es wichtig, das kategorien schon im formular als feld deklariert wird.

    aber man lernt nie aus, wenn das also egal sein sollte, sagts mir ruhig
     
  18. 31. August 2008
    AW: Mehrfachauswahl richtig übergeben?

    PHP:
             foreach( $_POST [ 'kategorien' ] as  $katid ){
            
    mysql_query ( "INSERT INTO `present_geschenk_kategorien` (`geschenkid`, `kategorieid`) VALUES (' $geschenkid ', ' $kategorie ')" );
            }
    In der foreach sagst du $katid aber unten benutzt du $kategorie - ?
     
  19. 2. September 2008
    AW: Mehrfachauswahl richtig übergeben?

    ja hab ich ned darauf geachtet, aber das is derziet noch egal, weil es ja sowieso nicht funktioniert!!!

    @ Bomberpilot

    ähh hrhr das hab ich wieder übersehen, gibm ir 5 minuten, wenn das jetzt geht, dann muss ich aus dem fenster springen!!!

    nein bei mir sieht es so aus! und auch mit deinem beispiel funktioniert es leider nicht =((
    Code:
    <select name="kategorien" size="5" multiple="multiple">
    ich mein gibts es denn das??? das kann doch ned sein, es wird alles übergeben, nur eben beim post von den kategorien spinnt alles herum!


    ES GEHT ... ich weis zwar nicht was ich gemacht habe, aber jetzt geht es DD

    alter nochmal danke an alle! wenn ich euch jetzt noch einmal bewerten kann mach ich das sonst, müsst ihr leider mit meiner tiefsten dankbarkeit leben DDDDDD
     
  20. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.