Query in PHP maar dan kijken in kolomen

Status
Niet open voor verdere reacties.

richard5000

Gebruiker
Lid geworden
24 mrt 2012
Berichten
161
In mijn PHP bestand heb ik een onderstaande query staan met een search button en invulveld.

mysql_select_db("testdatabase",$con);

$result = mysql_query("SELECT * FROM testtabel");

while ($row = mysql_fetch_array($result)) {

Op zich werkt deze goed, maar pakt alles en ik wil wel alle rijen zien, maar zou eigenlijk willen dat hij keek in bv kolom 1 en kolom en dan van dat resultaat de rijen laat zien en de rest uiteraard niet.

Of kan je ok twee search velden erin zetten..?

Hoor graag een oplossing, alvast bedankt!

Groet
 
Je vraag is niet heel duidelijk. Bedoel je dat je alleen de rijen wilt zien waarbij de waarde van een kolom aan een bepaalde voorwaarde voldoet? Dat kan met WHERE
[sql]SELECT * FROM testtabel WHERE kolomnaam = 'een waarde'[/sql]
Als je dit voor meerdere kolommen wilt kan dat met AND
[sql]SELECT * FROM testtabel WHERE kolomnaam = 'een waarde' AND andere_kolomnaam = 'een andere waarde'[/sql]
 
Hoi, sorry dat het wat onduidelijk is, maar ik bedoel niet een 'een waarde' maar dat hij voor de query alleen maar in die twee kolommen kijkt (bv 1 & 3) en dat hij de rijen laat zien die voldoen aan de zoekopdracht, dus als ik in het search veld intoets 82034 of test dat hij dan alle rijen weergeeft waar deze getallen en/of tekst in voorkomt.

Nu met een * zoekt hij in alle kolommen en ik wil aangeven dat hij alle waarde mag zoeken, maar dan alleen in die twee kolommen.

Ook zou ik nog een search veld ernaast willen hebben (liefst 3 x 1 x voor alles, 1 x voor artikelnummer en 1 x voor typeomschrijving.) die dan weer in andere twee kolommen kijkt, het gaat namelijk om zoeken op artikelnummer of type omschrijving.

Mag ook met een puldown menu onder of boven de search veld, waar men dan eerst aangeeft bv All, Artikelnummer of type, maar weet niet of dit kan..?

Zal hieronder mijn hele PHP file neerzetten:

PHP:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>TJou Pagina naam</title>
        <style type="text/css">
		/*----------Text Styles----------*/
		.ws12 {font-size: 16px;}
		.wpmd {font-size: 13px;font-family: 'Arial';font-style: normal;font-weight: normal;}
		/*----------Para Styles----------*/
		DIV,UL,OL /* Left */
		{
		margin-top: 0px;
		margin-bottom: 0px;
		}
		TABLE
		{ border- collapse: separate; border-spacing: 10px 3px;}
		{ text-allign: center }
        </style>
            
            
		<script language="javascript" type="text/javascript">
        //define the table search as an object, which can implement both functions and properties
        window.tableSearch = {};
 
        //initialize the search, setup the current object
        tableSearch.init = function() {
            //define the properties I want on the tableSearch object
            this.Rows = document.getElementById('data').getElementsByTagName('TR');
            this.RowsLength = tableSearch.Rows.length;
            this.RowsText = [];
            
            //loop through the table and add the data to
            for (var i = 0; i < tableSearch.RowsLength; i++) {
                this.RowsText[i] = (tableSearch.Rows[i].innerText) ? tableSearch.Rows[i].innerText.toUpperCase() : tableSearch.Rows[i].textContent.toUpperCase();
            }
        }
 
        //onlys shows the relevant rows as determined by the search string
        tableSearch.runSearch = function() {
            //get the search term
            this.Term = document.getElementById('textBoxSearch').value.toUpperCase();
            
            //loop through the rows and hide rows that do not match the search query
            for (var i = 0, row; row = this.Rows[i], rowText = this.RowsText[i]; i++) {
                row.style.display = ((rowText.indexOf(this.Term) != -1) || this.Term === '') ? '' : 'none';
            }
        }
 
        //runs the search
        tableSearch.search = function(e) {
            //checks if the user pressed the enter key, and if they did then run the search
            var keycode;
            if (window.event) { keycode = window.event.keyCode; }
            else if (e) { keycode = e.which; }
            else { return false; }
            if (keycode == 13) {
                tableSearch.runSearch();
            }
            else { return false; }
        }
		</script>
            
    </head>
 
<body onload="tableSearch.init();">
<div id="table" style="position:absolute; overflow:hidden; left:45px; top:50px; width:960px; height:300px; z-inde	x:0">
    <table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
			<td>
			<input type="text" size="25" maxlength="1000" value="" id="textBoxSearch" onkeyup="tableSearch.search(event);" />
			<input type="button" value="Search" onclick="tableSearch.runSearch();" />
			</td>
        </tr>
    </tbody>
</table>
        
<div class="wpmd">
<div id="table" style="position:absolute; overflow:hidden; left:5px; top:50px; width:960px; height:300px; z-inde	x:0">
<table border="0" >
        
<tr valign=top>
        <td width=132 bgcolor="#FF0000">
            <div align=center><font color="#FFFFFF" class="ws12"><B>Art.Nr.</B></font></div>
            </div>
            </td>
 
        <td width=126 bgcolor="#FF0000">
            <div align=center><font color="#FFFFFF" class="ws12"><B>Type</B></font></div>
            </div>
            </td>
                
            <td width=31>
            </td>
                
        <td width=124 bgcolor="#0000FF">
            <div align=center><font color="#FFFFFF" class="ws12"><B>Art.Nr.</B></font></div>
            </div>
            </td>
            
        <td width=137 bgcolor="#0000FF">
            <div align=center><font color="#FFFFFF" class="ws12"><B>Type</B></font></div>
            </div>
            </td>
</tr>
 
<tbody id="data">
        <?php
        $con = mysql_connect('localhost','Username','Password');
        if (!$con) {
            die('Could not connect: ' . mysql_error());
        }
 
        mysql_select_db("testdatabase",$con);
 
        $result = mysql_query("SELECT * FROM testtabel");
 
        while ($row = mysql_fetch_array($result)) {
        ?>
        
        <tr>
            <td STYLE="text-align: center;"> <?php echo $row['naam']; ?></td>
			<td><?php echo $row['woonplaats']; ?></td>
			<td width=31></td>
			<td STYLE="text-align: center;"> <?php echo $row['naam2']; ?></td>
			<td><?php echo $row['woonplaats2']; ?></td>
        </tr>
        
        <?php 
        }
        
mysql_close($con);
        ?>
        </tbody>
        </table>
        </div>
    </body>
</html>
 
Laatst bewerkt:
Ik snap ook niet wat je bedoelt.

Mijn advies is om met een simpel project te beginnen. Hierdoorraak je dan een beetje bekent met php,sql en js.
Het php gedeelte is waar je je connectie maakt met je db. Hier lees je met je sql query (SELECT...) de gegevens uit. SELECT * betekent selecteer alle kolommen uit de tal die aan de voorwaarde voldoet. Je stelt geen voorwaarde in de query want er staat geen where dus hij geeft als resultat de hele tabel.

Het js gedeelte staat in de he ad van je html pagina. Deze verbergt waardes uit je php tabel als ze niet aan de voorwaarde in je TB voldoen.
Je php query wordt dus maar 1 keer uitgevoerd.
 
SELECT * is in jouw geval niet van toepassing, dit maakt voor jouw resultaat niets uit.
Je heeft aan dat je een zoekfunctie wilt maken dit doe je met de LIKE functie.
Het is toegestaan om de zo genoemde wildcards te gebruiken (%, _, [charlist], [^singlechar]).

Code:
SELECT * FROM `tabelnaam` WHERE `kolomnaam` LIKE '%Waarde%' AND WHERE `kolomnaam` = 'Waarde'

Eventueel meer informatie hierover kan je vinden op w3schools
http://www.w3schools.com/sql/sql_wildcards.asp
 
Tja een project beginnen, ik ben al gestart.... wil namelijk boven mijn tabel, waar nu een search veld met search button staat, dus je tikt in bv 85236 en dan op de search button naast het invulveld en de tabel die eronder standaard staat laat de rij zien met daarin het nummer 85236, tik ik in 852 dan laat hij ook dezelfde rij zien en als er een andere rij is met deze getallen laat hij die ook zien.

Dus gewoon een search veld met knop ernaast search te zien op http://www.rvvweb.nl/RJ/7000-3 zodat men kan zien wat ik bedoel en het ook zelf kan proberen, wat ik eigenlijk zou willen zijn meer search mogelijkheden, dus meer search velden naasr elkaar boven de tabel, of een soort filter, if selector die al een gedeelte laat zien en dat je daar dan verder verfijnd in kan zoeken Beter kan ik het ook niet aangeven.

Of dat ik de tabel in mijn database in een soort hoofdgroepen kan verdelen en dit met select puldown menus laat kiezen.

Nou kijk maar waar ik het online heb gezet werkend, wil alleen weten of ik twee van die search buttons werken kan krijgen of moet ik met iets anders gaan werken zoals puldownmenu (maar weet niet hoe dit werkt).

Groet,
Richard
 
Code:
SELECT * FROM `testtabel` WHERE `naam` LIKE '%FORMULIERVELDWAARDE%'

FORMULIERVELDWAARDE moet je dan vervangen voor de waarden van je zoekveld :-) dit zal moeten werken(niet getest)
 
