webForumDet fria alternativet

mellanslaget reggas inte

PHP

15 svar · 799 visningar · startad av bmw_m5

Medlem sedan sep. 200612 inlägg
Frågan#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.

Medlem 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;
Medlem sedan juli 2001728 inlägg
Medlem 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.

Medlem 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

Medlem sedan juni 200032 967 inlägg
#6

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

Medlem 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..??

Medlem 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

Medlem 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..?.

Medlem sedan nov. 20041 740 inlägg
#10

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

Medlem 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..??

Medlem sedan juni 200032 967 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).

Medlem 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..??

Medlem sedan juni 20006 031 inlägg
#14

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

Medlem 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.

Medlem 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..??

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)