Zoekfunctie en resultaten posten naar textbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

14/04/2011 15:13:28
Quote Anchor link
He allemaal,

Ik probeer een zoekfunctie zo te maken waar een als een medewerker een naam van een project invult. Er wordt dan gekeken of er een rij bestaat met die naam in de tabel "customer". Vervolgens wil ik bepaalde records laten weergeven in een textbox die in diezelfde regel staan als de naam waar op gezocht wordt.

dit heb ik al:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Verkrijg de search variable uit de URL

  $var = @$_GET['search_value'];

// check for an empty string and display a message.Kijk of er een lege string is ingevuld en geef dan een melding weer.

   if ($var == "")
  {
    
  echo "<p>Please enter a search...</p>";
  exit;
  }


// Selecteer weer te geven velden uit dezelfde regel als waarnaar gezocht is.
$query = "SELECT  (project_name, maintenance_contract, software, hardware, project_ finished) FROM customer WHERE (project_name like \'%var%\')";
 $result= mysql_fetch_array($query);

?>


Is de functie die ik gebruik "mysql_fetch_array" wel juist?
En hoe kan ik succesvol de geselecteerde records laten zien in een textbox?

Topic verplaatst naar het juiste board.[/modedit]
Gewijzigd op 14/04/2011 17:37:20 door Joren de Wit
 
PHP hulp

PHP hulp

25/04/2024 00:22:26
 
Ozzie PHP

Ozzie PHP

14/04/2011 15:19:24
Quote Anchor link
Wat is nu eigenlijk specifiek je vraag? Gaat er iets mis... zo ja wat?


$var = @$_GET['search_value'];

Waarom het apenstaartje?
 

14/04/2011 15:20:22
Quote Anchor link
@ stond in het script waar in het van heb gehaald.

http://www.tutorialized.com/view/tutorial/PHP-MySQL-database-search/416

*Post bijgewerkt*
Gewijzigd op 14/04/2011 15:20:52 door
 
Wouter J

Wouter J

14/04/2011 15:31:35
Quote Anchor link
Met @ onderdruk je de fouten. Dit is geen goede manier van PHP schrijven. Je moet altijd de fouten netjes verwerken.
Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo $var; # $var bestaat niet dus dit geeft een error

@echo $var; # $var bestaat nog steeds niet, maar door de @ is er geen fout
?>

Goede manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($var))
{
# Als $var ingesteld is(is set)
  echo $var;
}

else
{ # Als $var niet bestaat
  echo 'De variabele <strong>var</strong> bestaat niet';
}

?>


Wat jij nu doet bij regel 15/16 is fout. Je zet de query in een string (dit is goed). Maar vervolgens moet je de query nog uitvoeren met mysql_query. Vervolgens kan je er een van de fetch methodes overheen gooien, waarvan ik zelf mysql_fetch_assoc zou gebruiken i.p.v. fetch_array. Dit is namelijk sneller.
 
Jack Sierkstra

Jack Sierkstra

14/04/2011 15:38:20
Quote Anchor link
Dan zou het er zo uit komen te zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// Verkrijg de search variable uit de URL

  $var = $_GET['search_value'];

// check for an empty string and display a message.Kijk of er een lege string is ingevuld en geef dan een melding weer.

   if ($var == "")
  {
    
  echo "<p>Please enter a search...</p>";
  exit;
  }


// Selecteer weer te geven velden uit dezelfde regel als waarnaar gezocht is.
$query = "SELECT  (project_name, maintenance_contract, software, hardware, project_ finished) FROM customer WHERE (project_name like \'%var%\')";

$mysql = mysql_query($query);

$result= mysql_fetch_assoc($mysql);

//waarbij je het resultaat natuurlijk tevoorschijn wilt toveren
//bijvoorbeeld

echo $result['0'];


?>
Gewijzigd op 14/04/2011 15:45:40 door Jack Sierkstra
 
Gerben Jacobs

Gerben Jacobs

14/04/2011 15:52:49
Quote Anchor link
Ook escape je de quotes bij je LIKE, maar dit is niet nodig, want je zit binnen dubbele quotes.
 
Wouter J

Wouter J

14/04/2011 15:57:50
Quote Anchor link
@jack, regel 8 kan beter gebruik worden gemaakt van empty. En je kan veel beter een while loop gebruiken bij fetch_assoc, om alle gegevens op te halen. Verder moeten intergers buiten quotes, aangezien het geen strings zijn, dus $result[0] i.p.v. $result['0']
 
Jack Sierkstra

Jack Sierkstra

14/04/2011 16:11:34
Quote Anchor link
@wouter,

== "" geeft hetzelfde resultaat als empty. En van het tonen van je gegevens heb ik er express comments bij gedaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
//waarbij je het resultaat natuurlijk tevoorschijn wilt toveren
//bijvoorbeeld

echo $result['0'];
?>


Laatste punt heb je helemaal gelijk in.
 

14/04/2011 16:45:09
Quote Anchor link
Ik heb hulp gehad van een klasgenoot van mij:

hier het script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<
html>
<
head>
       <
title>Search Results</title>
<
/head>
<
body>
<
center>
<
h2>Search results</h2>
<
body background="../background.jpg">

<
hr>
<
/center>
[
code]<?php

// verbind met de database-server en kies database
   include("../connect.php");
  
// de doorgegeven POST-variabele ophalen
   $zoekwoord = $_POST["zoekwoord"];
  
   echo "<center>";
   echo "Gezocht naar <b>".$zoekwoord." </b>.";

// zoek in de kolom 'omschrijving' (heeft FULLTEXT-index)
   $result = mysql_query("SELECT * FROM customer WHERE
   project_name REGEXP '$zoekwoord' ORDER BY company_name ASC"
) or die(mysql_error());
  
   $aantal_rijen = mysql_num_rows($result);
   if ($aantal_rijen > 0)
   {

      echo " # gevonden: <b>".$aantal_rijen."</b>";
      echo "<hr></center>";
      
      for ($i = 0; $i < $aantal_rijen; $i++)
      {

          $projectname = mysql_result($result, $i, 'project_name');
          $maintenance = mysql_result($result, $i, 'maintenance_contract');
          $software = mysql_result($result, $i, 'software');
          $hardware = mysql_result($result, $i, 'hardware');
          $projectf = mysql_result($result, $i, 'project_finished');
          
          // en afbeelden...
          echo "<b>Project name:</b> ".$projectname." <br> ";
          echo " <b>Maintenance contract:</b> ".$maintenance." <br> ";
          echo " <b>Software:</b> ".$software."<br>";
          echo " <b>Hardware:</b> ".$hardware."<br>";
          echo " <b>Project finished:</b> ".$projectf."<br>";
          
      }
// $i-de rij is afgehandeld
  } // next rij (if aantal_rijen groter dan 0)
  else
  {
?>

      echo " - niets gevonden</center>";
  }
Gewijzigd op 14/04/2011 16:46:43 door
 
Gerben Jacobs

Gerben Jacobs

14/04/2011 16:51:20
Quote Anchor link
Qua performance kan je beter mysql_fetch_assoc gebruiken dan mysql_result in je for-loop.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.