ik wil een systeempje maken dat gegevens ophaald uit de database met max text 200
maar er gaat iets fout kijk!


<?

// admin.php?id=12456

// Database instellingen:

include "config.php";

// Verbinding maken met de database:

if (!mysql_select_db($database, mysql_connect($server, $gebruiker, $password1)))
{
echo 'Verbinding met de database mislukt.';
exit();

}


function afkorten($var, $lengte) {
$ret = $var;
if (strlen($ret) > $lengte) {
$ret = substr($ret, 0, $lengte-3)."...";
}
return $ret;
}


?>


<?

// Query verzenden en alle gegevens ophalen:

$query = "SELECT * FROM `Lastnews` ORDER BY id";
$result = mysql_query($query) or die(mysql_error());


if (mysql_num_rows($result) >= 1) {

while ($row = mysql_fetch_array($result)) {

$id = $row[id];//id van bericht
$door = $row[door]; // auteur
$wat = $row[wat]; // bericht zelf


echo "

<center>
<TABLE borderColor=#9A9662 cellSpacing=0 cellPadding=2
width='100%' align=center border=1 bgcolor='#EED107'>
<!--DWLayoutTable-->
<tr>
<td width='30%' height='25' valign='top'><b><font color='#800080'>Geplaatst
door:</font></b></td>
<td width='70%' valign='top'><p align='center'> <font color='#000000'>$door</font></td>
</tr>
<tr>
<TD height=29 valign='top'><b><font color='#800080'>Nieuws</font></b></td>
<TD valign='top'><p align='center'><font color='#000000'>
echo afkorten($wat,200);</font></p></td>
</tr>
</table>
<BR>";


}

}

?>
nu krijg ik deze fout
http://www.webpets.nl/testt/krantophaalen.php

de fout zit hem hier maar wat
echo afkorten($wat,200);
Waarom gebruik je geen LEFT(kolomnaam, 200) in de query? Dan haal je de 200 tekens op die je nodig hebt en daarmee ben je klaar.

Verder vergeet je nogal wat quotes:
<?
// fout
$id = $row[id];//id van bericht

// goed
$id = $row['id'];//id van bericht
?>
En horen backtics ` nooit en te nimmer in een query te staan.

Zie verder de MySQL-handleiding: http://dev.mysql.com/doc/refman/4.1/en/string-functions.html
waarom wil je dit? je krijgt daardoor wel corrupte data op je scherm (in PHP iig.). Tog?
Frank schreef op 24.09.2006 19:53
Waarom gebruik je geen LEFT(kolomnaam, 200) in de query? Dan haal je de 200 tekens op die je nodig hebt en daarmee ben je klaar.

Verder vergeet je nogal wat quotes:
<?
// fout
$id = $row[id];//id van bericht

// goed
$id = $row['id'];//id van bericht
?>
En horen backtics ` nooit en te nimmer in een query te staan.

Zie verder de MySQL-handleiding: http://dev.mysql.com/doc/refman/4.1/en/string-functions.html


ja kan ook,
nou ik wil een afkorting omdat ik dan op lees veder kan klikken snap je
dus zeg maar zo en natu.....
Nog even een compleet SQL-voorbeeld:

SELECT
  CASE
    WHEN LENGTH(kolomnaam) > 200 THEN CONCAT(LEFT(kolomnaam, 197), '...')
    ELSE kolomnaam
  END AS resultaat
FROM tabelnaam

Deze query kijkt zelf of de lengte groter is dan 200 karakters, pakt er dan 197 en plakt daar zelf de puntjes achter. Komt geen letter php-code aan te pas.
ja dat kan ik wel doen maat als ik dan op leez veder klik moet ik weer een aparte database tabel maken daar heb ik geen zin in !!!
niek schreef op 24.09.2006 19:54
waarom wil je dit? je krijgt daardoor wel corrupte data op je scherm (in PHP iig.). Tog?


Wat bedoel je hiermee niek?
Nou, stel er staat een string van 400 chars opgeslagen in je db, en je selecteerd het met max 200 chars. dan zie je nooit de hele string. Dus is je data 'incompleet'.

Maar bij nader inzien (en uitleg van de TS) snap ik het nu wel, de reden:p
jordi schreef op 24.09.2006 20:11
ja dat kan ik wel doen maat als ik dan op leez veder klik moet ik weer een aparte database tabel maken daar heb ik geen zin in !!!


Je werkt met dezelfde database:
Dit staat er bijvoorbeeld in:
"Een bericht van meer dan zoveel tekens, die is opgeslagen in je 1e database."

Met het hiervoor genoemde script krijg je daaruit te zien:
"Een bericht van meer dan ..."

Maar wat in je database staat veranderd niet.
jordi schreef op 24.09.2006 20:11
ja dat kan ik wel doen maat als ik dan op leez veder klik moet ik weer een aparte database tabel maken daar heb ik geen zin in !!!
Dat snap ik niet. Waarom zou je een extra tabel nodig hebben?

Je hebt een andere query nodig, meer niet. Je zou zelfs met 1 query in 1 keer zowel de korte als de volledige data kunnen ophalen, geen enkel probleem.

Ik zie het probleem niet.

Reageren