vagannMedlem sedan juli 2011171 inlägg tja , jag har gjort snabbsökning function...när jag söker så gå sidan till search.php sen visar den resultatet , hur gör jag för att skipa att sidan går till search.php och visa resultatet direkt efter sökninge ?
det har jag i body.php:
<form action="page.php?name=search" method="post">
<input type="hidden" name="search" value="seach" />
Sök efter:<br />
<input type="text" name="username" />
<br /><br />
<input type="submit" value="SÖK" />
</form>
här är search.php
if (isset($_POST['search']))
{
$username = mysql_real_escape_string($_POST['username']);
$sql = mysql_query("SELECT `id`, `username`, `picture` FROM `members` WHERE `username` LIKE '%". $username ."%'") or die(mysql_error());
if (mysql_num_rows($sql) == 0)
{
echo '<br /><br /><br />';
echo 'Sökningen gav ingen träff.';
}
else
{
while ( $info = mysql_fetch_array ( $sql ))
{
if (mysql_num_rows($sql) == 1)
{ echo "<script type='text/javascript'> document.location = 'page.php?name=profile&id=". $info['id'] ."';</script>"; }
vad är det som gör att funktion sänder mig till search.php innan den visat resultatet ?
stattinMedlem sedan jan. 2005713 inlägg Du måste lägga scriptet på samma sida högst upp men förmodligen krävs det lite modifikation eller så kan du använda dig av ajax.
vagannMedlem sedan juli 2011171 inlägg hur göra man med ajax? e det svårt ? behövs det många koder ?
vagannMedlem sedan juli 2011171 inlägg jag la till en del av search funktion , kan vara snäll och visa vad som gör att sidan går till search.php innan den visar resultatet?
stattinMedlem sedan jan. 2005713 inlägg Sätt hela sökscriptet längst upp i body.php, ovanför HTML taggen och allt annat:
$result = "";
if (isset($_POST['search']))
{
$username = mysql_real_escape_string($_POST['username']);
$sql = mysql_query("SELECT `id`, `username`, `picture` FROM `members` WHERE `username` LIKE '%". $username ."%'") or die(mysql_error());
if (mysql_num_rows($sql) == 0)
{
$result = "<br /><br /><br />Sökningen gav ingen träff.";
}
else
{
while ( $info = mysql_fetch_array ( $sql ))
{
if (mysql_num_rows($sql) == 1)
{ $result = "<script type='text/javascript'> document.location = 'page.php?name=profile&id=". $info['id'] ."';</script>"; }
action ändrar vi till body.php
<form action="body.php" method="post">
<input type="hidden" name="search" value="seach" />
Sök efter:<br />
<input type="text" name="username" />
<br /><br />
<input type="submit" value="SÖK" />
</form>
<br>
Resultat:
<br>
<?php echo $result; ?>
Bara ett exempel på hur du kan göra.
vagannMedlem sedan juli 2011171 inlägg tack stattin det funkade, men finns det ingen finare/renare lösning?
stattinMedlem sedan jan. 2005713 inlägg Ska du ha ut resultat på samma sida som formuläret så är det på det viset, du kan ju slänga sök scriptet i en fil för sig.
<?php include("search.php"); ?>
..Resten av sidan..
Annar är det ju ajax då men då ska du hämtar resultatet med javascript, det snygga med det är att man aldrig laddar om sidan.
Ajax: först och främst ladda hem jquery på jquery.com
Tryck på download och kopiera den text som kommer upp, lägg detta i en js fil.
exempel: jquery.js
Sen tog jag ett exempel bara från jquery.com som jag antar funkar.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<form action="search.php" id="searchForm">
<input type="text" name="username" placeholder="Search..." />
<input type="submit" value="Search" />
</form>
<!-- the result of the search will be rendered inside this div -->
<div id="result"></div>
<script type="text/javascript">
/* attach a submit handler to the form */
$("#searchForm").submit(function(event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $( this ),
term = $form.find( 'input[name="username"]' ).val(),
url = $form.attr( 'action' );
/* Send the data using post and put the results in a div */
$.post( url, { s: term },
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).empty().append( content );
}
);
});
</script>
</body>
</html>
När man skickar data med ajax så får man tillbaka allt som php sidan matar ut, dvs ehco.
vagannMedlem sedan juli 2011171 inlägg jag gjorde som du sa men det funkade inte helt o hållet , söker jag på admin så blir länken "...page.php?username=admin" och stannar på sidan som man var på ... jag tror att det är denna delen av koden är fel :
term = $form.find( 'input[name="username"]' ).val(),
när jag går in i nåns annans profile så visar länken "../page.php?name=profile&id=3" så tänkte om vi kanske borde ha
term = $form.find( 'input[name="name=profile&id="]' ).val(),
samt lägga in php koden
$info['id']
..... Går det ens att sätta php koder i en jquery script :)?
stattinMedlem sedan jan. 2005713 inlägg Nä det går inte att köra php koder i jquery.
jquery är javascript och det körs på klienten, php körs på servern.
Och bara för att du ser en massa dollar tecken så har det inte att göra med PHP.
Jag är inte så haj på jquery så.
Men lite fel blev det ju så vi ändrar lite:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<form action="page.php" method="post">
<input type="hidden" name="search" value="seach" />
Sök efter:<br />
<input type="text" name="username" />
<br /><br />
<input type="submit" value="SÖK" />
</form>
<!-- the result of the search will be rendered inside this div -->
<div id="result"></div>
<script type="text/javascript">
/* attach a submit handler to the form */
$("#searchForm").submit(function(event) {
/* stop form from submitting normally */
event.preventDefault();
/* get some values from elements on the page: */
var $form = $( this ),
term = $form.find( 'input[name="username"]' ).val(),
search = $form.find( 'input[name="search"]' ).val(),
url = $form.attr( 'action' );
/* Send the data using post and put the results in a div */
$.post( url, { username: term, search: search },
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).empty().append( content );
}
);
});
</script>
</body>
</html>
Det är ju lite upp till dig också att lära sig, läs på om jquery, ajax och lär dig hur man kan använda det tillsammans med formulär, php och hur och när man får tillbaka data.
Ett exempel:
en_php_fil.php
<?php
if(isset($_POST["set"]))
{
echo $_POST["set"];
echo " ";
echo $_POST["and"];
echo "!";
}
?>
en_html_fil.php
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<div id="skriv_ut"></div>
<button>Click me</button>
<script type="text/javascript" src="jquery.js">
$("button").click(function(){
$.post("en_php_fil.php", { set: "hello", and:"world" }, function(det_man_far_tillbaka){
$("#skriv_ut").html(det_man_far_tillbaka);
});
});
</script>
</body>
</html>
vagannMedlem sedan juli 2011171 inlägg faan !!! fortfarande samma problem , har gett upp... :/
stattinMedlem sedan jan. 2005713 inlägg Vad är meningen med ditt sök script?
Du söker på en medlem, får du en träff så skickas man till dennes profil direkt.
<?php
$result = "";
if (isset($_POST['search']))
{
$username = mysql_real_escape_string($_POST['username']);
$sql = mysql_query("SELECT `id`, `username`, `picture` FROM `members` WHERE `username` LIKE '%". $username ."%'") or die(mysql_error());
if (mysql_num_rows($sql) == 0)
{
$result = "Ingen träff";
}
else
{
while ( $info = mysql_fetch_array ( $sql ))
{
if (mysql_num_rows($sql) == 1)
{
//Kör med header här istället för att skriva ut document.location med javascript.
header('Location: page.php?name=profile&id='. $info['id']);
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="page.php" method="post">
<input type="hidden" name="search" value="seach" />
Sök efter:
<br />
<input type="text" name="username" />
<br /><br />
<input type="submit" value="SÖK" />
<br>
<?php echo $result; ?>
</form>
</body>
</html>
vagannMedlem sedan juli 2011171 inlägg
stattin skrev:
Vad är meningen med ditt sök script?
Du söker på en medlem, får du en träff så skickas man till dennes profil direkt.
<?php
$result = "";
if (isset($_POST['search']))
{
$username = mysql_real_escape_string($_POST['username']);
$sql = mysql_query("SELECT `id`, `username`, `picture` FROM `members` WHERE `username` LIKE '%". $username ."%'") or die(mysql_error());
if (mysql_num_rows($sql) == 0)
{
$result = "Ingen träff";
}
else
{
while ( $info = mysql_fetch_array ( $sql ))
{
if (mysql_num_rows($sql) == 1)
{
//Kör med header här istället för att skriva ut document.location med javascript.
header('Location: page.php?name=profile&id='. $info['id']);
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="page.php" method="post">
<input type="hidden" name="search" value="seach" />
Sök efter:
<br />
<input type="text" name="username" />
<br /><br />
<input type="submit" value="SÖK" />
<br>
<?php echo $result; ?>
</form>
</body>
</html>
asså detta vara endast en del av scripten , menningen var att om man får en träff så går man till profilen direkt... får man flera än en träff så går man till search.php och visar alla personer... denna scripten är i search.php.
det jag tänkte göra var en lite genväg (snabb sökning), får man träff då går man till profilen får man flera träffar eller inga så går man till search.php som är en mer avancerad sökning. btw TACK SÅ MYCKET !!!! är väldigt tacksam för din hjälp
Skippa jQuery. Det är overkill om du nu bara är ute efter XmlHttpRequest-objektet. Det kan du skapa helt själv istället.
Kolla exempelvis denna länken:
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Detta är vad du vill göra:
1. Du vill ha en PHP-funktion/metod som söker i din SQL-databas och returnerar ett resultat
2. Du vill ha en Javasript-funktion/metod som tar hand om resultatet som din PHP-funktion returnerar (jag rekommenderar att du använder JSON för detta)
Du behöver alltså skapa en PHP-fil med en funktion för sökning, vilket du har en bra början på.
Sedan behöver du skapa en Javascriptfunktion för sökningen som du kopplar via XmlHttpRequest till din PHP-funktion, och som uppdaterar en del av din HTML DOM:
// Javascriptfunktion för att söka
function perform_search(searchword) {
// XmlHttpRequest-objektet skall kallas här...
document.getElementById('foobar').innerHTML = xhr.responseText;
}
<input id="searchstring" onkeyup="perform_search(this.value)" />
Osv osv...
Väldigt enkelt! Och du behöver defintivt inte använda jQuery för detta ändamål. jQuery är ett stort ramverk som är byggt i Javascript. Det underlättar för oss utvecklare och är ett sätt att standardisera utveckling. Men i ditt fall rekommenderar jag dig att testa XmlHttpRequest-objektet DIREKT, utan att använda jQuery - då kommer du enklare lära dig hur saker och ting fungerar med det s.k. "AJAX" (Asynchronous Javascript And XML) innan du grottar ner dig i ett ramverk som du nu för tillfället ej behöver.