Hoi Michaelbeersnl, ik ga zeker kijken, wil jij dan eens kijken op de link die ik zojuist heb gepost, daar staat een tabel met een invulveld en een searchnkop ernaast, deze pakt niet altijd alles, als je intoetst 38666 dan zie je een regel en op zichis ditgoed, mar als ik intoets 4838 zie je ook dezelfde regel, nu wil ik eigenlijk dat er iets zou zijn dat men kan kiezen voor artikelnummer en daarnaast een invulveld met search knop voor type, dus niet echt op een vaste waarde, maar wel zoeken in kolommen die ik aangeef en dan de rijen laten zien.
 
Dan moet je de * in je query vervangen voor losse kolomnamen bijvoorbeeld
Code:
SELECT kolom1, kolom2, kolom3 FROM tabelnaam WHERE kolom1 LIKE waarde

Edit: Je kan ook de tabel scheiden
 
Waarde van zoekveld? dit kan van alles zijn, mits hij maar in de kolommen kijkt die ik aangeef en dan de rijen laat zien, alleen is de vraag hoe krijg ik twee searchvelden enknoppen erin met daarachter in de PHP een soort commando van kijk alleen in kolom 2 en 3 en bij de andere kijk bij kolom 1 en 4, etc.
 
Oke tabel scheiden, weet ik niet genoeg van (nog) helaas, maar krijg ik dan wel dezelfde lay-out..?

