Ankündigung

Einklappen
Keine Ankündigung bisher.

mehr als 1sache in die gleiche zeile einer datenbank

Einklappen

Neue Werbung 2019

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

  • mehr als 1sache in die gleiche zeile einer datenbank

    Hallo,
    ich versuche etwas zu schreiben, dass es m�glich ist, das er mir etwas in die selbe datenbankzeile schreibt.

    Das sollte dann so aussehen:

    user_id lightbox_image_ids
    1 385 695 970
    5 23
    ...

    bislang habe ich es nur geschaft, dass er mir eine lightbox_image_ids einf�gt und diese dann �berschreibt.

    PHP-Code:
    $bildid     = (int) $_REQUEST['bildid'];

    if(
    $action == "lightbox"){
                
    $lightbox add2list($bildid$user_id);
     
    $db->unbuffered_query("UPDATE bb".$n."_jgs_galerie_lightboxes SET lightbox_image_ids = '".$lightbox."' where user_id='".$wbbuserdata['userid']."'"1);
            

    hatte es auch schon mit INSERT INTO versucht, allerdings hat er es mir dann so ausgegeben:

    user_id lightbox_image_ids
    1 385
    1 695
    1 970
    5 23
    ...

    hoffe ihr k�nnt mir da weiterhelfen
    gruss[/php]


  • #2
    Hallo,
    sowas löst man eigentlich anders, das ist eine 1:n bzw. n:m Beziehung und wird eigentlich in einer eigenen Tabelle gespeichert.

    Aber bleiben wir mal bei deinem Beispiel.
    Code:
    UPDATE tabelle SET spalteX = CONCAT(spalteX, ' ', '$lightbox') WHERE spalteId = 1
    Concat verbindet Strings.
    Du musst jetzt natürlich sicherstellen, dass Werte aus $lightbox nicht schon in spalteX vorkommen, sonst hast du doppelte Einträge.

    Kommentar


    • #3
      super, danke...

      wie könnte ich das denn noch umgehen, dass ich dann doppelte einträge bekomme?
      gruss

      Kommentar


      • #4
        Wenn du einen UNIQUE-Index auf die entsprechenden Spalten setzt, verhindert deine Datenbank automatisch, dass doppelte Einträge vorkommen.

        Kommentar


        • #5
          hallo, bis hierher bin ich nun gekommen, klappt soweit.
          k�mme aber an einem anderen punkt nicht weiter...

          PHP-Code:
          <?php
              $sql_light 
          $db->query("SELECT lightbox_image_ids
                  FROM bb"
          .$n."_jgs_galerie_lightboxes
                  WHERE user_id='"
          .$wbbuserdata['userid']."'
                  "
          );
          $user_lightbox_info $db->fetch_array($sql_light);

              
          $userlightbox $db->fetch_array($lightbox_sql);
              
          $lightbox_da $user_lightbox_info['lightbox_image_ids'];
              
          $bildid     = (int) $_REQUEST['bildid'];
              if(
          $lightbox_da == $bildid){
                  echo 
          "bild ist nicht drin";
                  }
                  else{
          $zur_lightbox "<a 
                  echo "
          bild ist drin";}
          ?>
          wie bekomme ich die if abfrage so hin, dass er abfragt, ob die aktuelle bildid sich in $lightbox_da befindet.
          also z.B. in der $lightbox_da befinden sich id 2 und 5
          wenn nun die aktuelle abfrage f�r id 2 startet zeigt er mir "bild ist drin" an allerdings bei id 5 zeigt er mir "bild ist nicht drin" an.

          wie muss die if abfrage richtig lauten, damit er mir nicht nur sagt, wenn die erste id richtig ist, sonder auch die anderen

          gruss

          Kommentar


          • #6
            spalte LIKE '%wert%'
            Beachte allerdings, dass wenn der "wert" = 3 ist, auch 13 usw. gefunden werden. Dementsprechend musst jeder Eintrag vom selben Trennzeichen umgeben sein. Da auf den Inhalt automatisch ein TRIM gemacht wird, ist ein Leerzeichen kein geeignetes Trennzeichen.

            Kommentar


            • #7
              hi, bekomme das einfach nicht hin, hab das jetzt so angepasst:

              PHP-Code:
              <?php
                      $bildid     
              = (int) $_REQUEST['bildid'];
                  echo 
              "$bildid";
                  
              $sql_light $db->query("SELECT lightbox_image_ids
                      FROM bb"
              .$n."_jgs_galerie_lightboxes
                      WHERE user_id='"
              .$wbbuserdata['userid']."' AND lightbox_image_ids LIKE '%$bildid%' ");
              $user_lightbox_info $db->fetch_array($sql_light);
                  
                  
              $lightbox_da $user_lightbox_info['lightbox_image_ids'];
                  echo 
              "$lightbox_da";

                  if 
              $lightbox_da == $bildid){
                              echo 
              "bild ist nicht drin";
                      }
                      else{

                      echo 
              "bild ist drin";}
              ?>
              habs mal mit echo"..." gemacht...
              dann hab ichs ausgeführt und bekomme folgendes:
              für bildid 1391: 1391 1392 1391 bild ist drin
              für bildid 1392: 1392 1392 1391 bild ist nicht drin

              alerdings stehen beide ids (1391 1392) in der tabelle

              Kommentar


              • #8
                hallo

                bin zwar kein Experte...fehlt da aber nicht eine ( beim if...

                PHP-Code:
                <?php
                    
                echo "$lightbox_da";

                    if 
                $lightbox_da == $bildid){
                                echo 
                "bild ist nicht drin";
                        }
                        else{

                        echo 
                "bild ist drin";} 
                ?>

                Kommentar


                • #9
                  ne ich bin auch blöd

                  PHP-Code:
                  <?php
                          $bildid     
                  = (int) $_REQUEST['bildid'];
                      
                  $sql_light $db->query("SELECT lightbox_image_ids
                          FROM bb"
                  .$n."_jgs_galerie_lightboxes
                          WHERE user_id='"
                  .$wbbuserdata['userid']."' AND lightbox_image_ids LIKE '%$bildid%' ");
                  $user_lightbox_info $db->fetch_array($sql_light);
                      
                      
                  $lightbox_da $user_lightbox_info['lightbox_image_ids'];
                   
                      if(
                  $lightbox_da == ''){
                      
                  $zurlightbox "jgs_galerie_lightbox.php?action=lightbox&amp;bildid=".$bildid."";

                          }
                          else{
                      
                  $zurlightbox "jgs_galerie_lightbox.php?action=lightbox_remove&amp;bildid=".$bildid."";
                  }
                  ?>
                  so habs jetzt! danke danke
                  @Zergling: könntest du mir noch sagen, wie ich einzelne sachen wieder daraus lösche? habe ja schon bei else $zurlightbox="....action=lightbox_remove..."


                  PHP-Code:
                  <?php
                  if($action == "lightbox_remove"){
                         
                  $bildid     = (int) $_REQUEST['bildid'];
                                     
                  $lightbox removeFromlist($bildid$user_id);
                          
                  $db->query("DELETE FROM bb".$n."_jgs_galerie_lightboxes (user_id,lightbox_image_ids ) VALUES ('','".$bildid."$lightbox')");
                      }
                  ?>
                  das wäre super

                  Kommentar


                  • #10
                    DELETE löscht die komplette Zeile.
                    Du musst wieder UPDATE verwenden.

                    Kommentar


                    • #11
                      @jens21
                      Wieso versuchst du mit diesem schrottigen Tabellendesign überhaupt noch weiter zu arbeiten.

                      Du solltest dich mal mit dem Thema Normalisierung auseinander setzten. die Probleme die du bis jetzt mit deinem Design bekommen hast sind die geringsten und werden mit Sicherheit nicht weniger.

                      Kommentar


                      • #12
                        Meine Meinung, allerdings glaube ich, dass ihn JOIN Abfragen erst recht überfordern, wenn noch nichtmal die String-Verarbeitung klappt..

                        Kommentar


                        • #13
                          Er wird sich mit dem Design aber eher einen abbrechen als wenn er sich in Ruhe mal richtig an die Sache ranmacht.

                          Kommentar


                          • #14
                            bekomme es leider nicht hin:

                            PHP-Code:
                            <?php
                            <?php
                            if($action == "lightbox_remove"){
                                   
                            $bildid     = (int) $_REQUEST['bildid']; 
                                    
                            $db->unbuffered_query("UPDATE bb".$n."_jgs_galerie_lightboxes SET lightbox_image_ids = (lightbox_image_ids - $bildid) WHERE user_id = '".$wbbuserdata['userid']."'");
                                }
                            ?>
                            ?>
                            klappt das auch so in der art, weil er mir sagt: Call to undefined function: removefromlist()

                            hättest du noch eine lösung, dass es so klappt ohne die function removefromlist?

                            gruss

                            Kommentar


                            • #15
                              Zitat von jens21
                              PHP-Code:
                              <?php
                              <?php
                              if($action == "lightbox_remove"){
                                     
                              $bildid     = (int) $_REQUEST['bildid']; 
                                      
                              $db->unbuffered_query("UPDATE bb".$n."_jgs_galerie_lightboxes SET lightbox_image_ids = (lightbox_image_ids - $bildid) WHERE user_id = '".$wbbuserdata['userid']."'");
                                  }
                              ?>
                              ?>
                              klappt das auch so in der art, weil er mir sagt: Call to undefined function: removefromlist()
                              Wenn du schon einen Fehler erhälst, solltest du auch den Quellcode posten, der diesen Fehler verursacht. In deinem Code wird removefromlist() aber gar nicht aufgerufen.

                              Kommentar

                              Lädt...
                              X