webForumDet fria alternativet

mellanslaget reggas inte

15 svar · 799 visningar · startad av bmw_m5

bmw_m5Medlem sedan sep. 200612 inlägg
#1

hej

Har ett annons script som jag fått, och ja kan inte så mkt på php,.. så om ni kunde förklara lite mera än vanligt skulle ja vara tacksam,.. skriptet använder databas mysql.

okey nu till frågan,.. när man lägger in en annons o ska skriva pris med mellanslag ex. 15 000 kr,.. så syns de bara 15 kr i annonsen.. hur kan man fixa till så att mellanslaget reggas..??.. skrivar man ex 15000 kr så syns de 15000 kr.

En till fråga,.. hur kan man begränsa begränsa visning av produkt informationen som syns när man listar alla annonser,.. asså när man söker så kommer alla annonser fram o lite information om varje annons,.. men nu vill ja inte att om personen skrivit en hel bok i sin information beteckning ska visa allt, för då förstörs tabell strukturen o designen,.. om man kunde begransä infot till 20 tecken elr nåt.. typ en mycket fin bord till salu,.. ska visas typ.. en mycket fin,.. sen inge mer.. ?? hoppas ni förstod.

Tacksam för era svar.

TheMagnusMedlem sedan juli 2006461 inlägg
#2

Ok, då har vi tre alternativ på första frågan. :)
1a: Plocka ut väsentlig kod så ska vi se vad det är som behöver fixas.
1b: Fråga personen du fick koden av.
1c: Ge oss hela skriptet om du inte vet vilken kod som är väsentlig.

2: Det finns en del exempel i forumet om du testar att söka lite. Annars fungerar det på följande sätt:

<?php
$text = 'Detta är en text som är för lång och som ska kortas av efter 20 tecken.';
$nytext = (strlen($text) > 20)? substr($text, 0, 20).'…': $text;
echo $nytext;
?>

Ett alternativ är annars att skriva ut ett visst antal ord istället, t.ex. 8 ord:

$text = 'Detta är en text som är för lång och som ska kortas av efter 8 ord.';
$wrds = explode(' ', $text);
if(count($wrds) > 8){
  $nytext = '';
  for($i = 0; $i < 8; $i++) {
    $nytext .= $wrds[$i].' ';
  }
  $nytext = $nytext.'…';
} else {
  $nytext = $text;
}
echo $nytext;
tronezMedlem sedan juli 2001728 inlägg
GislavedMedlem sedan nov. 20041 740 inlägg
#4

när man lägger in en annons o ska skriva pris med mellanslag ex. 15 000 kr,.. så syns de bara 15 kr i annonsen.. hur kan man fixa till så att mellanslaget reggas..??.. skrivar man ex 15000 kr så syns de 15000 kr.

Det låter som om du lagrar priset som ett heltal (int) i databasen. Antingen får du formatera om datumet innan du skickar det till databasen, eller så får du ändra i databasen så att du jobbar mot exempelvis ett varchar-fält, då kommer även andra tecken än siffror sparas.

bmw_m5Medlem sedan sep. 200612 inlägg
#5

tack för hjälpen TheMagnus, problem 2 är löst nu..:D

ska försöka skriva in koden här,..kör ett formulär i add.php.. som e kopplad till addaction.php

i add.php standard formulär
<input name="pris" type="text" id="pris">

och i addaction.php

<?php
$pris = $_POST["pris"];

$link = mysql_connect("xxx.xxx.se", "xxx", "xxx") or die("Could not connect: " . mysql_error());
mysql_select_db("xxx", $link);
mysql_query("INSERT INTO ad (
pris)
VALUES (
'$pris');");
$latestId = mysql_insert_id($link);
mysql_close($link);

tror de va den väsentlig koden.. va ska man bröva ändra för att fixa problemet..??

ps.. kolla i databasen o den verkar köra int

@ndersMedlem sedan juni 200032 969 inlägg
#6

En idé är att använda str_replace() för att göra sig av med mellanslagen.

bmw_m5Medlem sedan sep. 200612 inlägg
#7

@nders skrev:

En idé är att använda str_replace() för att göra sig av med mellanslagen.

vart ska man lägga in de i koden..??

TheMagnusMedlem sedan juli 2006461 inlägg
#8
<?php
$pris = str_replace(' ', '', $_POST['pris']);

$link = mysql_connect("xxx.xxx.se", "xxx", "xxx") or die("Could not connect: " . mysql_error());
mysql_select_db("xxx", $link);
mysql_query("INSERT INTO ad (pris) VALUES ('$pris');");
$latestId = mysql_insert_id($link);
?>

Läs mer om str_replace() här: http://www.php.net/str_replace

bmw_m5Medlem sedan sep. 200612 inlägg
#9

jag lagt in den nu

$pris = str_replace(' ', '', $_POST['pris']);

men den visar fortfarande samma som förrut,.. asså 15 o inte 15 000

kollar i databasen.. o där står de samma sak asså endast de som stod förre mellanslaget,..??
de står decimal(10,0) under typ på tabellen vid pris i databasen kan de bero på de..?.

GislavedMedlem sedan nov. 20041 740 inlägg
#10

Det där påverkar bara framtida poster i databasen, inte de befintliga.

bmw_m5Medlem sedan sep. 200612 inlägg
#11

mmm ja testar ju o lägga in test annonser o sen läser vad som blev skrivet i databasen,.. o de är samma sak.. vrf kan man inte skriva in i databasen med mellansag..??

@ndersMedlem sedan juni 200032 969 inlägg
#12

vrf kan man inte skriva in i databasen med mellansag..??

Om vrf betyder varför så är det helt enkelt så att det inte finns några tal med mellanslag, precis som det inte finns några heltal som börjar på noll. Heltal skrivs ex. 15000, decimaltal 15000.1 (alltid punkt när man pratar SQL).

bmw_m5Medlem sedan sep. 200612 inlägg
#13

ok.. men hur ska man gå till väga för att få ett tal med mellanslag i databasen..?
typ 15 000 kr.. istället för 15000 kr..??

PeddaMedlem sedan juni 20006 032 inlägg
#14

Som Gislaved redan har skrivit. Ändra databasfältet från int till varchar.

TheMagnusMedlem sedan juli 2006461 inlägg
#15

Ett mycket hett tips är att köra på int i databasen och istället formatera beloppet med number_format() vid utskrift istället.

bmw_m5Medlem sedan sep. 200612 inlägg
#16

testa det som gislaved om varchar-fältet.. o e fungerar bra nu..:D... tack för eran hjälp..!!

hur ska jag nu avsluta denna tråd som avklarad..??

129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)