Ik ga wel iets proberen zoals je aangeeft met selct kolom 1 etc, maar hoe krijg ik er dan twee searc velden in, of een pulldownmenu, kan iemand script aanpassen wellicht...? zodat ik het kan zeien...?
 
Laatst bewerkt:
De waarde van je zoekveld is idd variabel maar de tabel scheiden is gewoon een 2e tabel voor de andere zoekvelden maken maar dit is alleen relevant als je informatie niet dubbel is je moet dubbele informatie altijd proberen te voorkomen
 
Ik bedoelde een simpel project. iets waar je zelf mee kan spelen... (en meer ervaring mee op kan doen)

kijk in de broncode van die pagina. daar zie je dat dit zoek systeem werkt met AJAX.
Heb je de php cursus op w3schools.com helemaal gedaan?

Doe die helemaal, ga zelf wat proberen met de voorbeelden. Doe dan de SQL cursus. Daarna kan je dit combineren. Je kan dan voor elk filter een GROUB BY query maken. en de resultaten in een pulldown menu zetten.

Dan zorg je dat je een POST form maakt met die pulldown gegevens. met die gegevens maak je vervolgens je nieuwe filter query.



Ik heb een vraagje over die tabel van jou. horen de waardes 38780,LEIDEN,6530,KOOLLAAN echt bij elkaar? of heb je dit gedaan zodat je tabel er mooi uit ziet?
 
Laatst bewerkt:
@Michaelbeersnl, even een vraagje, ik wil wel de hele tabel zien, maar hij moet * (alles) zoeken alleen in de 1e en 2e kolom en als hij daar iets vind wat ik intoets in het searchveld dan moet hij wel alle rijen en kolommen laten zien, heb het nu geprobeerd met Select kolom1, kolom2 maar dan zie ik niet kolom 2 en kolom 4 staan.

Dus als ik intoets bv Robert, dan moet hij alleen in kolom 1 en 2 kijken of daar Robert in voor komt, zo ja dan moet hij de rijen laten zien, dus ook de kolom 3 en 4.

Weet jij hoe...?

Groet,
Richard
 
Hoi Phobia, zeer leuk om te zien hoe je een search engine maakt, ga ik morgen ook in verdiepen, bedankt voor de link!

Maar waar ik nu een beetje mee zit is dat ik een leuke search functie had gemaakt met daaronder standaard zichtbaar een tabel, zodat men in de search functie een nummer kon intoetsen en dat de desbetreffende rij overbleef, zie ook op http://www.rvvweb.nl/RJ/7000-4

Nu moet ik aleen voor elkaar krijgen dat als men een nummer intoetst of een type, dat de search alleen kijkt naar de eerste twee kolommen (de rode) en dat de andere twee kolommen (de blauwe) aleen de inhoud laat zien, maar dat deze kolommen niet meedoen in het zoeken.

Ben er vandaag de hele dag mee bezig geweest en krijg het (nog) niet voor elkaar, dit omdat er niet echt een waarde aanzit om bijvoorbeeld SELECT of WHERE aan te verbinden en weet nu even niet hoe verder, zit even vast.

Mocht je willen kijken op mijn link kun je zien wat ik bedoel en proberen, als je 4838 in de searchveld intoetst zie je dat hij de waarde neemt van de kolom onder de rode en eigenlijk moet hij nu kijkend naar de blauwe geen resultaat geven, ben nog aan het stoeien om een boodschap op scherm te krijgen van "u zoekopdracht heeft geen resultaat opgeleverd" oke heel verhaal, maar wie weet...

Brutaal om te vragen of iemand er iets mee kan mijn PHP script staat boven in deze topic.

In ieder geval onwijs bedankt voor de link, ga er mij wle in verdiepen, zeer leuk voor mijn eigen prive website.

Groet,
Richard
 
plaats anders eens je script, misschien dat dat het wat duidelijker maakt.
Want wat ik begrijp is dat je in de rode gegevens wilt zoeken en dat het blauwe als resultaat word weergegeven.
 
ik vraag het nog een keer: Heb je die dingen op w3 schools helemaal gedaan?

Als je dan terug kijkt naar je code zie je dat het niet alleen een php script is!

je hebt een html pagina, met een stuk JS en een stuk php.

php wordt door de server verwerkt, JS wordt door de browser verwerkt. als iemand de pagina wil openen dan zorgt het stukje php er voor dat hij alle gegevens uit te tabel te zien krijgt. die worden allemaal naar de browser verzonden.

Dan staat het in de browser, vervolgens gaat het JS de waardes er uit filteren die niet aan de voorwaarde voldoen. dat heeft dus niets te maken met je SQL query die in php wordt uitgevoerd!

Je moet in het stuk JS dus zorgen dat hij alleen in die eerste 2 zoekt, en niet in die andere 2!

dus als je iets aan je php code verandert heeft dat invloed op de hele tabel die je aan het begin ziet.

Jou vraag past dus beter op het JS forum.
 
plaats anders eens je script, misschien dat dat het wat duidelijker maakt.
Want wat ik begrijp is dat je in de rode gegevens wilt zoeken en dat het blauwe als resultaat word weergegeven.

Het script staat al bij #3

Groet,
Richard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan