Hola a todos, tal como lo dice el título tengo el siguiente problema:
tengo una BD (mssql) en donde en un campo se encuentra un número, este número representa un país, me gustaría que se mostrara una banderita en la web según el código obtenido de la BD, la estructura de la BD es la siguiente:
BD:MuOnline
Tabla:MEMB_INFO
campo:country
Quiero implementar un PHP que muestre un ranking (el nº 1 de un juego).
Funciona casi todo perfecto, el único problema que encontré es al momento de querer mostrar las banderas, según el país en donde reside el personaje Nº1, este me muestra siempre la 1era bandera (1.png).
para entenderlo de manera visual pueden visitar la página (en el mismo index, abajo muestra el TOP 1):
www.mu-caos.cl (http://www.mu-caos.cl)
El código es el siguiente:
<table border=0 align=left width="476" height="234" cellpadding=0 cellspacing=0 background="template/<?=$core['config']['template'] ?>/images/Top1.png">
<tr>
<td>
<b>
<div align="center">
<blockquote>
<p><font color="#FFFFFF" size=3 face="arial,verdana" align="right" >
<br>
<br>
<br>
<br>
<br>
<?
function flag($country){
$flags_array=array(
1=>"1",2=>"2",3=>"3",4=>"4",5=>"5",6=>"6",7=>"7",8=>"8",9=>"9",10=>"10",11=>"11",12=>"12",13=>"13",14=>"14",15=>"15",16=>"16",17=>"17",18=>"18",19=>"19",20=>"20",21=>"21",22=>"22",23=>"23",24=>"24",25=>"25",26=>"26",27=>"27",28=>"28",29=>"29",30=>"30",31=>"31",32=>"32",33=>"33",34=>"34",35=>"35",36=>"36",37=>"37",38=>"38",39=>"39",40=>"40",41=>"41",42=>"42",43=>"43",44=>"44",45=>"45",46=>"46",47=>"47",48=>"48",49=>"49",50=>"50",51=>"51",52=>"52",53=>"53",54=>"54",55=>"55",56=>"56",57=>"57",58=>"58",59=>"59",60=>"60",61=>"61",62=>"62",63=>"63",64=>"64",65=>"65",66=>"66",67=>"67",68=>"68",69=>"69",70=>"70",71=>"71",72=>"72",73=>"73",74=>"74",75=>"75",76=>"76",77=>"77",78=>"78",79=>"79",80=>"80",81=>"81",82=>"82",83=>"83",84=>"84",85=>"85",86=>"86",87=>"87",88=>"88",89=>"89",90=>"90",91=>"91",92=>"92",93=>"93",94=>"94",95=>"95",96=>"96",97=>"97",98=>"98",99=>"99",100=>"100",101=>"101",102=>"102",103=>"103",104=>"104",105=>"105",106=>"106",107=>"107",108=>"108",109=>"109",110=>"110",111=>"111",112=>"112",113=>"113",114=>"114",115=>"115",116=>"116",117=>"117",118=>"118",119=>"119",120=>"120",121=>"121",122=>"122",123=>"123",124=>"124",125=>"125",126=>"126",127=>"127",128=>"128",129=>"129",130=>"130",131=>"131",132=>"132",133=>"133",134=>"134",135=>"135",136=>"136",137=>"137",138=>"138",139=>"139",140=>"140",141=>"141",142=>"142",143=>"143",144=>"144",145=>"145",146=>"146",147=>"147",148=>"148",149=>"149",150=>"150",151=>"151",152=>"152",153=>"153",154=>"154",155=>"155",156=>"156",157=>"157",158=>"158",159=>"159",160=>"160",161=>"161",162=>"162",163=>"163",164=>"164",165=>"165",166=>"166",167=>"167",168=>"168",169=>"169",170=>"170",171=>"171",172=>"172",173=>"173",174=>"174",175=>"175",176=>"176",177=>"177",178=>"178",179=>"179",180=>"180",181=>"181",182=>"182",183=>"183",184=>"184",185=>"185",186=>"186",187=>"187",188=>"188",189=>"189",190=>"190",191=>"191",192=>"192",193=>"193",194=>"194",195=>"195",196=>"196",197=>"197",198=>"198",199=>"199",200=>"200",201=>"201",202=>"202",203=>"203",204=>"204",205=>"205",206=>"206",207=>"207",208=>"208",209=>"209",210=>"210",211=>"211");
$img= isset($flags_array[$country]) ? $flags_array[$country] : "2";
return "<img src=template/DarkBrown/images/banderas/{$img}.gif width='25' height='15' >";
}
$Top = mssql_query("select top 1 name from MuOnline.dbo.character where ctlcode<32 order by Grand_Resets desc");
for($i;$i<mssql_num_rows($Top);$i++) {
$MuTop = mssql_fetch_row($Top);
$country = mssql_query("Select memb___id,country from MEMB_INFO where memb___id='".$MuTop[0]."'");
$country->fields[1] = flag($country->fields[1]);
echo '
<u>Personaje</u>:   <font color="#FF0000"><strong>'.$MuTop[0].'</strong></font>   <font color="#FFFFFF"><u>Pais</u>: '.$country->fields[1].'
'; }
?>
<br/>
</font></p>
</blockquote>
</div></td>
</tr>
</table>
Si alguien me explicara en que estoy fallando se lo agradecería mucho, tengo nociones muy básicas de PHP, por eso acudo a ustedes. Muchas Gracias
sin que lo tomes a mal D: pero quien usa mssql? D:
bueno aqui unas cositas primero usa
mssql_get_last_message()
para ver si es un error en la llamada a la DB (sospecho esto porque tienes
mssql_query("select top 1 name from MuOnline.dbo.character where ctlcode<32 order by Grand_Resets desc")
no se si mssql acepte espacios en los nombres de las tablas, en este caso usarías comillas para encerrar "top 1 name"
por otro lado para
flags_array=array(
1=>"1",2=>"2",3=>"3",4=>"4",5=>"5", .............. ,211=>"211");
$img= isset($flags_array[$country]) ? $flags_array[$country] : "2";
return "<img src=template/DarkBrown/images/banderas/{$img}.gif width='25' height='15' >";
}
joder XD no tenias que escribirte un array de 211 indices para hacer de un numero un string, puedes pasarlo como numero ya que php lo interpretará como string de ser necesario,
si lo necesitas es para saber si está dentro del rango de números bastaría con un
if($country>=1 && $country<=211){ //algo }
o si quieres el array por x razon
$a;
for($i=1;$i<=211;$i++){
$a[$i]="$i";
}
en {$img} no necesitas las llaves, con "comillas dobles" las variables son tomadas por su valor (mas no en 'comillas simples'),( en el for procura siempre inicializar la variable a 0)
chequea esos detallitos, principalmente el error, si sigue presentando el mismo error y no es la llamada a mssql avisa :P
engelx, MSSQL no creo que acepte espacios en los nombres de la tabla, pero en este caso, quiere obtener solo el primer registro (seria el LIMIT 1 en MySQL)