Gå til innhold

[Løst] sende verdi til php script?


Anbefalte innlegg

Litt usikker på om denne burde i denne kategorien, eller php, inneholder begge deler..

 

Har her en fungerende autocomplete, men ønsker at resultatet også skal ta hensyn til hva som står i tekstboks med navn "kundenummer" når den søker, hvordan får jeg den verdien med over til php scriptet?

Koden er hentet fra en tutorial og endret litt, men har ekstremt liten kjennskap til javascript :(

<script type="text/javascript">

$(document).ready(function(){
var ac_config = {
	source: "demo_citiesB.php",
	select: function(event, ui){
		$("#nykontaktperson").val(ui.item.navn);
		$("#kontakttlf").val(ui.item.telefon);

	},
	minLength:1
};
$("#nykontaktperson").autocomplete(ac_config);
});
</script>

 

Php script ser jeg for meg at vil da se slik ut:

<?php

// Data could be pulled from a DB or other source
$con = mysql_connect("localhost",***","***");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db("torkrist_service", $con);


$kundenr = **kundenr hentet ifra tekstboks "kundenr" på siden med js**


$citiesint = array();
$result = mysql_query("SELECT navn, telefon FROM kundekontakter WHERE kundenr =$kundenr ",$con) or die (mysql_error());
 while( $row = mysql_fetch_assoc( $result ) ) {

$citiesint[] = $row;
}
$cities = $citiesint;


// Cleaning up the term
$term = trim(strip_tags($_GET['term']));

// Rudimentary search
$matches = array();
foreach($cities as $city){
if(stripos($city['navn'], $term) !== false){
	// Add the necessary "value" and "label" fields and append to result set
	$city['value'] = $city['navn'];
	$city['label'] = "{$city['navn']}, {$city['telefon']}";
	$matches[] = $city;
}
}

// Truncate, encode and return the results
$matches = array_slice($matches, 0, 5);
print json_encode($matches);

Endret av Actibus
Lenke til kommentar
Videoannonse
Annonse

PHP er et serverside-språk og du kan sende data til et PHP-skript via $_GET og $_POST samt ved litt småkakemagi men det er skittent og for viderekomne.

 

Som oftest så er $_GET-variabler enklest men dette er ikke en spesielt trygg form for kommunikasjon og du må passe på å vaske alt spesielt nøye når du tar i mot og behandler $_GET-variabler. En $_GET-variabel ligger i URI som for eksempel http://php.example.com/page.php?Page=Jalla&Paula=Brillant i skriptet page.php så har du nå tilgang til $_GET['Page'] og $_GET['Paula'] som inneholder henholdsvis 'Jalla' og 'Brillant'.

 

Når det gjelder $_POST-variabler så blir disse som oftest sendt i skjema av typen <FORM METHOD="POST" ACTION="http://php.example.com/page.php><INPUT TYPE="HIDDEN" NAME="Page" Value="Jalla"><INPUT TYPE ="TEXT" Name="Paula" Value="Brillant"><INPUT TYPE="SUBMIT"></FORM>. Når du trykker på submit så har page.php tilgang til $_POST['Page'] med verdien 'Jalla' og $_POST['Paula'] som inneholder 'Brillant' eller det som er skrevet i tekstboksen.

 

Håper det hjelper.

Lenke til kommentar

Script jeg har laget for å sjekke om et postnummer finnes i databasen. Kanskje du klarer å skjønne syntaxen utifra det. Merk at det er litt gammelt, så er litt feil med $this osv. pga. jeg ikke hadde lært meg det helt enda, men strukturen er OK.

 

HTML-input

<input type="text" name="regPostnr">
<input type="submit" value="Registrer" onclick="return sjekkRegInput()">

 

Javascript-biten (jQuery)

function sjekkRegInput()
{
   // henter input
   // sjekker om felter er satt osv., hvis OK, sjekker postnr vha. sjekkPostnr(pnrInput)
   // hvis false (se nedenfor) printer ut feilmelding
}

function sjekkPostnr(pnrInput)
{
   if(pnrInput != null)
   {
       $.ajax({
           url: 'php/sjekkPostNr_do.php',
           type: 'POST',
           async: false,
           data: ({
               pnr: pnrInput // $_POST['pnr'] = pnrInput, dvs. postnummer skrevet inn
           }),
           success: function(data) {
               result = data == "1"; // hvis data == "1", result = true
           }
       });
       return result; // return true = form går igjennom
   }
   return false; // true ikke returnert, dvs. submit går ikke igjennom
}

 

PHP-side som tar imot post og bruker klasse

<?php
   require("../classes/sjekkPostNr.php");

   $pnr = $_POST['pnr'];

   $sjekkPostNr = new SjekkPostNr($pnr);

   $sjekkPostNr->sjekkPostNr();
?>

 

PHP-klasse

<?php
   require("db_connect.php");

   class SjekkPostNr
   {
       private $pnr;
       private $db_connect, $db, $query, $result, $rows;

       public function __construct($pnr)
       {
           $this->pnr = $pnr;
           $this->db_connect = new DB_Connect();
           $this->db = $this->db_connect->getDB();
       }

       public function sjekkPostNr()
       {
           if($this->db != null)
           {
               $this->query = sprintf("SELECT Postnr, Poststed FROM WS_Post
                                       WHERE Postnr = '%s'",
                           $this->db->real_escape_string($this->pnr));

               $this->result = $this->db->query($this->query);

               if($this->result)
               {
                   $this->rows = $this->result->num_rows;

                   if($this->rows > 0)
                   {
                       echo "1";
                   }
                   else
                   {
                       echo "0";
                   }
               }
               else
               {
                   echo "0";
               }
           }
           else
           {
               echo "0";
           }
       }
   }
?>

Lenke til kommentar

Edit: Fikk ordnet det, fant ut at jeg kunne jo bare bruke samme stringen den allerede sendte over for å snevre inn søket.

 

Kan vel ikke bruke POST iogmed at jeg faktisk ikke sender inn skjemaet (form) før alt er utfylt, javascriptet brukes for å fylle ut felter i skjemaet før det sendes.

 

Den klarer jo å sende søkestringen min over til php scriptet, uten å laste inn siden på nytt, så burde jo være mulig å få den til å sende over en ting til til samme script?

Endret av Actibus
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...