B
blankito1998
Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
$proaduf = mysqli_query($conexion, "SELECT p.ip1, p.ip2, u.session_id FROM playings p JOIN users_online u ON u.session_id = p.ip1 OR u.session_id = p.ip2 ORDER BY p.id DESC");Para comprobar que en la tablausers_online
, elsession_id
es igual aip1
oip2
de la tablaplayings
, necesitas estructurar la consulta de manera que verifique esas condiciones. Aquí te dejo un ejemplo de cómo hacerlo:
### Código
PHP:$proaduf = mysqli_query($conexion, " SELECT p.ip1, p.ip2, u.session_id FROM playings p JOIN users_online u ON u.session_id = p.ip1 OR u.session_id = p.ip2 ORDER BY p.id DESC "); if (mysqli_num_rows($proaduf) > 0) { while ($fila = mysqli_fetch_assoc($proaduf)) { echo 'ip1: ' . $fila['ip1'] . ' o ip2: ' . $fila['ip2'] . ' encontrado en session_id: ' . $fila['session_id'] . '<br>'; } } else { echo 'No se encontraron coincidencias.'; }
### Explicación
1. JOIN: Se usa unJOIN
entre las tablasplayings
(con aliasp
) yusers_online
(con aliasu
) donde se comprueba que elsession_id
deusers_online
sea igual aip1
oip2
deplayings
.
2. Seleccionar Datos: En elSELECT
, estamos obteniendo las columnasip1
,ip2
ysession_id
para poder mostrar el resultado.
3. Verificar Resultados: Usamosmysqli_num_rows()
para comprobar si hay resultados. Si los hay, se muestran los valores; si no, se imprime un mensaje indicando que no se encontraron coincidencias.
Con esta consulta, deberías poder verificar si lossession_id
enusers_online
coinciden conip1
oip2
de la tablaplayings
. Asegúrate de que los datos en la base de datos sean correctos y que las columnas tengan valores que cumplan con las condiciones.
Claro, aquí tienes un código que verifica si tanto$proaduf = mysqli_query($conexion, "SELECT p.ip1, p.ip2, u.session_id FROM playings p JOIN users_online u ON u.session_id = p.ip1 OR u.session_id = p.ip2 ORDER BY p.id DESC");
if(mysqli_num_rows($proaduf) > 0){
echo 'usuarios online';
}
puedes hacer que verifique si ip1 y ip2 estan en users_online y si falta alguno que mande un echo
ip1
como ip2
están en la tabla users_online
. Si falta alguno, se mostrará un mensaje correspondiente:$proaduf = mysqli_query($conexion, "
SELECT p.ip1, p.ip2, u.session_id
FROM playings p
LEFT JOIN users_online u1 ON u1.session_id = p.ip1
LEFT JOIN users_online u2 ON u2.session_id = p.ip2
ORDER BY p.id DESC
");
if (mysqli_num_rows($proaduf) > 0) {
while ($fila = mysqli_fetch_assoc($proaduf)) {
$ip1_encontrada = !empty($fila['session_id']); // Verifica si ip1 está en users_online
$ip2_encontrada = !empty($fila['session_id']); // Verifica si ip2 está en users_online
if ($ip1_encontrada && $ip2_encontrada) {
echo 'Ambas IPs (ip1: ' . $fila['ip1'] . ' y ip2: ' . $fila['ip2'] . ') están en usuarios online.<br>';
} else {
if (!$ip1_encontrada) {
echo 'ip1: ' . $fila['ip1'] . ' no está en usuarios online.<br>';
}
if (!$ip2_encontrada) {
echo 'ip2: ' . $fila['ip2'] . ' no está en usuarios online.<br>';
}
}
}
} else {
echo 'No se encontraron coincidencias en la tabla playings.';
}
playings
con users_online
dos veces, una para ip1
y otra para ip2
.session_id
está vacío para determinar si la IP está presente en users_online
.users_online
. Si falta alguna, se indica cuál no está presente.ip1
y ip2
están en users_online
y recibirás mensajes claros si alguna falta.$proaduf = mysqli_query($conexion, "SELECT p.ip1, p.ip2, u.session_id FROM playings p JOIN users_online u ON u.session_id = p.ip1 OR u.session_id = p.ip2 ORDER BY p.id DESC");Claro, aquí tienes un código que verifica si tantoip1
comoip2
están en la tablausers_online
. Si falta alguno, se mostrará un mensaje correspondiente:
### Código
PHP:$proaduf = mysqli_query($conexion, " SELECT p.ip1, p.ip2, u.session_id FROM playings p LEFT JOIN users_online u1 ON u1.session_id = p.ip1 LEFT JOIN users_online u2 ON u2.session_id = p.ip2 ORDER BY p.id DESC "); if (mysqli_num_rows($proaduf) > 0) { while ($fila = mysqli_fetch_assoc($proaduf)) { $ip1_encontrada = !empty($fila['session_id']); // Verifica si ip1 está en users_online $ip2_encontrada = !empty($fila['session_id']); // Verifica si ip2 está en users_online if ($ip1_encontrada && $ip2_encontrada) { echo 'Ambas IPs (ip1: ' . $fila['ip1'] . ' y ip2: ' . $fila['ip2'] . ') están en usuarios online.<br>'; } else { if (!$ip1_encontrada) { echo 'ip1: ' . $fila['ip1'] . ' no está en usuarios online.<br>'; } if (!$ip2_encontrada) { echo 'ip2: ' . $fila['ip2'] . ' no está en usuarios online.<br>'; } } } } else { echo 'No se encontraron coincidencias en la tabla playings.'; }
### Explicación
1. LEFT JOIN: Se utilizan dos LEFT JOIN para unir la tablaplayings
conusers_online
dos veces, una paraip1
y otra paraip2
.
2. Verificación de IPs: Se verifica sisession_id
está vacío para determinar si la IP está presente enusers_online
.
3. Mensajes Condicionales: Se imprime un mensaje si ambas IPs están en la tablausers_online
. Si falta alguna, se indica cuál no está presente.
Con este código, podrás ver si las IPsip1
yip2
están enusers_online
y recibirás mensajes claros si alguna falta.
El código tiene una pequeña confusión en la verificación de las IPs. En el fragmento:$proaduf = mysqli_query($conexion, "SELECT p.ip1, p.ip2, u.session_id FROM playings p JOIN users_online u ON u.session_id = p.ip1 OR u.session_id = p.ip2 ORDER BY p.id DESC");
if (mysqli_num_rows($proaduf) > 0) {
while ($fila = mysqli_fetch_assoc($proaduf)) {
$ip1_encontrada = !empty($fila['session_id']); // Verifica si ip1 está en users_online
$ip2_encontrada = !empty($fila['session_id']); // Verifica si ip2 está en users_online
if ($ip1_encontrada && $ip2_encontrada) {
echo 'Ambas IPs (ip1: ' . $fila['ip1'] . ' y ip2: ' . $fila['ip2'] . ') están en usuarios online.<br>';
} else {
if (!$ip1_encontrada) {
echo 'ip1: ' . $fila['ip1'] . ' no está en usuarios online.<br>';
}
if (!$ip2_encontrada) {
echo 'ip2: ' . $fila['ip2'] . ' no está en usuarios online.<br>';
}
}
}
} else {
echo 'No se encontraron coincidencias en la tabla playings.';
}
esta bien?
$ip1_encontrada = !empty($fila['session_id']); // Verifica si ip1 está en users_online
$ip2_encontrada = !empty($fila['session_id']); // Verifica si ip2 está en users_online
session_id
no está vacío, pero esto no distingue entre ip1
y ip2
. Necesitas comprobar los resultados de cada JOIN por separado para determinar si ip1
o ip2
está presente. Aquí tienes la corrección adecuada:$proaduf = mysqli_query($conexion, "
SELECT p.ip1, p.ip2,
MAX(CASE WHEN u.session_id = p.ip1 THEN 1 ELSE 0 END) AS ip1_encontrada,
MAX(CASE WHEN u.session_id = p.ip2 THEN 1 ELSE 0 END) AS ip2_encontrada
FROM playings p
LEFT JOIN users_online u ON u.session_id IN (p.ip1, p.ip2)
GROUP BY p.id
ORDER BY p.id DESC
");
if (mysqli_num_rows($proaduf) > 0) {
while ($fila = mysqli_fetch_assoc($proaduf)) {
$ip1_encontrada = $fila['ip1_encontrada'];
$ip2_encontrada = $fila['ip2_encontrada'];
if ($ip1_encontrada && $ip2_encontrada) {
echo 'Ambas IPs (ip1: ' . $fila['ip1'] . ' y ip2: ' . $fila['ip2'] . ') están en usuarios online.<br>';
} else {
if (!$ip1_encontrada) {
echo 'ip1: ' . $fila['ip1'] . ' no está en usuarios online.<br>';
}
if (!$ip2_encontrada) {
echo 'ip2: ' . $fila['ip2'] . ' no está en usuarios online.<br>';
}
}
}
} else {
echo 'No se encontraron coincidencias en la tabla playings.';
}
MAX(CASE...)
para contar si cada IP (ip1 o ip2) está presente en la tabla users_online
. Esto asignará 1 si está encontrada y 0 si no.session_id
de users_online
esté en ip1
o ip2
.ip1_encontrada
y ip2_encontrada
para determinar si cada IP está en línea.Para realizar una pausa en Python utilizando la funciónEn python
¿Cómo se hace el siguiente código con función/llamada?:
time.sleep(2)
time.sleep()
dentro de una función, aquí tienes un ejemplo:import time
def pausa(seconds):
time.sleep(seconds)
# Llamada a la función
pausa(2)
time
que contiene la función sleep()
.pausa
que toma un parámetro seconds
para indicar el tiempo en segundos.time.sleep
: Dentro de la función, se llama a time.sleep(seconds)
para pausar la ejecución por el número de segundos especificado.pausa(2)
para hacer que el programa espere 2 segundos.En Python, al usar un bucleEn python
con while True dentro de otro
al poner un elif con opción return -1 y regresar al primer while que tiene
if subsel == -1:
break
¿por que -1, o se puede usar otro valor que no diga que no está definido?
while True
dentro de otro bucle y manejar condiciones con return
, el valor que devuelves (como -1
) es simplemente una forma de indicar una condición específica. Aquí algunos puntos a considerar:return
debe tener significado dentro del contexto de tu programa. Si decides usar -1
, es comúnmente utilizado como un indicador de error o de condición no válida, especialmente si los valores válidos son no negativos (por ejemplo, índices o contadores).None
: Puede indicar que no se encontró un resultado válido.-2
, -3
) si tienes múltiples condiciones y deseas diferenciarlas."error"
o "no válido"
para hacer más explícito el motivo del retorno.def funcion_principal():
while True:
subsel = input("Elige una opción (o 'salir' para terminar): ")
if subsel == "salir":
break
if subsel == "opcion1":
print("Has elegido la opción 1.")
elif subsel == "opcion2":
print("Has elegido la opción 2.")
else:
print("Opción no válida. Retornando -1.")
return -1
# Llamada a la función
resultado = funcion_principal()
if resultado == -1:
print("Se detuvo la ejecución por una opción no válida.")
-1
. Puede ser cualquier otro valor que consideres apropiado según tu lógica. Lo importante es asegurar que el uso de ese valor tenga sentido en tu contexto y que tu código lo maneje correctamente.En Python, puedes utilizar argumentos con nombre (también conocidos como argumentos de palabra clave o kwargs) para manejar funciones que acepten una cantidad variable de argumentos sin causar errores si no se especifican todos. Aquí te muestro cómo se puede hacer:en python
en función / argumentos
sin posición
¿cómo se hace en la función si la llamada envia 3 argumentos en cualquier posición y la función tiene hasta para 5, y no de el error que faltan, con argumentos fijos?
def mi_funcion(arg1=None, arg2=None, arg3=None, arg4=None, arg5=None):
print("Argumento 1:", arg1)
print("Argumento 2:", arg2)
print("Argumento 3:", arg3)
print("Argumento 4:", arg4)
print("Argumento 5:", arg5)
# Llamada a la función con argumentos en cualquier orden
mi_funcion(arg3="Valor 3", arg1="Valor 1", arg5="Valor 5")
mi_funcion
, los parámetros arg1, arg2, arg3, arg4
y arg5
tienen valores predeterminados de None
. Esto significa que si no se pasa un argumento en la llamada a la función, tomará el valor None
en su lugar.arg3
, arg1
y arg5
. Los argumentos que no se pasan permanecerán como None
.None
para aquellos que no se hayan especificado.Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?