Query stimmt nicht mit Datensatz überein

zdek

Grünschnabel
Moin Moin

Ich bin schon am verzweifeln.

Also, ich habe eine Datenbankabfrage (MySQL) und das Ergebnis stimmt nicht mit dem Datensatz überein.
Im Datensatz sind folgende Daten gespeichert:(Beispieldatensatz)
id = 1
titel = Sozialraummanagement - Stadtteilentwicklung
text = Blablabla
rubrik = Koordination Bezirksamt
user = 2
stand = 1168508390
seite = stadtteilentwicklung.php?rubrik=Koordination Bezirksamt


Die Ausgabe ist wie folgt geschrieben:
PHP:
if($_POST[tabelle] == "alles") {
        
		     // DB-Abfrage über alle tabellen ohne autor 
		     if($_POST[autor] == "") {
			     
				 $sql ="SELECT  id,titel,text,seite  FROM aktuelles WHERE  text   LIKE '% $suche%' 
				              UNION
							  SELECT  id,titel,text,seite  FROM content WHERE  text   LIKE '%$suche%' 
				              UNION
							  SELECT  id,titel,text,seite    FROM l_forum WHERE    text   LIKE '%$suche%' 
							  UNION
							  SELECT  id,titel,text,seite    FROM einrichtungen WHERE  text   LIKE '%$suche%' 
				              UNION
							  SELECT  id,titel,text,seite   FROM politik WHERE    text   LIKE '%$suche%' 
				              UNION
							  SELECT  id,titel,text,seite    FROM wohnen WHERE    text   LIKE '%$suche%' 
							  UNION
							  SELECT  id,titel,text,seite    FROM stadtteilentwicklung WHERE    text   LIKE '%$suche%' 
							  
						    ";
			} else {
			
			     // DB-Abfrage über alle Tabellen mit autor
			    $sql =" SELECT  id,titel,text,seite  FROM aktuelles WHERE  text   LIKE '%$suche%'  AND     user='$autor'
				              UNION
							  SELECT  id,titel,text,seite  FROM content WHERE   text   LIKE '%$suche%'  AND   user='$autor' 
				              UNION
							  SELECT id,titel,text,seite FROM l_forum WHERE  text   LIKE '%$suche%'  AND     user='$autor'
							  UNION
							  SELECT id,titel,text,seite FROM einrichtungen WHERE  text   LIKE '%$suche%'  AND     user='$autor'
				              UNION
							  SELECT  id,titel,text,seite  FROM politik WHERE   text   LIKE '%$suche%'  AND     user='$autor'
				              UNION
							  SELECT  id,titel,text,seite FROM wohnen WHERE   text   LIKE '%$suche%'  AND     user='$autor'
							  UNION
							  SELECT  id,titel,text,seite    FROM stadtteilentwicklung WHERE    text   LIKE '%$suche%'  AND user='$autor'
							";
             }
			 
         } else {
		 
		     if($_POST[autor] == "") {
			 
		         $sql = "SELECT  id,titel,text,seite   FROM $tabelle WHERE  text   LIKE '%$suche%' ";
				 
			} else {
			
			     $sql ="SELECT  id,titel,text,seite   FROM $tabelle WHERE   text   LIKE '%$suche%'  AND     user='$autor' ";
				 
			}
		
		}
$z = 1;

$result=mysql_query($sql) OR die(mysql_error());

?>

<div class="content1">
<span class="uschrift">Die Suche hat folgendes Ergeben:</span><br />
Es gibt <strong>"<? echo mysql_Num_Rows($result); ?>"</strong> Treffer  zum Suchbegriff <strong>"<?php echo $suche;?>"</strong>
<br /><br />
</div>
<br />



<?php
		
           if (mysql_Num_Rows($result) > 0 ) {
               while ($row = mysql_fetch_array ($result)) { 
			   // Suchergebnis anzeigen	   
                  echo"<div class=\"content1\">
                              <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
                              <tr>
                              <td width=\"50\" align=\"center\"><strong>$z.)</strong></td>
                              <td><strong>$row[titel]</strong> $row[seite]</td>
                              </tr>
                              <tr>
                              <td width=\"50\">&nbsp;</td>
                              <td>";
							  
			       $text = $row[text];
				   // Textformatierung wird geladen
                   include("inc/bbcode.inc.php");
			        // Text kürzen
				   $laenge = strlen($text);
		               if($laenge >= 200) {
                           $rest = substr("$text", 0, 200);
						   	$rest = eregi_replace("$suche", "<strong>$suche</strong>", $rest); 
							echo "$rest ...";
					   } else {
					        $text = eregi_replace("$suche", "<strong>$suche</strong>", $text); 
							echo "$text<br>";
					   }
				
					echo "<div align=\"right\"><a href=\"$row[seite]id=$row[id]&suche=$suche \">   .... mehr lesen</a> </div></td>
                              </tr>
                              </table>
                            </div><br />";
				  $z++ ;
			  }

Wobei fast alles korrekt angezeigt wird. Aber nur fast, den im unteren Bereich steht die Zeile :
Code:
<div align=\"right\"><a href=\"$row[seite]id=$row[id]&suche=$suche \">   .... mehr lesen</a> </div>
Auf der Website kommt dann folgendes: stadtteilentwicklung.php?rubrik=Koordination%20Bezirid=4&suche=Lurup
es sollte aber eigendlich
stadtteilentwicklung.php?rubrik=Koordination%20Bezirksamt&id=4&suche=Lurup
stehen.

Das Problem ist also, das "$row[seite]" nicht vollständig eingefügt wird, sondern nach genau 50 Zeichen abgebrochen wird. In der DB sind aber "varchar(200)" für die Spalte eingegeben. In der Anzeige von PhpMyAdmin (wo alle Datensätze dieser Tabelle aufgelistet sind) wird auch nach 50 Zeichen mit ... abgebrochen. Wenn man auf bearbeiten des Datensatzes geht, wird der Inhalt aber korrekt mit mehr als 50 Zeichen dargestellt.
Es sind alle Datensätze betroffen die länger als 50 Zeichen in der Spalte "seite" haben.
Und die Abfrage kürzt meiner Meinung nach nicht die Ergebnisse.
Was ist also da los?

Zur Information: vor kurzem wurde der Server auf php5 umgestellt. Bis dahin funktionierte alles.

dank im voraus für Eure Hilfe

zdek:confused:
PS: trotz suche hab ich nichts der gleichen gefunden...
 
Schreib die Zeile mal so:
PHP:
<div align=\"right\"><a href=\"{$row['seite']}&id={$row['id']}&suche=$suche \">   .... mehr lesen</a> </div>
 
Hallo Jan
Erstmal Danke für dein Bemühen.

Das funktioniert auch nicht!
Auch wenn man den fehlenden Backslash einfügt.
Es wird zwar das "&" Zeichen eingefügt. Da dies aber Standartmässig im Datensatz drin ist, würde es bei den die kürzer als 50 Zeichen lang sind, doppelt erscheinen.

Ich hab ja die böse Vorahnung, dass MySQL irgendwie falsch aufgesetzt wurde und die Spalte "seite" nur ne kurze Vision des Inhalts ausgibt.

Ich glaub ich spreche mal mit dem Webhoster über das Problem.

zdek
 

Neue Beiträge

Zurück