Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte in Tabellenspalte ändern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Werte in Tabellenspalte ändern

    Ich habe vor kurzem angefangen, mich etwas ausführlicher mit MySQL zu beschäftigen. Daher bitte ich um Nachsicht. Ich vermute, dass mein Problem gar keins ist, aber irgendwie habe ich gerade eine Denkblockade.

    Ich habe eine Tabelle in der es in den einzelnen Datensätzen eine Spalte 'reihenfolge_hm' gibt, in der die Reihenfolge der Datensätze gespeichert ist. Um diese Reihenfolge zu ändern, müssen also die Werte in 'reihenfolge_hm' geändert werden.

    Ich habe bisher folgenden Code um ein einfaches Formular zur Verfügung zu stellen, das die vorhandenen Menüpunkte mit dem Rangplatz in der Reihe ausgibt. Dieser Rang kann per Eingabe geändert werden:
    PHP-Code:
     <?php
     $abfrage 
    "SELECT menuepunkt_de,reihenfolge_hm FROM seiteninhalte WHERE hauptmenue='1' AND aktiv='1'";
     
    $ergebnis mysql_query($abfrage);
     
    ?>
    <form action="admin_reihenfolge.php" method="POST" enctype="multipart/form-data">
    <input type='hidden' name='task' value='hauptmenue_aendern' />
    <?php
    while ($inhalt mysql_fetch_row($ergebnis)) {
    $reihenfolge=$inhalt[1]+1;
    echo 
    '<tr><td>'.$inhalt[0].'</td><td><input name="'.$inhalt[0].'" value="'.$reihenfolge.'" style="width:20px;"/></td></tr>';
    }
    ?>
    <input type="hidden" name="anzahl" value="<?php echo ($reihenfolge?>" />
    <tr><td colspan="2"><input type='submit' value='&Auml;ndern' style="border:1px;" /></td></tr>
    Soweit so gut, die Ausgabe funktioniert. Ich stecke jetzt an der Weiterverarbeitung fest. Ich habe jetzt eine bestimmte Anzahl Paare der Form $inhalt[0]=irgendeine Zahl. Wie kriege ich die jetzt zurück in die Tabelle mit den richtigen Werten an der richtigen Stelle? Es geht über UPDATE, soweit ist mir das schon klar, aber sonst?


  • #2
    aber sonst?
    Was aber sonst? Kannst du nicht auf die gesendeten Werte des Formulars zugreifen oder wo liegt dein Problem?

    Kommentar


    • #3
      Hallo,
      ich wuerde das vielmehr ueber einen "hoch"/"runter" Button loesen. Du musst dann nur die beiden Werte tauschen. Hier mal was abstrakteres, vielleicht hilft es ja:
      PHP-Code:
      <?php
      public static function RemoteMove($intId$blnMoveUp) {
                  
      $objRpcResponse = new RpcResponse(RpcResponse::TypeMove);
                  
      $blnMoved false;
                  
      $blnMoveDown = !$blnMoveUp;
                  
      $objSelf self::Load($intId);
                  
      $objAuction $objSelf->Auction;
                  
      $intAuctionImages $objAuction->CountImages();
                  
      $arrAuctionImages $objAuction->GetImages();
                  foreach (
      $arrAuctionImages as $i => $objAuctionImage) {
                      
      $blnFirst = ($i == 0);
                      
      $blnLast  = ($intAuctionImages == $i);
                      if (
      $objAuctionImage->Rank !== $i) {
                          
      $objAuctionImage->Rank $i;
                          
      $objAuctionImage->Save();
                      }
                      
      //  ignore first entry on move-up, or last entry on move-down
                      
      if ($blnMoveUp && $blnFirst || $blnMoveDown && $blnLast) {
                          continue;
                      }
                      if (
      $objAuctionImage->Id == $intId) {
                          if (
      $blnMoveUp) { // move up
                              
      $objPrevious $arrAuctionImages[$i 1];
                              
      $objPrevious->Rank $i;
                              
      $objAuctionImage->Rank $i 1;
                              
      $objPrevious->Save();
                              
      $objAuctionImage->Save();
                              
      $blnMoved true;
                          } else if (
      $blnMoveDown) { // move down
                              
      $objNext $arrAuctionImages[$i 1];
                              
      $objNext->Rank $i;
                              
      $objAuctionImage->Rank $i 1;
                              
      $objNext->Save();
                              
      $objAuctionImage->Save();
                              
      $blnMoved true;
                          }
                          break; 
      // if we don't break, the next loop overwrites our $objNext->Rank
                      
      }
                  }
                  if (
      $blnMoved) {
                      
      $objRpcResponse->SetSuccess();
                      
      $objRpcResponse->SetMessage(RpcResponse::Moved, (string)$objAuctionImage);
                  } else {
                      
      $objRpcResponse->SetMessage(RpcResponse::MoveFailed__CLASS__);
                  }
                  return 
      $objRpcResponse;
              }
      ?>
      "Mein Name ist Lohse, ich kaufe hier ein."

      Kommentar


      • #4
        @cycap
        Ich weiß nicht, wie ich die Daten weiter verarbeiten muss. Ich vermute mal, dass hier foreach() meine Freund wäre, kann das aber nicht umsetzen.

        @chriz
        Danke, das werde ich mir mal genauer ansehen, wobei das doch sehr kryptisch ist. Ich hoffe, ich steige da durch. Aber die Idee ist gut, das würde auch die Fehlerquelle ausschalten, das irgendjemand einen Rangplatz zweimal vergibt.

        Kommentar

        Lädt...
        X