Eintrag der Daten in die DB - 1:1 laut Text!

icefire

Erfahrenes Mitglied
Moin!
Ich habe eine kleine Newsfunktion. Doch leider wird der Text mit großen Zwischenräumen eingetragen - so, als ob in jeder Zeile ein <br> stehen würden! Was muß ich ändern, damit der Text normal eingetragen wird bzw wie kann ich die nl2br() Funktion vernüftig einsetzen?

PHP:
if($_REQUEST["action"] == 'neu'){

$verbindung = @mysql_connect($mysqlserver, $mysqluser, $mysqlpass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!"); 
$selectdb = @mysql_select_db($mysqldb, $verbindung) or die("Konnte die Datenbank <b>$mysqldb</b> nicht auswählen!"); 
	 	 
$insert = "INSERT INTO infmem_news (nw_id, nw_title, nw_name, nw_news, nw_date,	nw_art,	nw_option, nw_info) VALUES (  
'".addslashes(htmlspecialchars($_POST[nw_id]))."', // Automatisch
'".addslashes(htmlspecialchars($_POST[nw_title]))."', // Überschrift
'".addslashes(htmlspecialchars($_POST[nw_name]))."', // Name/Nick	
'".addslashes(htmlspecialchars($_POST[nw_news]))."', // News-Text
'".addslashes(htmlspecialchars($_POST[nw_date]))."', // Datum
'".addslashes(htmlspecialchars($_POST[nw_art]))."', // Rubrik
'".addslashes(htmlspecialchars($_POST[nw_option]))."', //Kommentar-Option
'".addslashes(htmlspecialchars($_POST[nw_info]))."')"; // Quelle/ Link
echo mysql_error();
mysql_query($insert, $verbindung) or die(mysql_error());
$done = true;
}
 
Zuletzt bearbeitet:
Hallo,

bekommst Du eigentlich keine Fehlermeldung nach den Kommentaren
in der "mysql_query"?
PHP:
'".addslashes(htmlspecialchars($_POST[nw_id]))."', // Automatisch

Schau Dir auch einmal diese Function als Alternative zu addslashes und htmlspecialchars an:
PHP:
 mysql_real_escape_string()
Poste doch auch einmal den HTML-CODE des Formular´s.
Vielleicht liegt der Fehler ja auch da?


Gruß

RS9999:)
 
Die Kommentare habe ich jetzt nur hier eingefügt, zur Übersicht! :)

Ich bin etwas verunsichert ob es überhaupt das Problem der Eintrag ist oder generell das auslesen der Texte. Wenn ich beispielsweise den Text wie folgt durch str_replace laufen lasse, dann habe ich die großen Lücken im Text - kommentiere ich das aus, habe ich nur noch ein einzigen Textblock ohne Zeilenbrüche!


Das hatte ich heute Morgen noch vergessen anzugeben! ;-)
PHP:
$data[nw_news]=str_replace("\n", "<p>", $data[nw_news]);
 
Hallo,

was bekommst Du angezeigt wenn Du einmal folgendes probierst?

PHP:
     $result = mysql_query($sql) or die(mysql_error());

     while($row= mysql_fetch_assoc($result)){
     $nw_news = explode("\n",$row['nw_news']);
     }

     foreach($nw_news as $nw_news){
     echo $nw_news."<br>";
     }

Gruß

RS9999:)
 
Eine Fehlermeldung:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #33' at line 1
 
Hallo,

wie sieht den die SELECT Abfrage bei Dir aus?

Hier mein Beispiel mit der Abfrage:

PHP:
<?php
    $sql = "SELECT nw_news
           FROM news 
           WHERE nw_id ='1'";// nw_id zufällig gewählt!
    $result = mysql_query($sql) or die(mysql_error());

    while($row= mysql_fetch_assoc($result)){        
    $nw_news = explode("\n",$row['nw_news']);
    }
    foreach($nw_news as $nw_news){
    echo $nw_news."<br>";
} 
?>

Gruß

RS9999
 
PHP:
$sql = mysql_query("SELECT * FROM infmem_news ORDER BY nw_date DESC LIMIT 0,05");
echo mysql_error();

Ist eben nach dem Eintragsdatum sortiert! Dann folgt die eigentliche Ausgabe:

PHP:
while($data = mysql_fetch_array($sql)){

$data[nw_news]=str_replace("\n", "<p>", $data[nw_news]); 

if($data[nw_info] == ''){$info="Keine weiteren Informationen vorhanden!";}else{$info=$data[nw_info];}
	
echo'	<table......';
 
Hallo,

anbei nochmals alles nur mit Deiner Datenbankabfrage:
PHP:
<?php
    $sql = "SELECT  *  
            FROM infmem_news 
            ORDER BY nw_date 
            DESC LIMIT 0,05"; //   Sortierung nach neusten Datum
    $result = mysql_query($sql) or die(mysql_error()); // Dürfte bekannt sein!
    while($data= mysql_fetch_assoc($result)){ // Dürfte bekannt sein!        
    $nw_news = explode("\n",$data['nw_news']); // Ergebnis nach Zeilenende "\n" trennen und in ARRAY schreiben. 
    }
    foreach($nw_news as $nw_news){ // In der Scleife die Array-Elemente auslesen.
    echo $nw_news."<br>"; // Auslesen der einzelnen Array-Elemente mit Zeilenubruch 
    }
    if($data[nw_info] == ''){
    $info="Keine weiteren Informationen vorhanden!";
    }else{
    $info=$data[nw_info];
    }
?>
Also, wenn ich das bei mir lokal teste, werden die Texte sauber
Zeile für Zeile dargestellt.

Beispiel:

Nichts ist so gerecht
verteilt wie der Verstand
- denn alle glauben sie
hätten genug davon!


So langsam solltest Du jetzt selber weiter kommen,
oder dich mehr mit PHP befassen.

Gruß

RS9999
 
Sicher hat man schon mal Sachen, wo es am hacken ist - aber auch wenns nur ein Hobby ist, klemme ich mich dahinter! Und das ich alles mir mögliche versuche, versteht sich von selbst! :suspekt:

Schau, Du hast deinen Code der anscheinend auch bei dir läuft - bei mir aber nicht! ich habe dann einen Haufen von Fehlermeldungen. Auch wird der Text zerstückelt Ich poste jetzt mal den kompletten Code - kann ja sein das wir aneinander vorbei sprechen:

PHP:
<?PHP
include("news_connect.php");
include("news_config.php");
	
$verbindung = @mysql_connect($mysqlserver, $mysqluser, $mysqlpass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!"); 
$selectdb = @mysql_select_db($mysqldb) or die("Konnte die Datenbank <b>$mysqldb</b> nicht auswählen!"); 

$sql = mysql_query("SELECT * FROM infmem_news ORDER BY nw_date DESC LIMIT 0,05");
echo mysql_error();

global $nw_id;

while($data = mysql_fetch_array($sql)){

$data[nw_news]=str_replace("\n", "<p>", $data[nw_news]); 
	
	if($data[nw_art] == Allgemein){$images="allgemein.gif";}
	if($data[nw_art] == Server){$images="server.gif";}
	if($data[nw_art] == Homepage){$images="homepage.gif";}
	if($data[nw_art] == Mitglieder){$images="mitglieder.gif";}
	if($data[nw_info] == ''){$info="Keine weiteren Informationen vorhanden!";}else{$info=$data[nw_info];}
	
echo'	<table align="top" width="'.$table1.'" cellspacing="0" cellpedding="0" style="border:solid 1px black;" bgcolor="'.$newscol2.'">
		<tr>
		<td colspan="2" background="'.$image_path.$bg_image.'" style="border-bottom: 1px solid black;'.$style1.'">»&nbsp;'.$data[nw_title].'</td>
		</tr>		
		<tr>
		<td width="'.$table2.'" bgcolor="'.$newscol1.'" style="border-bottom: 1px solid black; border-right: 1px solid black;'.$style3.'"><br><div valing="top" align="center"><img src="'.$image_path2.'/images/'.$images.'"></div><br></td>
		<td valign="top" width="'.$table3.'" bgcolor="'.$newscol3.'" style="border-bottom: 1px solid black;'.$style2.'">
		Beitrag von: <span style="color: #ff6600; font-weight: bold;">'.$data[nw_name].'</span><br>
		Geschrieben am: <span style="color: #ff6600; font-weight: bold;">'.german_date($data[nw_date]).'</span><br>
		Rubrik: <span style="color: #ff6600; font-weight: bold;">'.$data[nw_art].'</span><br>		
		<br>'.$data[nw_news].'<br><br>Quelle: '.$info.'</td>
		</tr>		
		<tr>
		<td colspan="2" bgcolor="'.$newscol3.'" style="'.$style4.'"><div align="left"><a href="index.php?file=news_add_kom&nw_id='.$data[nw_id].'">»&nbsp;Kommentare</a>';
		
$query = "SELECT kom_order FROM infmem_kom WHERE kom_order =".$data[nw_id]."";
$result = mysql_query($query);
echo mysql_error(); 
$count_nw = mysql_num_rows($result);
		
echo'&nbsp;'.$count_nw.'</div></td></tr>
	</table><br>';
	}
echo'';
?>


Zu sehen ist das dann hier: http://bnc.clanserverarea.de/clan/index.php
 
Zurück