Avatar billede Mik2000 Professor
21. oktober 2013 - 01:59 Der er 3 kommentarer og
1 løsning

Rewrite og get

Hej

Jeg har brugt htaccess til rewrite (som jeg kun kan basic i)

Ser således ud
RewriteRule ^sider/(.+)/([0-9]+)/?$ sider.php?var1=$1&var2=$s2

Nu er mit problem bare at jeg har en formular til en søgefunktion, og derfor ønsker den bruger get/url.
Jeg har forskellige antal felter/parametre i forskellige forms der skal gå til samme side.

Kan jeg få den til at generere en URL med alle parametre fra felterne, hvor jeg stadig kan hente tingene med $_GET på sider.php (ligesom uden rewrite)

---------------------------------------

EKSEMPEL
Lad os sige jeg har 3 felter i en form og laver en søgning på
-----------------
FELT => SØGER_PÅ
-----------------
Soegeord => Kontakt
Kategori => Infosider
Dato => 31012013

Action i formularen er sat til /sider/soegning/123/
Det er de standard parametre jeg allerede har i min rewrite fil

Så vil jeg gerne have den laver en URL der ser sådan ud:
/sider/soegning/123/Kontakt/Infosider/31012013

Og at jeg på sider.php som den går til kan hente dem ved at skrive
$_GET["Soegeord"]
$_GET["Kategori"]
$_GET["Dato"]

Gerne så det fungerer variabelt, og dermed også virker hvis der er en anden form med 4 felter eller 5 felter (ligesom det vil gøre hvis man ikke bruge rewrite)

Håber du forstår det og kan hjælpe :) - Skriv endelig
På forhånd tak
Avatar billede Mik2000 Professor
24. oktober 2013 - 19:17 #1
Nogle der kan hjælpe?
Avatar billede Mik2000 Professor
29. oktober 2013 - 23:25 #2
??
Avatar billede Stickano Nybegynder
13. november 2013 - 19:25 #3
Hvis jeg forstår ret, burde nedenstående give dig lidt hints.

//PHP til når der trykkes OK
<?php
if(isset($_POST['ok'])){

//Tjek om field1 er tom
if(!empty($_POST['field1'])){ //Hvis den ikke er tom, giv den en værdi
  $field1 = "&field1=".$_POST['field1']; //Siger &field1 i tilfælde af der er flere felter udfyldt
}else{ //Hvis field1 er tom, efterlad den tom
  $field1 = NULL;
};

//Gentag den process for de andre 2 søgefelter

if(!empty($_POST['field2'])){
  $field2 = "&field2=".$_POST['field2'];
}else{
  $field2 = NULL;
};

if(!empty($_POST['field3'])){
  $field3 = "&field3=".$_POST['field3'];
}else{
  $field3 = NULL;
};

//Smid brugeren videre til den PHP side hvor den skal fange oplysningerne

//Er ikke sikker på om det her virker, plejer selv at gøre det på en lidt anden måde. Men her sender den videre til en ønsket side (hvor et php dokument bliver læst), og den fylder selv de forskellige værdier i, hvis de ikke er tomme.
header("location:www.dinside.dk/sider/soegning/123?".$field1."".$field2."".$field3."");

};

?>


//Din HTML formular
<form method="post" action="DenValgteFil.php">
Søgefelt 1 (Kontakt)<br />
<input type="text" name="field1" /><br />
Søgefelt 2 (Kategori)<br />
<input type="text" name="field2" /><br />
Søgefelt 3 (Dato)<br />
<input type="field3" name="field3" /><br />
<input type="submit" name="ok" value="Søg" />
</form>





//På den måde kan du hente værdierne på din /123 side, evt. noget i stil med;

$kontakt = NULL;
if(isset($_GET['field1'])){
$kontakt = $_GET['field1'];
};

//Så er værdien i din $kontakt variabel, det som brugeren søgte på i field1 (kontakt).
Avatar billede Mik2000 Professor
02. februar 2014 - 16:20 #4
Undskyld, havde slet ikke set der var kommet svar :(

Desværre ikke så meget, for det er ikke fordi jeg ikke kan hente fra en formular :). Problemer kom når man havde en omskrevet url så POST og get ikke sendes med.

Men fik det løst ved med JQUERY at sørge for den ikke sendte, og lod så JQUERY klare det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester