webForumDet fria alternativet

Hämta ut saker ur en databas utifrån värden ur textrutor på websida

PHP

2 svar · 608 visningar · startad av nigge

Medlem sedan feb. 2002199 inlägg
Frågan#1

Hej!

Hoppas att rubriken är någotsånär beskrivande
Jag vill göra följande:
på en webbsida så har jag två st inmatningsrutor
Där jag i den ena vill ange en avreseort och den andra en destination

sedan så har jag en databastabell (har bara en tabell för enkelhetens skull)
där varje rad har en avreseort, en destination och en vägbeskrivning.
Problemet jag har med koden(som postas nedan) är att jag bara kan ta in info från avresefältet och ta fram rader som har denna som avreseställe...
Det jag tror är fel är att jag bara kan "skicka en grej" till getXMLHttpRequest() som presenteras längst ner...

Tar tacksamt emot tips:)=
Det jag använder nu är:

JAVASCRIPTFILEN:

function startJS() {
    xhrequest = null;
    try {
    xhrequest = getXMLHttpRequest();
    }
    catch(error) {
    document.write("Cannot run Ajax code using this browser");
    }
    
    if(xhrequest != null) {
    // get form values
    var strDeparture = document.getElementById("strDeparture").value;
    var strUrl = "example18-2.php?strDeparture=" +strDeparture;
    

		
      xhrequest.onreadystatechange = changePage;
	  xhrequest.open("GET", strUrl, true);
      xhrequest.send(null);
      
    }
}

function changePage() {
    if (xhrequest.readyState == 4 && xhrequest.status == 200) {
        var strResponse = xhrequest.responseText; 
        document.getElementById("strRoute").innerHTML = strResponse;
    }
}

Sedan har jag min phpfil:

<?php
// File: example18-2.php
$strDeparture = $_GET["strDeparture"];

$dbRoute = mysql_connect("databasensnamn och lösenord etc") 
or die("Could not connect: " .mysql_error() );

mysql_select_db("databasensnamn", $dbRoute)
or die("Could not find database: " .mysql_error() );

	

$dbRecords = mysql_query("SELECT * FROM routes WHERE Departure='$strDeparture' ", $dbRoute)
    or die("Problem reading table: " . mysql_error());
    
$intRecords = mysql_num_rows($dbRecords);

if ($intRecords == 0)
	echo "<p>Stock Item '$strDeparture' Unknown.</p>";
else {
	while ($arrRecords = mysql_fetch_array($dbRecords)) {
		$strRoute = $arrRecords["Route"];
		$strArrival = $arrRecords["Arrival"];
		echo "<p>$strDeparture : $strRoute: $strArrival</p>";
	}
}
?>

Jag har även en fil som heter // getxmlhttprequest.js som jag misstänker kontrollerar det som matas in... jag TROR att det är denna som orsakar problem (jag har tagit ett exempel ur en bok som jag modifierar för att lära mig, därför har jag inte fullständig koll...

Den ser iaf ut såhär:

// getxmlhttprequest.js
function getXMLHttpRequest()
{
 var xhrequest = null;
 if(window.XMLHttpRequest)
 {
 // If IE7, Mozilla, Safari, etc: Use native object
  try
  {
   xhrequest = new XMLHttpRequest();
   return xhrequest;
  }
  catch(exception)
  {
  // OK, just carry on looking
  }
 }
 else
 {

  // ...otherwise, use the ActiveX control for IE5.x and IE6
   var IEControls = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"];
   for(var i=0; i<IEControls.length; i++)
   {
    try
    {
     xhrequest = new ActiveXObject(IEControls[i]);
     return xhrequest;
    }
    catch(exception)
    {
     // OK, just carry on looking
    }
   }
  // if we got here we didn’t find and matches
  throw new Error("Cannot create an XMLHttpRequest");
 }
}
Medlem sedan mars 2012121 inlägg
#2

Hej
Är inte så bra på detta heller men jag gör ett försök :)

Vilket resultat vill du ha? Att du skall kunna även få med destinationsorten i databasfrågan?

För den textrutan kan du ju också skicka via GET

function startJS() {
    xhrequest = null;
    try {
    xhrequest = getXMLHttpRequest();
    }
    catch(error) {
    document.write("Cannot run Ajax code using this browser");
    }
    
    if(xhrequest != null) {
    // get form values
    var strDeparture = document.getElementById("strDeparture").value;
    var strUrl = "example18-2.php?strDeparture="[B] +strDeparture+"&strDestination="+strDestination;[/B]    

		
      xhrequest.onreadystatechange = changePage;
	  xhrequest.open("GET", strUrl, true);
      xhrequest.send(null);
      
    }
}

function changePage() {
    if (xhrequest.readyState == 4 && xhrequest.status == 200) {
        var strResponse = xhrequest.responseText; 
        document.getElementById("strRoute").innerHTML = strResponse;
    }
}

Sedan är det bara att modifiera SQL frågan på samma sätt.
Är lite osäker på konkatineringen i JS dock

Lycka till

Medlem sedan feb. 2002199 inlägg
#3

Tusen tack! det fungerar alldeles utmärkt!

267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)