2014-09-16, 16:18
  #1
Medlem
I HTML har jag en textruta där man ska kunna skriva in ett valfritt ord och sedan klicka på en sökknapp.
Man måste skriva in minst 4 bokstäver annars ska ett felmeddelande dyka upp där det står att man måste ange minst 4 tecken. Skriver man in "rätt" så ska texten dyka upp.

Jag får till htmlkoden men det strular som tusan i PHP:n.

Kod:
<?php
$text = $_POST["text"];

$text = "Här står hela den långa texten";

if(strlen($text) >= 4){
echo "$text";
}

else
{
echo "Skriv minst 4 tecken!";
}

?>

Kan någon se vad jag gör för fel?
Citera
2014-09-16, 16:33
  #2
Medlem
Diverges avatar
Vad är felet då?

Om det inte är det uppenbara att du skriver över $text direkt efter du tar ut det från $_POST dvs?
Altlså

$text = $_POST["text"];
$text2 = "Här står hela den långa texten";

if(strlen($text) >= 4){
echo $text2;
echo $text;

}
Citera
2014-09-16, 17:36
  #3
Medlem
Citat:
Ursprungligen postat av Diverge
Vad är felet då?

Om det inte är det uppenbara att du skriver över $text direkt efter du tar ut det från $_POST dvs?
Altlså

$text = $_POST["text"];
$text2 = "Här står hela den långa texten";

if(strlen($text) >= 4){
echo $text2;
echo $text;

}



Nu fungerade det med att få upp felmeddelandet, tackar!
Hur går jag tillväga för att få felmeddelande om man skriver in ett ord som inte finns i texten?
Citera
2014-09-16, 17:44
  #4
Medlem
Diverges avatar
Citat:
Ursprungligen postat av cannondale
Nu fungerade det med att få upp felmeddelandet, tackar!
Hur går jag tillväga för att få felmeddelande om man skriver in ett ord som inte finns i texten?

Hm. Du får nog förklara lite mer vad du försöker göra.
Tilläggas bör att det är betydligt trevligare att validera formulär med JavaScript och modernare också för den delen.
Citera
2014-09-16, 18:42
  #5
Medlem
Citat:
Ursprungligen postat av Diverge
Hm. Du får nog förklara lite mer vad du försöker göra.
Tilläggas bör att det är betydligt trevligare att validera formulär med JavaScript och modernare också för den delen.


Jag menar att om man skriver ett ord (eller en del av ett ord) i sökrutan som inte finns med i den färdiga texten så vill jag få upp ett felmeddelande där det står att order inte finns med i texten. Lite svårt att förklara.... :P
Alltså, om man skriver in mindre än 4 tecken så kommer felmeddelande upp att man behöver fler tecken i sökningen, söker man sedan på ett ord eller en del av ett ord (vilket som helst) så ska det ordet finnas med i den färdiga texten annars kommer ett nytt felmeddelande upp där det står att ordet saknas i texten.

Snöat in mig i PHP nu och vill lära mig lite mer
Citera
2014-09-16, 23:13
  #6
Medlem
Diverges avatar
Citat:
Ursprungligen postat av cannondale
Jag menar att om man skriver ett ord (eller en del av ett ord) i sökrutan som inte finns med i den färdiga texten så vill jag få upp ett felmeddelande där det står att order inte finns med i texten. Lite svårt att förklara.... :P
Alltså, om man skriver in mindre än 4 tecken så kommer felmeddelande upp att man behöver fler tecken i sökningen, söker man sedan på ett ord eller en del av ett ord (vilket som helst) så ska det ordet finnas med i den färdiga texten annars kommer ett nytt felmeddelande upp där det står att ordet saknas i texten.

Snöat in mig i PHP nu och vill lära mig lite mer


Ok, tror jag förstår.

Kör den här så kommer du nog klura ut hur det funkar tror jag.


--------x<-------------
<?php
$search= $_POST["text"];

$text = "Här skriver jag en text som innehåller ordet penis";

if(strlen($search) >= 4){
//Här skriver jag ut hela texten i $text om din query innehåller mer än 4 tecken.
echo "Din sökmatching: <i>$text</i></br></br>";
//Om din sökning finns i $text kommer den skrivas ut här i bold
if(strpos($text, $search)>1) {
echo str_replace($search, "<strong>$search</strong>", $text);
} else {
echo "Din sökning fanns inte att hitta i \$text";
}
}

//Och här då om strängen inte är längre än 4 tecken
else {
echo "Skriv minst 4 tecken!";
}

?>
------->x-----------------
Citera
2014-09-17, 11:39
  #7
Medlem
if(strpos($text, $search)>1) {

borde nog vara

if(strpos($text, $search) !== false) {

Från manualen
Citat:
Returns the position of where the needle exists relative to the beginning of the haystack string (independent of offset). Also note that string positions start at 0, and not 1.
Citera
2014-09-18, 13:26
  #8
Medlem
Diverges avatar
Citat:
Ursprungligen postat av AVGASBARN
if(strpos($text, $search)>1) {
borde nog vara
if(strpos($text, $search) !== false) {
Från manualen

Naturligtvis. Undrar varför jag skrev 1, brukar vanligtvis kolla från noll
Citera
2014-09-18, 18:59
  #9
Medlem
Citat:
Ursprungligen postat av Diverge
Naturligtvis. Undrar varför jag skrev 1, brukar vanligtvis kolla från noll
Returnerar den 0 är det fortfarande en träff. Du måste kolla med "typjämförelse" (tre likhetstecken) om den returnerar false. Så om du har kod som kollar > 0 så är det fel
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in