Avatar billede blackscorpion Nybegynder
23. september 2004 - 16:25 Der er 12 kommentarer og
1 løsning

parse en request.

Hej Eksperter. :)

Hvordan parser jeg informationerne igennem fra en Request?

altså, jeg har en form, hvor der er en masse oplysninger der bliver sendt til et script.

Nu har jeg brug for at gennemgå de informationer, for at få felt navn, og felt data, og det ved jeg at jeg kan få via request, spørgsmålet er bare hvordan?
Avatar billede jakobclausen Nybegynder
23. september 2004 - 16:30 #1
$_REQUEST['navn'];
$_REQUEST['data'];
Avatar billede blackscorpion Nybegynder
23. september 2004 - 16:35 #2
netop for at slippe for at skulle lave alt det manuelt, så er jeg doven, og vil gerne have den til at parse tingene igennem på samme måde som dette script gør med MySQL:

------------------------------------------------------
$felt = array();
for($i = 0; $i < mysql_num_fields($q); $i++) {
  $felt[] = mysql_field_name($q ,$i);
}

$sql = "UPDATE $mysql_db_table SET ";
for($i = 0; $i < count($felt); $i++) {
  $sql .= "$felt[$i] = '" . $_POST{$felt[$i]} . "' ";
  if($i != (count($felt)-1)) {
        $sql .= ", ";
    }
}
$sql .= " WHERE id = '".$_POST['id']."'";
------------------------------------------------------
Avatar billede blackscorpion Nybegynder
23. september 2004 - 16:36 #3
dvs, at hvis jeg senere vælger at tilføje 13 nye felter, så perser den dem bare igennem, da den er ligeglad med hvor meget data den får ind fra formen...
Avatar billede blackscorpion Nybegynder
23. september 2004 - 16:37 #4
parser even...
Avatar billede blackscorpion Nybegynder
23. september 2004 - 16:41 #5
det eneste jeg har kunne finde i den formmail jeg bruger nu er dette:

function parse_form($array, $sort = "") {
  // build reserved keyword array
  $reserved_keys[] = "MAX_FILE_SIZE";
  $reserved_keys[] = "required";
  $reserved_keys[] = "redirect";
  $reserved_keys[] = "require";
  $reserved_keys[] = "path_to_file";
  $reserved_keys[] = "recipient";
  $reserved_keys[] = "subject";
  $reserved_keys[] = "sort";
  $reserved_keys[] = "style_sheet";
  $reserved_keys[] = "bgcolor";
  $reserved_keys[] = "text_color";
  $reserved_keys[] = "link_color";
  $reserved_keys[] = "vlink_color";
  $reserved_keys[] = "alink_color";
  $reserved_keys[] = "title";
  $reserved_keys[] = "missing_fields_redirect";
  $reserved_keys[] = "env_report";
  $reserved_keys[] = "submit";
  if (count($array)) {
      if (is_array($sort)) {
        foreach ($sort as $field) {
            $reserved_violation = 0;
            for ($ri=0; $ri<count($reserved_keys); $ri++)
              if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1;

            if ($reserved_violation != 1) {
              if (is_array($array[$field])) {
                  for ($z=0;$z<count($array[$field]);$z++)
                    $content .= $field.SEPARATOR.$array[$field][$z].NEWLINE;
              } else
                  $content .= $field.SEPARATOR.$array[$field].NEWLINE;
            }
        }
      }
      while (list($key, $val) = each($array)) {
        $reserved_violation = 0;
        for ($ri=0; $ri<count($reserved_keys); $ri++)
            if ($key == $reserved_keys[$ri]) $reserved_violation = 1;

        for ($ri=0; $ri<count($sort); $ri++)
            if ($key == $sort[$ri]) $reserved_violation = 1;

        // prepare content
        if ($reserved_violation != 1) {
            if (is_array($val)) {
              for ($z=0;$z<count($val);$z++)
                  $content .= $key.SEPARATOR.$val[$z].NEWLINE;
            } else
              $content .= $key.SEPARATOR.$val.NEWLINE;
        }
      }
  }
  return $content;
}

og den bliver kaldt ved:  $content = parse_form($HTTP_POST_VARS, $sort);

burde det ikke kunne gøre det jeg har brug for?
Avatar billede detox Nybegynder
23. september 2004 - 17:08 #6
Du kan løbe igennem $_REQUEST arrayet sådan:

foreach($_REQUEST as $key=>$val) {
  echo "$key = $val<br />";
}
Avatar billede blackscorpion Nybegynder
23. september 2004 - 17:20 #7
ja fandt jeg ud af, sidder og nusler med det andet script nu... damn. :(

kan være at jeg starter helt forfra med den du lige smed.
Avatar billede blackscorpion Nybegynder
23. september 2004 - 18:01 #8
hvorfor pokker virker dette ikke??

function check_required_fields() {
$n = 1;
$field_name = "";

foreach($_REQUEST as $key=>$val) {
  $field_name .= $mysql_field_names[$n] . "<br \>\n";
  $n++;
}

return $field_name;
}
Avatar billede detox Nybegynder
23. september 2004 - 18:23 #9
Den kan ikke bruge: $mysql_field_names. Skal den bruges i en funktion skal du gøre den global i funktionen:

function check_required_fields() {
global $mysql_field_names;

eller overføres i kaldet:
function check_required_fields($mysql_field_names) {
Avatar billede blackscorpion Nybegynder
23. september 2004 - 18:31 #10
ja det fandt jeg ud af, smid lige et svar, så får du dine point, men jeg holder nok dette spm, åbent, da jeg muligvis nok får brug for mere hjælp, så kig ind engang imellem, så er du flink. :)
Avatar billede detox Nybegynder
23. september 2004 - 23:37 #11
Bare i orden. Jeg prøver at følge lidt med ;o)
Avatar billede blackscorpion Nybegynder
24. september 2004 - 15:01 #12
Takker. ;)
Avatar billede blackscorpion Nybegynder
24. september 2004 - 15:11 #13
bliver nødt til at smide her over på dette spm istedet for. :P

http://eksperten.dk/spm/542683
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