login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mysql substring (Opgelost)

Offline Stefan14 - 03/12/2008 01:55 (laatste wijziging 03/12/2008 01:56)
Avatar van Stefan14PHP gevorderde Ik wil met mysql een substring toepassen op een tekst, dit lijkt echter niet te werken aangezien de waarde van het veld niet getoond wordt, zodra ik de functie substring weghaal wordt de waarde wel getoond.

  1. <?php
  2. $query = "SELECT
  3. id,
  4. onderwerp,
  5. naam,
  6. SUBSTRING(bericht, 0, 100),
  7. status,
  8. DATE_FORMAT(datum, '%d-%m-%Y %H:%i') AS datumnl
  9. FROM
  10. tickets_berichten
  11. ORDER BY
  12. datum DESC";
  13. $result = mysql_query($query) or die (mysql_error());
  14.  
  15. echo '<td width="35%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$row['bericht'].'</a></td>';
  16. ?>

10 antwoorden

Gesponsorde links
Offline Diko - 03/12/2008 09:50
Avatar van Diko PHP interesse
  1. SELECT
  2. id,
  3. onderwerp,
  4. naam,
  5. SUBSTRING(bericht, 0, 100) AS eenalias,
  6. STATUS,
  7. DATE_FORMAT(datum, '%d-%m-%Y %H:%i') AS datumnl
  8. FROM
  9. tickets_berichten
  10. ORDER BY
  11. datum DESC


Dat komt omdat je wel een alias moet meegeven ;) Hierboven heb ik hem eenalias genoemd. Bij date_format heb je het wel goed gedaan.
Offline Kr4nKz1n - 03/12/2008 10:29
Avatar van Kr4nKz1n Onbekend Idd, want je geeft geen naam aan de waarde die je wilt ophalen.

Aangezien je geen normale bericht wilt weergeven is dit opzich handig. Maar op het moment dat je de verkorte versie (de eerste 100 tekens) en het normale bericht wilt ophalen, zou ik SubStr van PHP gebruiken. Maar dit ziet er nu goed uit.

Alhoewel mijn voorkeur op zich wel naar PHP uit gaat, zodat je een functie kunt schrijven die ook echt controleert of de waarde langer is dan 100 tekens, en deze afkapt en er bv. ... achter zet.
Offline Stefan14 - 03/12/2008 11:41 (laatste wijziging 03/12/2008 11:41)
Avatar van Stefan14 PHP gevorderde Ik had al diverse andere dingen geprobeerd waaronder inderdaad ook een alias meegeven, de kolom bericht tussen quotes zetten enz.
Onderstaande code heeft een alias, maar werkt vooralsnog toch niet. zodra ik substring weghaal, werkt hij perfect maar kort niet af.

Reden dat ik dit in mysql wil doen is omdat mysql dit soort dingen sneller kan afhandelen als php, en de site dus sneller blijft. Aangezien het een zwaar belaste site gaat worden probeer ik zo efficient mogelijk te scripten. Dat van die puntjes erachter is in dit geval niet nodig omdat dit een pagina wordt die alleen voor de beheerders zichtbaar is.


  1. <?php
  2. $query = "SELECT
  3. id,
  4. onderwerp,
  5. naam,
  6. SUBSTRING(bericht, 0, 100) AS berichtshort,
  7. status,
  8. DATE_FORMAT(datum, '%d-%m-%Y %H:%i') AS datumnl
  9. FROM
  10. tickets_berichten
  11. ORDER BY
  12. datum DESC";
  13. $result = mysql_query($query) or die (mysql_error());
  14.  
  15. echo '<td width="35%"><a href="?page=tickets_details&id='.$row['id'].'" style="text-decoration: none;">'.$row['berichtshort'].'</a></td>';
  16. ?>
Offline GeWa - 03/12/2008 20:49
Avatar van GeWa Nieuw lid Onvoorstelbaar.
Ik heb vandaag precies hetzelfde probleem.
Wanneer ik de query in phpmyadmin uitvoer.
Dan voert hij hem goed uit.
SELECT *, SUBSTRING(omschrijving, 0, 500) AS omschr FROM campers ORDER BY sort_id

ik krijg ook gewoon het kollometje omschr te zien. maar deze is ook leeg.
Offline Richard - 03/12/2008 20:58 (laatste wijziging 03/12/2008 21:01)
Avatar van Richard Crew algemeen Kijk eens in de handleiding:

http://dev.mysq...ion_substr
Citaat:
For all forms of SUBSTRING(), the position of the first character in the string from which the substring is to be extracted is reckoned as 1.

Begin dus met 1, en het zal werken. Beter nog is om de SQL-standaardvariant te gebruiken:
  1. SELECT SUBSTRING(veld FROM 1 FOR 500) AS omschrijving


Edit: je ziet het trouwens ook als je het uitvoer:
  1. SELECT SUBSTRING('blaat' FROM 1 FOR 3) AS veld
  2. UNION ALL
  3. SELECT SUBSTRING('blaat', 1, 3) AS veld
  4. UNION ALL
  5. SELECT SUBSTRING('blaat' FROM 0 FOR 3) AS veld
  6. UNION ALL
  7. SELECT SUBSTRING('blaat', 0, 3) AS veld


|veld|
------
|bla|
|bla|
||
||
Offline GeWa - 03/12/2008 21:32
Avatar van GeWa Nieuw lid Enorm bedankt het werkt nu idd.
Ik had nog niet op de mysql site gekeken. Alleen nog maar op andere forum's Sorry.
Offline Stefan14 - 04/12/2008 01:06
Avatar van Stefan14 PHP gevorderde Bedankt JeXuS, dat is inderdaad de oplossing.

Ik had daarentegen al wel op de mysql site gekeken, maar daar stonden ook voorbeelden die begonnen met 0, en dat ben je ook gewend van het werken met php, dus daar zocht ik het echt niet in.
Offline Richard - 04/12/2008 09:57
Avatar van Richard Crew algemeen Waar staan die voorbeelden dan?
Offline Stefan14 - 04/12/2008 10:54
Avatar van Stefan14 PHP gevorderde hier http://dev.mysq...ion_substr

Maar zie nu dat er toch geen voorbeeld met een 0 staat, maar zoals ik al zei, daar zocht ik het niet in aangezien het bij php wel zo moet.
Offline Richard - 04/12/2008 15:33
Avatar van Richard Crew algemeen Wijze les voor de volgende keer dus. ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s