por que al momento de realizar el POST primero entra en el IF y ahi no esta seteado la conexion a la base.. debes mover la conexion al principio
Código PHP:
Ver original<?php
$id=new mysqli($host,$usr,$pass,$db);//aqui la conexion
if(isset($_POST["voto"])) { if(!$id) die("error de BD"); $lenguaje=$_POST["voto"];
$sql="SELECT votos from lenguajes WHERE lenguaje=$lenguaje";
$rs=$id->query($sql);
$fila=$rs->fetch_assoc();
$votos=$fila["votos"];
$sql="UPDATE lenguajes SET votos=$votos+1 WHERE lenguaje=$lenguaje";
$id->query($sql);
}
?>
<h1>Vota por tu lenguaje de programación preferido</h1>
<!-- Formulario que permite votar -->
<form method="post">
<select name="voto">
<?php
$sql="SELECT * from lenguajes";
$rs=$id->query($sql);
while($f=$rs->fetch_assoc()){
echo "<option value=\"$f[lenguaje]\">$f[lenguaje]</option>";
}
?>
</select>
<input type="submit" value="Enviar">
</form>