Mostrar banderas según codigo de pais hubicado en una BD

Iniciado por .:UND3R:., 29 Abril 2012, 01:31 AM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

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

El código es el siguiente:
Código (php) [Seleccionar]
<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>: &nbsp <font color="#FF0000"><strong>'.$MuTop[0].'</strong></font> &nbsp <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


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

engel lex

#1
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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

raul338

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)