webForumDet fria alternativet

subStr ?!

6 svar · 250 visningar · startad av Asa

AsaMedlem sedan dec. 20011 934 inlägg
#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
<?}?>
nkrantzMedlem sedan apr. 2002755 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

AsaMedlem sedan dec. 20011 934 inlägg
#3

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

Patrik81Medlem sedan okt. 2001537 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

AsaMedlem sedan dec. 20011 934 inlägg
#5

Okej! Ska testa.

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

Patrik81Medlem sedan okt. 2001537 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 =)

AsaMedlem sedan dec. 20011 934 inlägg
#7

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

Genererad på 390 ms · cache AV · v20260730165559-full.f96bc7eb