php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.11.2005, 18:45  
Gast
 
Beiträge: n/a
Standard 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.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.11.2005, 09:59  
Gast
 
Beiträge: n/a
Standard

keiner einer Idee?
 
Alt 16.11.2005, 10:03  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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.
Zergling-new ist offline  
Alt 16.11.2005, 10:20  
Gast
 
Beiträge: n/a
Standard

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
 
Alt 16.11.2005, 10:27  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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()
Zergling-new ist offline  
Alt 16.11.2005, 10:34  
Gast
 
Beiträge: n/a
Standard

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?
 
Alt 16.11.2005, 10:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
*** gelöscht ***
?>
Man war das schwierig
Edit: Ah ein Fehler ist drin, mal sehen ob du ihn selbst findest *g*
Zergling-new ist offline  
Alt 16.11.2005, 10:53  
Gast
 
Beiträge: n/a
Standard

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.
 
Alt 16.11.2005, 10:55  
Gast
 
Beiträge: n/a
Standard

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);
?>
 
Alt 16.11.2005, 10:58  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JavaScript/PHP: qooxdoo 0.7.1 - Teil 1 : Eine Einführung Zergling-new Tutorials 6 25.01.2008 10:41
JavaScript: Text Area: Scrollen zu einer Zeile im Text SvenLittkowski HTML, Usability und Barrierefreiheit 13 28.11.2007 16:31
CSS - Bild im div container überlappt andere container Buschdieb HTML, Usability und Barrierefreiheit 13 19.07.2007 23:17
MySQL-Volltextsuche SvenLittkowski Datenbanken 6 14.06.2007 19:58
spalte rechts ausrichten, text aber trotzdem linksbündig Crypi HTML, Usability und Barrierefreiheit 5 14.09.2006 11:35
HTML-Entities nur für Text, nicht für HTML-Tags PHP-Fortgeschrittene 2 31.12.2005 00:08
CSS - Design (clear - Problem) HTML, Usability und Barrierefreiheit 7 21.12.2005 14:55
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
[Erledigt] Text auf Bild PHP Tipps 2005 9 28.04.2005 15:05
DIV´s wollen nicht wie ich das will :-) HTML, Usability und Barrierefreiheit 22 28.03.2005 18:36
[Erledigt] frames probleme HTML, Usability und Barrierefreiheit 6 18.01.2005 02:33
Per Button Text formatieren Igäl HTML, Usability und Barrierefreiheit 1 11.11.2004 06:25
Javascript: Text einfügen geht nich über "javascript:BL HTML, Usability und Barrierefreiheit 14 19.10.2004 21:44
Zeilenumbrüche aus einem formatierten Text entfernen woods PHP Tipps 2004 9 23.09.2004 12:50
txt-Datei erstellen d-81 PHP Tipps 2004 12 11.08.2004 20:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
db durchrostungsgarantie für modell 2005, php text spalten verteilen

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.