Ankündigung

Einklappen
Keine Ankündigung bisher.

Text aus der DB verteilen

Einklappen

Neue Werbung 2019

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

  • Text aus der DB verteilen

    Hallo,

    ich habe ein ehern komisches Problem. Ich habe ein Datenbank mit vielen Tabellen und noch mehr Inhalten. Und in einer Spalte steht sehr viel Text drin, den möchte ich nun via php aufsplitten und gesondert ausgeben.
    Soweit so gut.

    Stellt euch also vor, in einer DB-Tabellenspalte steht jetzt:
    Code:
    Komponenten:
    text text text
    Anschlüsse:
    text text text
    Software:
    text text text
    Garantie:
    text text text
    Nun möchte ich in einer HTML Tabelle das ganze wie folgt ausgeben.
    Code:
    <table>
    <tr>
    	<td rowspan="2">
    		Komponenten:
    		text text text
    		Garantie:
    		text text text
    	</td>
    	<td>Anschlüsse:</td>
    </tr>
    <tr>
    	<td>Software:</td>
    </tr>
    </table>
    Aufgesplittet habe ich das Ganze mit php so:
    PHP-Code:
    <?php 
    if(substr_count($artikel_beschreibung,"\n") > 20)
    {
        
    $i strpos($artikel_beschreibung,"Anschlüsse:");
        if(
    $i 0)
        {
            
    $artikel_beschreibung=substr($artikel_beschreibung,0,$i-1)."</td></tr><tr><td>".substr($artikel_beschreibung,$i);
        }
        
    $i strpos($artikel_beschreibung,"Software:");
        if(
    $i 0)
        {
            
    $artikel_beschreibung=substr($artikel_beschreibung,0,$i-3)."</td><td valign=\"top\">".substr($artikel_beschreibung,$i);
        }
    }
    ?>
    <table width="100%" border="0" cellspacing="1" cellpadding="1">
    <tr>
        <td rowspan="2" width="400" valign="top"><? echo $artikel_beschreibung; ?> </td>
    </tr>
    </table>
    Nun habe ich folgendes Resultat:
    Links in der Spalte stehen die Komponenten mit Text, rechts in der oberen Spalte stehen die Anschlüsse, darunter die Software und noch mal darunter die Garantie. Ich möchte aber, die Garantie direkt unter den Komponenten haben, wie geht das? Das Problem ist halt, dass der ganze Text komplett in der DB steht...

    Danke für die Hilfe.

  • #2
    keiner einer Idee?

    Kommentar


    • #3
      Wie wärs du trennst von vornherein den Text schon in der Datenbank? Also für Komponenten, Anschlüsse, Software und Garantie eine eigene Spalte? Das ist zumindest üblich und lohnt sich letztlich auch.

      Kommentar


      • #4
        jaha, würde ich ja auch, nur ich muss auf einem vorhandenen System weiter entwickleln. Und die DB ist sehr groß und man müsste alles umstellen, was aber nicht so einfach ist und ich habe nur diese Aufgabe und kann nicht im gleichen Atemzug alles umstellen, wenn du verstehst was ich meine

        Kommentar


        • #5
          Nö der Aufwand ist garnicht so hoch.
          Schließlich versuchst du ja grad eh die Inhalte zu trennen, um sie eben getrennt auf der Seite anzuzeigen. Wie wärs du machst das einmalig und schreibst den Krams in ein intelligentes Format (CSV, SQL (id mitspeichern)), machst natürlich nen Backup deiner Tabelle, fügst die neuen Spalten hinzu und schreibst deinen Krams wieder in die DB zurück.

          Dein Mehraufwand ist nur das Ändern der DB und das wieder reinschreiben.

          Ab jetzt kannst du ganz bequem auf deine Felder Garantie, Komponenten etc zugreifen.

          Die Frage nach der Trennung der Inhalte bleibt dadurch natürlich bestehen.
          Du kannst mit strpos() die Position einer Zeichenkette in einer Zeichenkette ermitteln. Die Problematik die du hierbei natürlich hättest und evtl. manuell beheben musst ist: Dass der Trennbegriff mehrfach vorkommen kann. Diese Problematik hättest du aber bei der Spaltentrennung dann schon nicht mehr.

          Also probiers mal mit
          strpos() und substr()

          Kommentar


          • #6
            Schon klar, nur habe ich keinen Einfluss auf den restlichen Code, noch kann ich bestimmen was damit gemacht wird, da es auch zu Zeitaufwendig wäre, alles zu ändern, in der DB und im PHP-Code...

            Wie gesagt, dass ist nur meine Aufgabe, mehr habe ich da nicht zu melden.

            In der DB steht ja html Code drin wie
            Code:
            Garantie:
            
            
            
            text text text...
            Nur wenn ich wüsste, wie man mit strpos und substr da dran kommen würde, hätte ich ja nicht gefragt Ich habe ja mit tsrpos und substr schon die anschlüsse und die Software ruasgefiltert und einfach vor dem Wort Software einen Break reingemacht und dann mit einer html Tabellenspalte das einfach getrennt. Soweit kam ich auch noch, aber wie ich einen kompletten Text da rausfiltern soll? Garantie und der Text danach ist ja das letzte, was in der DB drin steht, könnte man damit was anfangen? Wenn ich irgendwie via php sage: Ab dem Wort "Garantie" alles nehmen bis nichts mehr nach unten kommt? Würde sowas gehen?

            Kommentar


            • #7
              PHP-Code:
              <?php
              *** gelöscht ***
              ?>
              Man war das schwierig
              Edit: Ah ein Fehler ist drin, mal sehen ob du ihn selbst findest *g*

              Kommentar


              • #8
                hm mal schaun, sorry das ich nicht so ein PHP Guru wie du bist und so schnell darauf gekommen bin, sonst würde ich ja auch nicht im Anfängerforum fragen...

                Mal schaun obs klappt, aber ein gewisser Ansatz ist ja jetzt gegeben.

                Danke.

                Kommentar


                • #9
                  Ist glaube ich mit RegEx etwas übersichtlicher:

                  PHP-Code:
                  <?php
                  $string 
                  "Alpha: Dumdidum Beta: LaLaLa Gamma: Jauchz Delta: Tor Tor Tor"
                  preg_match("/Beta:(.*)/"$string,$treffer );
                  echo 
                  "<pre>";
                  print_r($treffer);
                  ?>

                  Kommentar


                  • #10
                    Man muss kein Guru sein, das Manual zu den von mir vorher genannten Funktionen zu lesen und zu verstehen. Im Firefox kannste übrigens einfach in die Adressleiste "php substr" eingeben und schon landeste im PHP Manual (da php und funktionsname meistens als ersten Google-Treffer das Manual haben). Da stehen sogar Beispiele und auf deutsch ist es auch.
                    Der Gedanke, dass du keine Lust hattest das Problem eigenständig zu lösen (wie bei den meisten der Beiträge des Anfängerforums), hatte sich eben aufgedrängt und dann macht Antworten keinen Spass.

                    Edit: Man sollte RegExp vermeiden, wenns eine einfache Lösung dazu auch mit String-Funktionen gibt.

                    Kommentar


                    • #11
                      Ähm ja, du musst es ja genau wissen... Wenn ich keine Lust hätte es eigenständig zu lösen, würde ich nicht unnütz Zeit hier im Forum verlieren und 2 Tage auf Antwort warten... Ich bin einfach nicht drauf gekommen und meine erste Hilfe ist das Manual von php... Es gibt auch Leute, die sehen vor lauter Bäumen den Wald nicht, daher solltest du nicht so pauschalisieren...

                      Kommentar


                      • #12
                        Deine Art is witzig, du willst was von uns, ich geb dir die Lösung und dann machste mich doof an. Du bekommst von mir keine Antwort mehr. Kannst das letzte Wort haben.

                        Kommentar


                        • #13
                          Ähm wo hab ich dich bitteschön doof angemacht?

                          Kommentar


                          • #14
                            Zitat von cgdesign
                            sorry das ich nicht so ein PHP Guru wie du bist
                            Ähm ja, du musst es ja genau wissen...
                            Nicht dass es mich stört, aber wenn man etwas von einem anderen will, sollte man höflich und sachlich bleiben. Ich bin zwar nicht höflich, aber sachlich geblieben. Da ich aber nix von dir will darf ich des auch

                            Ne mal ernsthaft, hier posten soviel Newbies die kein Bock haben ein Problem selbst zu lösen, es aber in 5 Minuten beim Anschaun des Manuals oder der Googlesuche hätten, aber sofort hier am besten gleich ne Komplettlösung hätten, die genau in ihr schlecht programmiertes bestehendes System passt, da kann man manchmal nicht freundlich bleiben.

                            Nix für ungut.

                            Kommentar


                            • #15
                              Ok, ich wollte dich nicht anpissen oder angreifen, ehrlich nicht. Ich freue mich wirklich das mir jemand wie du geholfen hat und im Prinzip kann ich auch sehr sachlich bleiben. Danke trotzdem nochmal für dein Lösungsansatz, jetzt weiß ich wenigstens wieder wo ich weitermachen kann...

                              Ich habe in diesem Forum auch schon öfters geholfen oder versucht zu helfen, nun habe ich ne ganze Zeitlang nichts mehr geschrieben und nun komm ich selber nicht mehr bei solchen kleinen Problemen hinterher. Sehr traurig, aber wohl war...

                              Aber nochmals danke!

                              Kommentar

                              Lädt...
                              X