¿Puedo crear un enlace que le de un valor a php sin salir de la web?

B

Yo necesito que dependiendo de un <a> se genere una consulta u otra, se me ocurrió crear un <a> que de un valor a una variable y de ahí pongo un where pero no sé si es posible dar valores a php desde un <a> sin actualizar la web

Éste es mi código

<a onclick="mostrar();" id="ocultarb" class="button"><?php echo $SelectZoneInMap[0]; ?></a>

<a href="" class="button">64 Ticks</a> <!-- Esto tendría que dar un valor a $Tickrate -->
<a href="" class="button">128 Ticks</a> <!-- Esto tendría que dar un valor a $Tickrate -->

<table class="sape" align="center" bgcolor="#000000">
	<tr>
		<td>
			<div id="mapa" style="display: none;" class="className">
				
			<?php

			$ZonasHumo = $db->query("SELECT id, X, Y, ROT, Px FROM smokes WHERE Mapa ="."'$Mapa' and Tickrate ="."'$Tickrate'");

			if($ZonasHumo->num_rows > 0) {
				while($row = $ZonasHumo->fetch_assoc()) {
					$IDH      = $row['id'];
					$EjeX     = $row['X'];
					$EjeY     = $row['Y'];
					$EjeRot   = $row['ROT'];
					$Px       = $row['Px'];
				?>

				<div style="position:absolute; left:<?php if(isset($EjeX)) { echo $EjeX.'px'; } ?>; top:<?php if(isset($EjeY)) { echo $EjeY.'px'; } ?>;z-index:20">
					<a href="https://csgo-utilities.cf/Smoke.php?ID=<?php echo $IDH; ?>">
						<img width="50px" id="imgs" src="https://csgo-utilities.cf/images/smokes/smoke1Red.png"/>
					</a>
				</div>

				<?php
				}
			}
			?>
		</div>
	</td>
</tr>
</table>
B

Sino otra cosa que se me ocurrió fue crear las consultas y las muestro con js dependiendo el boton

Sonos

Podrías cargar la tabla dependiendo el valor llamando al archivo externo por javascript.

En plan guarro, y no lo he probado, por ejemplo, añades la librería jquery, y sería algo así:

<a type="button" onclick="loadtable(64)">64 Ticks</a>
<a type="button" onclick="loadtable(128)">128 Ticks</a>

<div id="table"></div>

<script type="text/javascript"> 
function loadtable(ticks) {
$("table").load("ticks_table.php?ticks=ticks");
 }
 </script>

Cuando clickas en un a, lanza la función loadtable de javascript, que carga lo que devuelva dicha url dentro del div id table, ej: ticks_table.php?ticks=64
En dicho archivo que has de crear, ticks_table.php, tienes que tener la función de creación de tabla html, y pillas el valor con $_GET['ticks'] para la consulta.

De todas formas, si son solo dos opciones, el tema de usar tabs o cuando hagas click mostrar una u otra tabla hide/show, es buena opción también.

1 respuesta
B

#3 Comprendo tu idea pero se me hizo mas complicada de llevar a cabo, entonces utilicé un método probablemente muy poco optimizado pero al final funciona

(lo que hice es crear un div para el valor 64 y otro para el valor 128 y los oculté a los 2, dentro de cada uno hice una consulta diferente y luego con el boton lo hice hice fue mostrar el div correspondiente) seguramente de todas las formas que hay de hacer esta es la mas inoptimizada pero de momento lo voy a dejar asi

<a onclick="mostrar();" id="ocultarb" class="button"><?php echo $SelectZoneInMap[0]; ?></a>

<table class="sape" align="center" bgcolor="#000000">
	<tr>
		<td>
			<div id="mapa" style="display: none;" class="className">
				
			<a onclick="loadtable(64);" class="button">64 Ticks</a> <!-- Esto tendría que dar un valor a $Tickrate -->
			<a onclick="loadtable(128);" class="button">128 Ticks</a> <!-- Esto tendría que dar un valor a $Tickrate -->
		
			<div id="64" style="display: none;">
				<?php

				$ZonasHumo = $db->query("SELECT id, X, Y, ROT, Px FROM smokes WHERE Mapa ="."'$Mapa' and Tickrate ="."1");

				if($ZonasHumo->num_rows > 0) {
					while($row = $ZonasHumo->fetch_assoc()) {
						$IDH      = $row['id'];
						$EjeX     = $row['X'];
						$EjeY     = $row['Y'];
					?>

					<div style="position:absolute; left:<?php if(isset($EjeX)) { echo $EjeX.'px'; } ?>; top:<?php if(isset($EjeY)) { echo $EjeY.'px'; } ?>;z-index:20">
						<a href="https://csgo-utilities.cf/Smoke.php?ID=<?php echo $IDH; ?>">
							<img width="50px" id="imgs" src="https://csgo-utilities.cf/images/smokes/smoke1Red.png"/>
						</a>
					</div>

					<?php
					}
				}
				$ZonasHumo->free();
				?>
			</div>

			<div id="128" style="display: none;">
				<?php

				$ZonasHumo = $db->query("SELECT id, X, Y, ROT, Px FROM smokes WHERE Mapa ="."'$Mapa' and Tickrate ="."2");

				if($ZonasHumo->num_rows > 0) {
					while($row = $ZonasHumo->fetch_assoc()) {
						$IDH      = $row['id'];
						$EjeX     = $row['X'];
						$EjeY     = $row['Y'];
					?>

					<div style="position:absolute; left:<?php if(isset($EjeX)) { echo $EjeX.'px'; } ?>; top:<?php if(isset($EjeY)) { echo $EjeY.'px'; } ?>;z-index:20">
						<a href="https://csgo-utilities.cf/Smoke.php?ID=<?php echo $IDH; ?>">
							<img width="50px" id="imgs" src="https://csgo-utilities.cf/images/smokes/smoke1Red.png"/>
						</a>
					</div>

					<?php
					}
				}
				$ZonasHumo->free();
				?>
			</div>	
		</div>		
	</td>
</tr>
</table>

function loadtable(ticks) {
	if(ticks == 64 ) {
		document.getElementById("128").style.display = "none";
		document.getElementById("64").style.display = "block";
	} 
	else if(ticks == 128) { 
		document.getElementById("64").style.display = "none";
		document.getElementById("128").style.display = "block";
	}
}

Usuarios habituales