Avatar billede sevinding Juniormester
13. oktober 2010 - 08:35 Der er 11 kommentarer og
1 løsning

Limit antal tegn

Hejsa
Jeg har et lille problem med dette lange script.
Jeg vil gerne forkorte udtrækket fra te.name tilmax 40 tegn.
Hvad har jeg ikke gjort rigtigt?


$res = mysql_query("SELECT

aa.navn AS navn,
aa.nummer AS nummer,
aa.year AS year,
aa.hold AS hold,
ec.id AS id,
ec.aar AS aar,
ec.placering AS placering,
ec.stage AS stage,
ec.rytter AS rytter,
ec.tid AS tid,
ec.length AS length,
ec.andet AS andet,
et.id AS etapeid,
et.number AS number,
et.afstand AS afstand,
et.types AS types,
t.flags AS flags,
t.id AS rytterid,
t.name AS name,
te.id AS teamid,
te.name AS teamname,
ty.id AS tyid,
ty.team AS team,

LEFT(te.name, 20)

FROM
    alleaar AS aa
    INNER JOIN
    turen AS t
ON
    ec.rytter = t.id
    INNER JOIN
    etapeclass AS ec
ON
    ec.rytter = t.id
    INNER JOIN
    etaper AS et
ON
    ec.stage = et.id

    INNER JOIN
    teams AS te
ON
    aa.hold = te.id

    INNER JOIN
    teamyear AS ty
ON
    ty.team = te.id

WHERE aa.year=$aar AND et.year=$aar AND aa.navn = t.id AND et.id=$id

GROUP BY
    t.id

ORDER BY ec.placering ASC

");



while($r = mysql_fetch_array($res)) {

        echo  "<table width='590' border='0' cellspacing='0' cellpadding='0'><tr><td  style='border-bottom:solid 1px #C2C2A6;'>";
      echo "<table border='0' cellspacing='0' cellpadding='2'><tr>";
        echo "<td width='25' align='right' valign='bottom'>$r[placering].</td>";
        echo "<td width='15' align='center' valign='bottom'><strong><font color='#FF0000'>$r[andet]</font></strong></td>";
        echo "<td width='20' align='left' valign='top'><img src=$r[flags] width='15' height='10' border=0></td>";
        echo "<td width='20' align='right' valign='top'>$r[nummer]</td>";
        echo "<td width='207' align='left' valign='bottom'><a href='http://www.tourfacts.dk/profilryttere.php?id=$r[rytterid]' class='link2' target='_self'>$r[name]</a></td>";
        echo "<td width='233' align='left' valign='bottom'><a href='http://www.tourfacts.dk/year/teamriders.php?aar=$aar&hold=$r[teamid]' class='link2' target='_self'>$r[teamname]</a></td>";
        echo "<td width='60' align='right' valign='bottom'>$r[tid]</td>";
        echo "</tr></table>";
        echo "</td></tr></table>";

}

På forhånd tak.
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 11:36 #1
er det ikke nemmest bare at lave en:

substr($r['teamname'],0,40);


Den tager $r['teamname'] og starter ved bogstav 0 og tager 40 bogstaver frem.
Avatar billede sevinding Juniormester
13. oktober 2010 - 12:25 #2
Det er meget muligt. Har prøvet at erstatte LEFT(te.name, 20)
med substr($r['teamname'],0,40); men det virker ikke. Kan du fortælle mig hvor substring skal indsættes?
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 12:38 #3
$res = mysql_query("SELECT

aa.navn AS navn,
aa.nummer AS nummer,
aa.year AS year,
aa.hold AS hold,
ec.id AS id,
ec.aar AS aar,
ec.placering AS placering,
ec.stage AS stage,
ec.rytter AS rytter,
ec.tid AS tid,
ec.length AS length,
ec.andet AS andet,
et.id AS etapeid,
et.number AS number,
et.afstand AS afstand,
et.types AS types,
t.flags AS flags,
t.id AS rytterid,
t.name AS name,
te.id AS teamid,
te.name AS teamname,
ty.id AS tyid,
ty.team AS team,

LEFT(te.name, 20)

FROM
    alleaar AS aa
    INNER JOIN
    turen AS t
ON
    ec.rytter = t.id
    INNER JOIN
    etapeclass AS ec
ON
    ec.rytter = t.id
    INNER JOIN
    etaper AS et
ON
    ec.stage = et.id

    INNER JOIN
    teams AS te
ON
    aa.hold = te.id

    INNER JOIN
    teamyear AS ty
ON
    ty.team = te.id

WHERE aa.year=$aar AND et.year=$aar AND aa.navn = t.id AND et.id=$id

GROUP BY
    t.id

ORDER BY ec.placering ASC

");



while($r = mysql_fetch_array($res)) {

        echo  "<table width='590' border='0' cellspacing='0' cellpadding='0'><tr><td  style='border-bottom:solid 1px #C2C2A6;'>";
      echo "<table border='0' cellspacing='0' cellpadding='2'><tr>";
        echo "<td width='25' align='right' valign='bottom'>$r[placering].</td>";
        echo "<td width='15' align='center' valign='bottom'><strong><font color='#FF0000'>$r[andet]</font></strong></td>";
        echo "<td width='20' align='left' valign='top'><img src=$r[flags] width='15' height='10' border=0></td>";
        echo "<td width='20' align='right' valign='top'>$r[nummer]</td>";
        echo "<td width='207' align='left' valign='bottom'><a href='http://www.tourfacts.dk/profilryttere.php?id=$r[rytterid]' class='link2' target='_self'>$r[name]</a></td>";
        echo "<td width='233' align='left' valign='bottom'><a href='http://www.tourfacts.dk/year/teamriders.php?aar=$aar&hold=$r[teamid]' class='link2' target='_self'>".substr(0,40,$r[teamname])."</a></td>";
        echo "<td width='60' align='right' valign='bottom'>$r[tid]</td>";
        echo "</tr></table>";
        echo "</td></tr></table>";

}
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 12:38 #4
Det burde virke.. i øvrigt burde du gøre sådan, at når du i en echo bruger en variabel gør du sådan her:


echo '<a href="'.$id.'">';

fremfor:

echo '<a href="$id">';
Avatar billede sevinding Juniormester
13. oktober 2010 - 13:46 #5
Tak. Har prøvet at kopiere scriptet ind på min side, men nu kommer der slet ikke noget teamname.
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 13:54 #6
sikkert mig der har lavet en fejl, 2 sek..
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 13:55 #7
Jeps - bytter altid rundt på faktorernes orden i den funktion :P

$res = mysql_query("SELECT

aa.navn AS navn,
aa.nummer AS nummer,
aa.year AS year,
aa.hold AS hold,
ec.id AS id,
ec.aar AS aar,
ec.placering AS placering,
ec.stage AS stage,
ec.rytter AS rytter,
ec.tid AS tid,
ec.length AS length,
ec.andet AS andet,
et.id AS etapeid,
et.number AS number,
et.afstand AS afstand,
et.types AS types,
t.flags AS flags,
t.id AS rytterid,
t.name AS name,
te.id AS teamid,
te.name AS teamname,
ty.id AS tyid,
ty.team AS team,

LEFT(te.name, 20)

FROM
    alleaar AS aa
    INNER JOIN
    turen AS t
ON
    ec.rytter = t.id
    INNER JOIN
    etapeclass AS ec
ON
    ec.rytter = t.id
    INNER JOIN
    etaper AS et
ON
    ec.stage = et.id

    INNER JOIN
    teams AS te
ON
    aa.hold = te.id

    INNER JOIN
    teamyear AS ty
ON
    ty.team = te.id

WHERE aa.year=$aar AND et.year=$aar AND aa.navn = t.id AND et.id=$id

GROUP BY
    t.id

ORDER BY ec.placering ASC

");



while($r = mysql_fetch_array($res)) {

        echo  "<table width='590' border='0' cellspacing='0' cellpadding='0'><tr><td  style='border-bottom:solid 1px #C2C2A6;'>";
      echo "<table border='0' cellspacing='0' cellpadding='2'><tr>";
        echo "<td width='25' align='right' valign='bottom'>$r[placering].</td>";
        echo "<td width='15' align='center' valign='bottom'><strong><font color='#FF0000'>$r[andet]</font></strong></td>";
        echo "<td width='20' align='left' valign='top'><img src=$r[flags] width='15' height='10' border=0></td>";
        echo "<td width='20' align='right' valign='top'>$r[nummer]</td>";
        echo "<td width='207' align='left' valign='bottom'><a href='http://www.tourfacts.dk/profilryttere.php?id=$r[rytterid]' class='link2' target='_self'>$r[name]</a></td>";
        echo "<td width='233' align='left' valign='bottom'><a href='http://www.tourfacts.dk/year/teamriders.php?aar=$aar&hold=$r[teamid]' class='link2' target='_self'>".substr($r['teamname'], 0, 40)."</a></td>";
        echo "<td width='60' align='right' valign='bottom'>$r[tid]</td>";
        echo "</tr></table>";
        echo "</td></tr></table>";

}
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 13:56 #8
I øvrigt vil jeg også råde dig til at skrive tingene med '' omkring.. altså:


$r['teamname']

istedet for:

$r[teamname]
Avatar billede sevinding Juniormester
13. oktober 2010 - 14:08 #9
Så sad sen lige i skabet. Lige 2 små spørgsmål mere.
Er det muligt at sætte to prikker efter teamname? Og hvad er fordelen ved at bruge $r['teamname']?
Tusind tak for hjælpen. Du må gerne smide et svar så du kan få det du rettelig har krav på.
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 14:19 #10
$r['teamname'] giver ikke en parse/fatal error i den nye PHP-version.. det gør $r[teamname] hvis du har slået fejlmeddelelserne til i php..

Og ja, det kan du da..

scriptet er nok bare sådan her:

$teamname = $r['teamname'];
if( strlen($teamname) > 40 )
{
$teamname = substr($teamname,0,40).'..';
}


Og det er indsat i din kode her:
-------------------------------


$res = mysql_query("SELECT

aa.navn AS navn,
aa.nummer AS nummer,
aa.year AS year,
aa.hold AS hold,
ec.id AS id,
ec.aar AS aar,
ec.placering AS placering,
ec.stage AS stage,
ec.rytter AS rytter,
ec.tid AS tid,
ec.length AS length,
ec.andet AS andet,
et.id AS etapeid,
et.number AS number,
et.afstand AS afstand,
et.types AS types,
t.flags AS flags,
t.id AS rytterid,
t.name AS name,
te.id AS teamid,
te.name AS teamname,
ty.id AS tyid,
ty.team AS team,

LEFT(te.name, 20)

FROM
    alleaar AS aa
    INNER JOIN
    turen AS t
ON
    ec.rytter = t.id
    INNER JOIN
    etapeclass AS ec
ON
    ec.rytter = t.id
    INNER JOIN
    etaper AS et
ON
    ec.stage = et.id

    INNER JOIN
    teams AS te
ON
    aa.hold = te.id

    INNER JOIN
    teamyear AS ty
ON
    ty.team = te.id

WHERE aa.year=$aar AND et.year=$aar AND aa.navn = t.id AND et.id=$id

GROUP BY
    t.id

ORDER BY ec.placering ASC

");



while($r = mysql_fetch_array($res)) {

$teamname = $r['teamname'];
if( strlen($teamname) > 40 )
{
$teamname = substr($teamname,0,40).'..';
}

        echo  "<table width='590' border='0' cellspacing='0' cellpadding='0'><tr><td  style='border-bottom:solid 1px #C2C2A6;'>";
      echo "<table border='0' cellspacing='0' cellpadding='2'><tr>";
        echo "<td width='25' align='right' valign='bottom'>$r[placering].</td>";
        echo "<td width='15' align='center' valign='bottom'><strong><font color='#FF0000'>$r[andet]</font></strong></td>";
        echo "<td width='20' align='left' valign='top'><img src=$r[flags] width='15' height='10' border=0></td>";
        echo "<td width='20' align='right' valign='top'>$r[nummer]</td>";
        echo "<td width='207' align='left' valign='bottom'><a href='http://www.tourfacts.dk/profilryttere.php?id=$r[rytterid]' class='link2' target='_self'>$r[name]</a></td>";
        echo "<td width='233' align='left' valign='bottom'><a href='http://www.tourfacts.dk/year/teamriders.php?aar=$aar&hold=$r[teamid]' class='link2' target='_self'>" . $teamname . "</a></td>";
        echo "<td width='60' align='right' valign='bottom'>$r[tid]</td>";
        echo "</tr></table>";
        echo "</td></tr></table>";

}
Avatar billede cronaldo Nybegynder
13. oktober 2010 - 14:19 #11
Nej, jeg behøver ikke point :o)
Det er fint for mig, at det virker, hehe.. :P
Avatar billede sevinding Juniormester
12. december 2010 - 04:08 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester