Textbox met dropdown onchange.

Status
Niet open voor verdere reacties.
Logisch dat je niets terugkrijgt dus :)

De kolom "id" bestaat ook echt in de database? Dat is je primary key (Dus uniek)? Dan is DISTINCT sowieso niet nodig (hij is immers al uniek).

Verder is een id meestal een getal, wat je nu dus met de LIKE doet is records opvragen waarvan de ID begint met een "c". :eek:

Je hebt twee velden nodig uit de database, dat is de kolom waarin hetgeen staat waarop je wilt zoeken en een unieke referentie naar dat record.
 
Haha ja die like 'c' was me inmiddels opgevallen die had ik weggeaald :p en nu ook de Distinct. Die 'id' die bestaat. Welliswaar in een andere naam maar in de code staat dit goed.

Krijg alleen wel dezelfde fout.

Ik ben er net achtergekomen dat ik het id niet kan gebruiken. Dit is niet gerelateerd aan de name. er zijn meerdere names die hetzelfde zijn.
Wellicht met jou manier gaat dit uiteindelijk wel lukken, wellicht geeft dit antwoord ook logica waarom de foutmelding komt.
 
Laatst bewerkt:
Er is als het goed is een kolom als PRIMARY KEY gedefineerd, die kun je als "id" gebruiken.

Als de naam anders is moet je hem dus ook met $row['{naamKolom}'] aanroepen ;)
 
De kolom waar ik het over had is ook de primary key. Dus het moet goed zitten.
Ik ga gewoon verder met jou uitleg en laat het andere commentaar even links liggen..

Dit is de foutmelding die ik heb nadat ik allebei de kolommen in gebruik neem op jou manier :

Notice: Undefined index: id in D:path on line 54

Dit is line 54
Code:
'id' => $row['id'],

Dit is de volledige code.
Code:
$link = sqlsrv_connect( $serverName, $connectionInfo);
	if( $link === false )
	{
		 echo "Unable to connect.</br>";
		 die( print_r( sqlsrv_errors(), true));
	}
	
	$sql = "SELECT DISTINCT name FROM db WHERE name IS NOT NULL AND name LIKE '". $_GET["q"] ."%'";
	$sql2 = "SELECT id FROM db WHERE id IS NOT NULL";

$stmt = sqlsrv_query( $link, $sql);
	$stmtHK = sqlsrv_query( $link, $sql2);
	
	if( $stmt === false )
	{
		 die( print_r( sqlsrv_errors(), true));
	}
	if( $stmt2 === false )
	{
		 die( print_r( sqlsrv_errors(), true));
	}

$results = array();
	while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) 
	{
		$results[] = array
		(
			'id' => $row['id'],
			'text' => $row['name']
		);
	}
 
Het is de bedoeling dat we de twee velden in één query opvragen :)

PHP:
$link = sqlsrv_connect ($serverName, $connectionInfo);
if ($link === false ) {
    echo "Unable to connect.</br>";
    die( print_r( sqlsrv_errors(), true));
}

$sql = "
SELECT
    id,
    DISTINCT name
FROM
    db
WHERE
    name LIKE '". $_GET["q"] ."%'"
;

$stmt = sqlsrv_query( $link, $sql);

if ($stmt === false ) {
    die( print_r( sqlsrv_errors(), true));
}

$results = array();
while ($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
    $results[] = array(
        'id' => $row['id'],
        'text' => $row['name']
    );
}
 
Laatst bewerkt:
Ik hb je code toegepast:
Code:
	$sql = "SELECT id, DISTINCT name FROM db WHERE name IS NOT NULL AND name LIKE '". $_GET["q"] ."%'";
	if( $stmt === false )
	{
		 die( print_r( sqlsrv_errors(), true));
	}
        $results = array();
	while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) 
	{
		$results[] = array
		(
			'id' => $row['id'],
			'text' => $row['name']
		);
		
	}

De foutmelding:

Code:
Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 156 [code => 156 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'DISTINCT'. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword 'DISTINCT'. ) )

edit:

Zodra ik die DISTINCT na de select zet werkt de query wel, alleen omdat die names er meerdere keren instaan onder verschillende id's krijg ik soms wel 80x een naam terug.
En daarmee dus dit gedaan:
Code:
	$sql = "SELECT DISTINCT name, id FROM db WHERE name IS NOT NULL AND name LIKE '". $_GET["q"] ."%'";
 
Laatst bewerkt:
De situatie is toch dat je een item wilt toevoegen of bewerken?

Dan lijkt het mij niet handig op een veld te gaan zoeken waarvan er meerdere in de database staan, hoe weet je dan welke je moet selecteren? :rolleyes:

Een DISTINCT toevoegen is dan ook niet de oplossing want volgens mij krijg je met de laatste query gewoon het eerste resultaat dat hij tegenkomt. Dat betekent niet per definitie dat je ook dat item wilt wijzigen.
 
Klopt dat is ook de bedoeling, vandaar dat ik een aantal post geleden zei dat dit wss niet zou gaan werken maar ik even af ging op jou codes en antwoorden.
Ik moet deze database gebruiken en meer dan deze tweee kolommen zal er niet staan. Geen idee waarom er vaker namen instaan.
Is er een mogelijkheid hier wel maar 1 naam van terug te krijgen?

De bedoeling is eerste instantie om in die textbox puur de naam te halen uit de database, aanklikbaar maken, en dan kunnen er aanpassingen worden gedaan.
Die aanpassingen worden vervolgens opgeslagen in een andere database.
 
Maar wat voor aanpassingen wil je gaan doen wanneer er alleen een naam en een ID in die tabel staan? Als de namen dan ook nog eens niet uniek zijn kun je die naam wel aanpassen maar je weet nooit of je de juiste hebt.

Je kunt wel één resultaat terugkrijgen maar het nut om die te gaan bewerken ontgaat mij, ik weet niet wie dit van jou vraagt om te maken maar erg nuttig lijkt het mij niet.
 
Klopt ik begrijp je helemaal.. Ik ga ook zeker nog een keer om de tafel (vrijdag) met deze mensen.
Omdat mij dit ook al was opgevallen leek het mij het beste gewoon de naam eruit te vissen en die als link neer te zetten naar een andere pagina.
Wellicht vanuit daar andere dingen oproepen.

Ik kan ook wachten tot vrijdag en als er duidelijkheid is pas verder gaan natuurlijk.
 
Als het enige veld dat je nog aan kunt passen de naam is denk ik niet dat het veel zin heeft.

Dit soort functionaliteiten werken alleen wanneer er onderscheidende kolommen zijn. Daarnaast is een tabel met maar 1 veld ook niet heel uitgebreid dus valt ook te betwijfelen of dat zin heeft (Tenzij het onderdeel van een relatie is)
 
Ik moet eerlijk zeggen dat ik daarvan geen idee heb.. ik heb de opdracht gekregen en tijdens het maken te horen gekregen dat ik in een andere database moest werken. Waarvan ik dat hoorde is nu op vakantie..
Ik zelf heb geen rechten om in die database te kijken dus wordt het een lastig verhaal voorlopig..

Ik denk dat ik dit even links laat liggen t/m vrijdag en hoop hier meer duidelijkheid over te krijgen, dan zal ik dat hier posten.

Iig bedankt tot zo ver. Ik kan ook laten zien wat er mis gaat en waarom dit dus nooit zal gaan werken. (of tenminste niet zonder enig idee erachter)

Ik laat weten wanneer ik meer weet :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan