Unieke ID maken in php

Status
Niet open voor verdere reacties.
Ik kom er niet helemaal uit met debuggen maar dankjewel voor je hulp.
 
Waar loop je tegenaan? Wat heb je geprobeerd qua debuggen?
 
Het zou handig zijn als je code en eventuele meldingen plaatst :)
 
PHP:
$numCountryCode = sqlsrv_get_field($stmt, 0) + 1;
var_dump('$numCountryCode = '. $numCountryCode);
string(19) "$numCountryCode = 3" string(1) "3"

Dat komt eruit
 
Dat is toch output welke je verwacht?

Het geeft aan dat uit de database 2 resultaten terugkomen, de bovenste regel telt daar 1 bij op dus is het resultaat van $numCountryCode 3.

Die stap gaat dus goed, op naar de volgende regel(s) :)
 
Ik denk zelf dat er dan wat fout zit in de query want hij pakt niet de laatste RequestID van het bijbehorende land. Hij toont altijd AUS1 Als je Australië kiest.

PHP:
 $sql="SELECT COUNT(RequestID) AS countId FROM DowntimeRequest WHERE RequestID=?";
 
Dan klopt je query zo te zien niet, wat je wilt is namelijk het aantal records tellen waarbij de kolom met de land-waarde gelijk is aan de ingevoerde waarde (In dit geval dus AUSTRALIE).

Zo te zien vraag je nu het aantal records op waarvan de RequestID gelijk is aan AUSTRALIE. Dat zal altijd 0 zijn want de RequestID is toch in formaat AUS1?

Kortom pas de kolom in de WHERE aan naar degene welke de volledige naam van het land bevat :)
 
GEWELDIG HET WERKT! Echtwaar man bedankt!
PHP:
// Altijd hoofdletters
    $country = strtoupper($country);
    // Query
    $sql="SELECT COUNT(RequestID) AS countId FROM DowntimeRequest WHERE Country=?";
    //
    if($stmt = sqlsrv_query($sqlsrv, $sql, array($country))) 
	{		
        sqlsrv_fetch($stmt);
        // Pak het eerst veld (countId)
        $numCountryCode = sqlsrv_get_field($stmt, 0) + 1;
		var_dump('$numCountryCode = '. $numCountryCode);
        // Geeft eerste 3 letters van het land plus het getal terug
        return substr($country, 0, 3) . $numCountryCode;
    } else 
	{
		var_dump($sqlsrv_errors());// Als er een fout uit de query komt geven we false terug
        return false;
    }

Nu moet ik alleen een switch gaan invoegen want sommige landen worden niet met de eerste 3 letters afgekort. :)!
 
Iets in deze trend?
PHP:
$numCountryCode = sqlsrv_get_field($stmt, 0) + 1;

switch($country)
{
    case: "AUSTRALIE"
        $uniqueCode = "AU" . $numCountryCode;
    break;
    default:
        $uniqueCode = substr($country, 0, 3);
    break;
}
return $uniqueCode;
 
Helemaal geweldig! Het werkt! Heel erg bedankt! :) Dankjewel voor je tijd en voor de aandacht die je er in gestoken hebt!

Ik zal de complete werkende code toevoegen voor andere mensen. Dit werkt! :) Nogmaals bedankt!
PHP:
function RequestId($country, $sqlsrv)
{
	// Altijd hoofdletters
    $country = strtoupper($country);
    // Query
    $sql="SELECT COUNT(RequestID) AS countId FROM DowntimeRequest WHERE Country=?";
    //
    if($stmt = sqlsrv_query($sqlsrv, $sql, array($country))) 
	{		
        sqlsrv_fetch($stmt);
        // Pak het eerst veld (countId)
        $numCountryCode = sqlsrv_get_field($stmt, 0) + 1;      
	    switch($country)
		{
			case "CHILE":
				$uniqueCode = "CHL" . $numCountryCode;
			break;
			case "DENMARK":
				$uniqueCode = "DNK" . $numCountryCode;
			break;
			case "GREECE":
				$uniqueCode = "GRC" . $numCountryCode;
			break;
			case "IRELAND":
				$uniqueCode = "IRL" . $numCountryCode;
			break;
			case "KUWAIT":
				$uniqueCode = "KWT" . $numCountryCode;
			break;
			case "LEBANON":
				$uniqueCode = "LBN" . $numCountryCode;
			break;
			case "MOLDAVIE":
				$uniqueCode = "MDA" . $numCountryCode;
			break;
			case "NETHERLANDS":
				$uniqueCode = "NLD" . $numCountryCode;
			break;
			case "SOUTH AFRICA":
				$uniqueCode = "ZAF" . $numCountryCode;
			break;
			case "SPAIN":
				$uniqueCode = "ESP" . $numCountryCode;
			break;
			case "SWITZERLAND":
				$uniqueCode = "CHE" . $numCountryCode;
			break;
			case "UNITED ARAB EMIRATES":
				$uniqueCode = "ARE" . $numCountryCode;
			break;
			case "UNITED KINGDOM":
				$uniqueCode = "GBR" . $numCountryCode;
			break;
			case "UNKNOWN":
				$uniqueCode = "UNKNOWN" . $numCountryCode;
			break;
			// Geeft eerste 3 letters van het land plus het getal terug
			default:
				$uniqueCode = substr($country, 0, 3) . $numCountryCode;
			break;
		}
		return $uniqueCode;
    } 
	else 
	{
		var_dump($sqlsrv_errors());// Als er een fout uit de query komt geven we false terug
        return false;
    }
}

THANKS!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan