Re: Problem beim splitten - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von markus (1013 Beiträge) am Dienstag, 12.Juni.2018, 11:22.
    Problem beim splitten

      Hallo in die Runde,

      ich habe ein kleines Split-Problem (Lizenz2).
      In der DB angebote habe ich im Feld room_id mehrere Zahlenkombis (z.B. 12345,55555,6753) immer mit Komma getrennt.
      Der Eintrag wird mir aber nur ausgegeben, wenn nur eine Kombi drin steht oder der letzte.

      Ich dachte, die Zahlen so zu splitten, klappt aber irgendwie nicht :-(
      foreach(split(/,/,$room_id)){
      

      Jemand ne Idee?
      VG Markus

      .....
      get "room_id==$room_id", "angebote", "erghash3";
      

      while(get_next("erghash3")){

      out <<EOF;
      <h4>$titel</h4>
      <p>$angebot</p>
      EOF
      }
      out<<EOF;
      
      .....

     Antworten

    Beitrag von richard (1187 Beiträge) am Dienstag, 12.Juni.2018, 16:04. WWW: posaunenchor-rhoden.de
    Re: Problem beim splitten

     Antworten

    Beitrag von Peter (141 Beiträge) am Dienstag, 12.Juni.2018, 20:32.
    Re: Re: Problem beim splitten

      Hallo Markus,

      ich würds so angehen:

      1. Ids in eine Liste z.B. '@myList' packen ( händisch oder push() ...usw.)

      2. die Liste als Serial in einem Textfeld speichern
         $myTextfeld=serial(@myList);
      

      3. Beim Aufruf das Serial mit 'eval' wieder in ne Liste verwandeln
         Syntax:
         @myList=eval($myTextfeld); # alle Werte wieder in @myList
         $myLen=@myList;            # in $myLen die Anzahl der Werte
         wenn $myLen dann größer 0 ist kannst du die Ids
         oder noch besser die Relationen dazu in nem Loop (mit $myLen und pop(@myList) ) wieder ausgeben
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Dienstag, 12.Juni.2018, 17:41. WWW: posaunenchor-rhoden.de
    Re: Problem beim splitten

      Eventuell meinst du auch etwas anderes.

      Du kannst mit dem get die gesamte Datenbank holen und dann in der Ausgabeschleife den Wert in $room_id überprüfen und die Ausgabe davon abhängig machen. Solange es nicht zu viele Datensätze gibt sollte das gehen. Probleme kan es geben wenn die Zahlen nicht alle die gleiche Stellenanzahl haben.

      ...


      <perl>
      

      get "angebote", "erghash3";

      while(get_next("erghash3")){
       $gesuchte_room_id="12345";   ## die gesuchte Nummer habe ich hier mal fest eingegeben
                                   ## mußt du natürlich entsprechend anpassen
                                                              
      

      if (index($room_id,$gesuchte_room_id)>=0)
      {
        out  "<p>deine ausgabe<br> \n";
       }
      

      }
      </perl>
      

     Antworten

    Beitrag von markus (1013 Beiträge) am Mittwoch, 13.Juni.2018, 18:11.
    Re: Re: Problem beim splitten

      Hier mal das ganze loop, es werden Daten aus 5 verschiedenen DB`s geholt und das Problem liegt beim erghash3, da ich in dem Textfeld mehrere room_Id`s mit Kommatrennung drin habe.

      Daher müßte doch das "foreach(split(/,/,$room_id)){" eigentlich korrekt sein, oder?




      <loop db=daten room_id==$room_id code=perl>
      out <<EOF;
      
      ....
      Content aus der DB daten
      ...


             <!-- Gallery -->
      EOF
      

      get "room_id==$room_id", "bilder", "erghash1";
       while(get_next("erghash1")){
          $pics_object{$object_bild}++ if($object_bild);
          $pics_zimmer{$zimmer_bild}++ if($zimmer_bild);
          $pics_kategorie{$kategorie_bild}++ if($kategorie_bild);
      }
      

      get "room_id==$room_id", "bilder_extra", "erghash2";
       while(get_next("erghash2")){
      
          $pics_object{$object_bild}++ if($object_bild);     $pics_zimmer{$zimmer_bild}++ if($zimmer_bild);     $pics_kategorie{$kategorie_bild}++ if($kategorie_bild);
      }


      foreach $item ('pics_object','pics_zimmer','pics_kategorie'){
           foreach $bild (keys %$item){
      
                 $clear=++$x%4==0 ? "</div><div class='row'>" : "";            $bild=~s/\s//;            out <<EOF; <div class="one-fourth column"> <a href="$bild" rel="prettyPhoto[$room_id]" title=""><img src="$bild" width="100px"></a>             </div>             $clear EOF     }

      }

      out<<EOF;
      EOF
      get "room_id==$room_id", "angebote", "erghash3";
      

      while(get_next("erghash3")){

      out <<EOF;
      <h4>$titel</h4>
      <p>$angebot</p>
      EOF
      }
      out<<EOF;
      <hr>
      EOF
      

      get "object_id==$object_id", "ratings", "erghash4";
       

      while(get_next("erghash4")){
      
                 out <<EOF; <h5>Gästebewertungen</h5>

      EOF

      }
      

      out<<EOF;







      EOF
      </loop>
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Mittwoch, 13.Juni.2018, 18:34.
    Re: Re: Problem beim splitten

      Da du die 2er Lizenz hast wird das vom Peter vorgeschlagene serial wohl nicht in Betracht kommen, lasse mich aber gerne eines besseren belehren.

      Wie man so eine kommagetrennte Liste splittet hatte ich in meiner ersten Antwort schon gezeigt bzw. ein funktionierende Beispiel verlinkt.

      Was willst du denn mit dem split machen? In die get-Abfrage mit einbauen?

      Die Ausgabe soll doch für eine einzelne room_id gemacht werden? Oder für alle, die sich im Textfeld befinden?

     Antworten

    Beitrag von Peter (141 Beiträge) am Mittwoch, 13.Juni.2018, 19:42.
    Re: Re: Re: Problem beim splitten

      geht natürlich auch ohne Serial.

      <perl>
      

      $room_id="1,22,333,4444";

      foreach(split(/,/,$room_id)){
        out "$_<br>"; # ---- in '$_' sind dann die einzelnen Werte
      }
      

      </perl>

     Antworten

    Beitrag von Peter (141 Beiträge) am Freitag, 15.Juni.2018, 18:51.
    Re: Re: Re: Problem beim splitten

      Hallo Markus,

      die WM ist noch langweilig, deshalb hab ich noch mal über dein Problem drübergelesen.

      Also, du hast am Anfang deines Loops einen '$room_id'. Wo kommt der her???

      Dann kommen 3 get-Abfragen mit diesem Wert.

      1. DB "bilder" ... '$room_id' ist ein Wert
      2. DB "bilder_extra" ... '$room_id' ist immer noch der selbe Wert (oder schon "")
      2. DB "angebote" ... '$room_id' ist IMMER NOCH der selbe Wert
      also einer, deshalb klapp dein 'get' auch nur bei EINEM und sonnst nicht.

      d.h. schon deine get-abfrage kann so nicht gehn.

      Du kanns natürlich eine Id-Liste in ein Textfeld packen und die Ids über einen
      Loop abarbeiten (viele Wege füren nach Rom), aber nicht so.

      Du brauchts für die Abfrage eine eindeutige Zuordnung.
      Eine Id, ein Name, eine Relation ... eine extra-DB oder so.

      und dann musst du deine erhaltene id-Liste mit einem Loop 'Wert für Wert' abarbeiten.

      Was anderes geht leider nicht - auch nicht bei bp.

     Antworten


     
 Liste der Einträge von 450 bis 600:Einklappen Zur Eingabe 
Neueste Einträge << 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.27s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!