webForumDet fria alternativet

subStr ?!

PHPur PHP

6 svar · 250 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Har en kod där jag ska kolla i mysqldatabasen i en om ordet jag ska spara finns med. Även delar av ordet ska kollar. Så om ordet ham finns i databasen och man skriver hamburgare så ska det säga till om det. Den kod jag har nu är:

  
<?$sql = "Select * From tabell Where namn='" . $_POST["name"] . "'";
$get = mysql_db_query($databas,$sql) or die(mysql_error());

if (mysql_affected_rows() != 0){
  while ($RS = mysql_fetch_array($get)){?>
    <?=$_POST["name"] ?> är ej tillåtet
  <?}
}else{?>
  Fortsätt
<?}?>
Medlem sedan apr. 2002830 inlägg
#2

Är inte helt säker, men du måste ju i sådana fall dela upp ordet hamburgare så att sql-frågan söker på följande:
h
ha
ham
hamb
hambu
hambur
hamburg
hamburga
hamburgar
hamburgare

Kanske finns något smartare sätt, vet inte..

// Nippe

Medlem sedan dec. 20011 860 inlägg
#3

Ingen aning! Jag är nybörjare på PHP så jag vet inte :/

Medlem sedan okt. 2001538 inlägg
#4

Man kan ju använda sig utav LIKE

SELECT * FROM tabell WHERE fält LIKE 'ham%';

Nu söker den igenom 'tabell' i fältet 'fält' efter alla ord som börjar med eller är lika med 'ham'

Good ,jaa?

MVH Patrik

//r:

Och sedan om jag läser igenom hela frågan ORDENTLIGT innan jag öppnar min käft så kanske jag kan bidra med något vettigt. Ledsen, mitt svar var ju inte alls vad du sökte efter... :(

MVH Patrik

Medlem sedan dec. 20011 860 inlägg
#5

Okej! Ska testa.

TIllägg:
Hehe, så kan det vara! :)

Medlem sedan okt. 2001538 inlägg
#6

Men vid en litet närmare eftertanke...
jag kanske kan var till nytta ändå... =)

Om du söker igenom databasen med min sqlrad, fast bara med första bokstaven i ordet, så kommer den ju att hitta alla förekomster av ord som börjar med 'h' (i detta exemplet)
Sedan kan du ju med en foreachloop kolla igenom om ditt ord finns i strängen som returnerats från mysql

typ:

$bokstav_1 = substr($_POST['name'],0,1);
$sql = "SELECT * FROM tabell WHERE namn LIKE '" . $bokstav_1 ."%'";

och sedan kolla av alla inlägg i arrayen med:

foreach ($RS as $chunk){
   if (stristr($chunk, $_POST['name'])){
       // i denna post från databasen fanns namnet i $_POST['name'], gör något...
   } else {
      // namnet i $_POST['name'] fanns inte i denna post... gör något annat
   }
}

typ... nu ehövs det ju lite mysql anslutningar och din while loop från första inlägget för att plocka ut alla rader.

Hoppas jag inte gjort det ännu virrigare nu ;)

MVH Patrik

// r:

Kanske skulle vara mer optimerat att använda strpos() istället för stristr, men detta var ju bara en tanke som man kan bygga vidare på, förhoppnignsvis =)

Medlem sedan dec. 20011 860 inlägg
#7

Okej, men jag får testa detta... Tack. Återkommer om det strular.

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