• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

anzeig von datensätzen (PHP + MySQL)

Status
Für weitere Antworten geschlossen.

reinermar

Neues Mitglied
Hallo zusammen,

Details:
PHP + MySQL

Problem:
Ich 2 kleine fragen zum anzeigen von datensätzen.

Ich habe mir ein auswahlmenü zusammengebastelt wo man sich die vorhandenen Datensätze (bei mir) News anzeigen lassen kann und das gewünschte zu editierende auswählen kann.

Hiermit beschäftigt sich meine erste frage: Da News ja manchmal sehr lang sind wird dieses auch bei dem Auswahlmenü ausgegeben, das wird aber zu viel und zu groß. Wie kann ich es beschränken das z.b. nur ein kleiner teil des eigentlichen Texten dort angezeigt wird. Mein Auswahlmenü:

PHP:
Wählen Sie aus, welcher Datensatz geändert werden soll:<p>
<form action = "start_edit2.php" method = "post">

<?php
   mysql_connect("","root");
   mysql_select_db("test");

   $res = mysql_query("select * from news");
   $num = mysql_num_rows($res);

   // Tabellenbeginn
   echo "<table border=\"1\">";

   // Überschrift
   echo "<tr>"; 
   echo "<td>Auswahl</td> <td>Ueberschrift</td>";
   echo "<td>Nachricht</td><td>Autor</td></tr>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      echo "<tr>";
      echo "<td><input type='radio' name='auswahl'";
      echo " value='" . $dsatz["id_start"] . "'></td>";
      echo "<td>" . $dsatz["head"] . "</td>";
      echo "<td>" . $dsatz["post"] . "</td>";
      echo "<td>" . $dsatz["autor"] . "</td>";
      echo "</tr>";
   }

   // Tabellenende
   echo "</table>";
?>

   <p>
   <input type="submit" value="Datensatz anzeigen">
</form>
<br />
So, nun nach der Ausgabe geht es weiter mit dem eingentlichen ändern des Datensatzes. Dort ist mein Problem das ich den ganzen Text auseinmal sehen kann, also das der Text einem textarea und nicht in einem kleinen Fenster angezeigt werden kann, wo man vieleicht nur ein Wort verbessern kann. Ich weiss aber nicht wie man ein textarea interiert.
Mein Quelltext dazu:

PHP:
<?php
if (isset($_POST["auswahl"]))
{
   mysql_connect("","root");
   mysql_select_db("test");

   $sqlab = "select * from news where";
   $sqlab .= " id_news= " . $_POST["auswahl"];
   $res = mysql_query($sqlab);
   $dsatz = mysql_fetch_assoc($res);

   echo "Führen Sie die Änderungen durch,<p>";
   echo "betätigen Sie anschließend den Button<p>";
   echo "<form action = 'start_edit3.php' method = 'post'>";

   echo "<input name='he' value='" . $dsatz["head"]
        . "'> Ueberschrift<p>";
   echo "<input name='po' value='" . $dsatz["post"]
        . "'> Nachricht<p>";
   echo "<input name='au' value='" . $dsatz["autor"] 
        . "'> Autor<p>";
   echo "<input type='hidden' name='oripn' value='"
        . $_POST["auswahl"] . "'>";
        
   echo "<input type='submit' ";
   echo "value='Änderungen in Datenbank speichern'><p>";
   echo "<input type='reset'>";
   echo "</form>";
}
else
   echo "Es wurde kein Datensatz ausgewählt<p>";
?>
Ich hoffe man kann mir helfen ist bestimmt sehr einfach nur ich weiss es mal wieder nicht!

Gruß
reinermar
 
#1 eine mischung aus count_chars() und eregi_replace() schafft hier abhilfe.

zeichen zählen lassen, wenn was zu lang ist, abschneiden und durch drei ... ersetzen lassen.

#2 ist doch ganz einfach:

PHP:
<?php
echo '<textarea cols="40" rows="8">'.$dsatz['post'].'</textarea>';
?>

;-)

Nils aka XraYSoLo
 
Vielen dank für diese Super schnelle antwort!!!

geht das nicht einfacherer für Lösung 1# das bekomme ich niemals hin :P
 
ja es geht einfach, du kommst aber nicht um eins - zwei Funtionen 'rum

PHP:
//in der variablen $text sei der Text definiert
function truncate($string, $len = 200, $sign = "...") {
  if(strlen(trim($string)) <= $len) 
    return $string;
  $string = substr($string, 0, $len);
  if(substr($string, -1, 1) == " " || substr($string, $len, 1) == " ") 
    return trim($string).$sign;
  $truncate = strlen(strrchr(trim($string), " "));
  return substr(trim($string), 0, (200-$truncate)).$sign;
}

// schneidet den String an einem Leerzeichen auseinander,
// sodass er höchstens 200 Zeichen lang ist und hängt
// ... an das Ende.
$text = truncate($text);

// schneidet den String an einem Leerzeichen auseinander,
// sodass er höchstens 80 Zeichen lang ist und hängt
// [weiter] an das Ende.
$text = truncate($text, 80, " [weiter]");
 
Vielen dank,

ich habe es so eingefügt funktionier aber nicht, welchen fehler habe ich gemacht!

PHP:
     while ($dsatz = mysql_fetch_assoc($res))
   {
      echo "<tr>";
      echo "<td><input type='radio' name='auswahl'";
      echo " value='" . $dsatz["id_start"] . "'></td>";
      echo "<td>" . $dsatz["head"] . "</td>";
      echo "<td>" . $dsatz["post"] . "</td>";
      echo "<td>"
            
function truncate($string, $len = 200, $sign = " . $dsatz["post"] . ") {
  if(strlen(trim($string)) <= $len)
    return $string;
  $string = substr($string, 0, $len);
  if(substr($string, -1, 1) == " . $dsatz["post"] . " || substr($string, $len, 1) == " . $dsatz["post"] . ")
    return trim($string).$sign;
  $truncate = strlen(strrchr(trim($string), " . $dsatz["post"] . "));
  return substr(trim($string), 0, (200-$truncate)).$sign;
}

// schneidet den String an einem Leerzeichen auseinander,
// sodass er höchstens 200 Zeichen lang ist und hängt
// ... an das Ende.
$text = truncate($text);


// schneidet den String an einem Leerzeichen auseinander,
// sodass er höchstens 80 Zeichen lang ist und hängt
// [weiter] an das Ende.
$text = truncate($text, 80, " [weiter]");
echo "</td>";      
      
      /***************************************/
      echo "<td>" . $dsatz["autor"] . "</td>";
      echo "<td>" . $dsatz["timestamp"] . "</td>";
      echo "</tr>";
   }
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben