php – Remover a repetição do segundo foreach

Bom dia.. estou tentando remover algumas informações repetidas que vem de um banco de dados SQL SERVER por meio de um foreach que utilizo numa tabela, ou seja, são dois foreach, é no segundo que gostaria de remover os repetidos. Nesse caso o ponto de coleta se repete porque o cliente vinculado a ele é diferente. Segue uma imagem e meu código no segundo foreach onde puxo o nome do ponto de coleta.

inserir a descrição da imagem aqui

´´´
$coleta = $Rp(‘CIDADECOLETA’);

            try{
          $Conexao    = Conexao::getConnection();
          $query      = $Conexao->query("
              SELECT CODCLIENTE, DESCRICAO FROM GCONSIST WHERE CODTABELA = 'CidColeta' AND CODCLIENTE = '$coleta' 
          ");
          $nomecol   = $query->fetchAll();
          }catch(Exception $e){
            echo $e->getMessage();
            exit;
          }  
                    
          foreach($nomecol as $rcol) {
              echo  mb_strimwidth($rcol('DESCRICAO'),0,35,"...");
          }

´´´

php – POST devuelve array vacío en el segundo formulario

Tengo una vista a la que llego desde un controlador para mostrar un modelo concreto de camiseta. Después hago un post en la misma página para que elija el color de la camiseta y poder mostrar una lista con las cantidades de cada talla de ese modelo y color concretos, y poder modificarlas. Pues bien el segundo formulario que se pinta dentro de un bucle while, devuelve siempre un array vacío. Si cambio por get, sí recibo los datos por la url, pero ya no me lleva al controlador. Les dejo el código de la vista y del controlador que la pide. En el controlador que recibe los datos solo hay un var_dump() para verificar qué datos llegan.
Controlador:

public function indexByModel()
    {
        if(isset($_GET) && isset($_GET('modelo'))){
            $modelo = (int)$_GET('modelo');
                                               
            $prenda = New Prenda();
            $prenda->setId_modelo($modelo);
            $prendas = $prenda->getByModel();
            
            $result = array();
            $count = 0;
            while ($row = $prendas->fetch_object()){
                $result($count) = $row;
                $count++;
            }
            require_once 'views/prendas/prenda.php';    
    }else{
        echo "No llega el dato por la URL";
    }
       
}

y la vista ‘views/prendas/prenda.php

<div class="row">
<div class="col-5">
    <h1 class="bg-succes text-start mb-1"><?=$result(0)->modelo?></h1>
    <div>
        <img class="border-secondary img-thumbnail my-2" width="90%" src="<?=_URL_BASE_?>/assets/img/CamisetasUnisexCategoria.png">
    </div>
    <div>
        <?=$result(0)->categoria?> / <?=$result(0)->familia?>
    </div>
</div>
<div class="col">
    <h3>Colores</h3>
    
    <div class="row justify-content-start mb-5">  
        <?php $colores = Utils::showColores(); ?>
        <form action="" method="POST">
        <?php while ($color = $colores->fetch_object()): ?>       
            <button name="color" value="<?=$color->id?>" style="background-color:#<?=$color->codigo?>" title>
                <svg width="30" height="50" class="mr-3">
                    <rect width="30" height="30" style="fill:#<?=$color->codigo?>;" alt="<?=$color->color?>" />
                </svg>
            </button>  
        <?php endwhile; ?>   
        </form>
    </div>
    <?php if (isset($_POST) && isset($_POST('color'))): ?>
        <?php $color = (int)$_POST('color'); ?>
        <?php $prendas = Utils::showByModelColor($modelo, $color); ?>
        
        <table class="table text-center">
            <thead>
                <th>Color</th>
                <th>Talla</th>
                <th>Cantidad</th>
                <th>Modificar</th>
            </thead>
            <form action="<?=_URL_BASE_?>?controller=PrendaController&action=update" method="POST">
       
            <?php while($prenda = $prendas->fetch_object()): ?>
                <tr>
                    <td><?=$prenda->color?></td>
                    <td>
                        <?=$prenda->talla?>
                    </td>
                    <td>
                        <?=$prenda->cantidad?>
                    </td>
                    <td>
                       <input type="hidden" name="id()" value="<?=$prenda->id?>" />
                       <input type="number" name="cantidad()"value="<?=$prenda->cantidad?>" min="0" /> 
                        
                    </td>
                </tr>
                <?php endwhile; ?>
                
        </table>
        <input class="btn btn-dark float-right mr-2" type="submit" value="Actualizar" />        
        </form>
        <?php endif; ?>

</div>

El primer POST recibe correctamente el código de color para poder mostras las cantidad de prendas que hay en stock de ese modelo y color.
El segundo formulario muestra las prendas por color y talla y sus cantidades y debería envíar el id de la prenda y la cantidad, pero llega siempre vacío.
He leído páginas de este foro y en inglés. Y he buscado lo que he podido y entendido sobre si podía envíar dos posts sucesivos en la misma página, y o bien no lo he encontrado o no he entendido lo que he encontrado. Llevo días atascado, agradezco su ayuda.

¿Cómo ‘bajar’ de a 1 segundo a la vez?

let num = parseInt(prompt(‘Ingresa un numero’));
for (i= num; i > 0; –i) {
console.log(Baja: ${i});
};

html – Como atualizar lista do segundo select?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tabela Fipe</title>
    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css'/>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js'></script>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.bundle.min.js'></script>

    <style>
        h1 {
            text-align: center;
        }
        #loading {
            background-color: beige;
            position: absolute;
            width: 100%;
            height: 100%;
            opacity: 0.5;
        }

        #loading>div {
            position: relative;
            top: 50%;
            left: calc(50% - 50px);
        }
    </style>
</head>

<body>

<div class="alert alert-info alert-dismissible">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <strong>ALERTA!</strong> Ao navegar pela nossa plataforma, você declara estar ciente das condições do site.
</div>    

<div id="loading">
    <div>
        <div class="spinner-border text-primary"></div> Carregando...
    </div>
</div>    

<div>
    <h1>Tabela Fipe</h1>
    <div class="jumbotron" style="height: 400px; width: 500px; overflow-y: auto;">
        <h2>Consulte a lista de carros da tabela fipe</h2>
        <tr>
            <label>Selecione a Marca:</label>
            <select class="form-control" id="selMarcas" onchange="getVeiculos()"></select>
        </tr>
    </div>
    
    <div class="jumbotron"style="height: 400px; width: 500px; overflow-y: auto;">
        <label>Selecione o Modelo:</label>
        <select class="form-control" id="selVeiculos" onchange="getVeiculos()"></select>
    </div>  
</div>

<script>
    //$('(data-toggle="tooltip")').tooltip();
    $('button').tooltip();

    var selMarcas = $("#selMarcas");
    var selVeiculos = $("#selVeiculos"); 
    var loading = $("#loading");
    

    loading.hide();

    function getMarcas() {
    var url = "http://fipeapi.appspot.com/api/1/carros/marcas.json";
    loading.show();
    $.get(url, null, function(r) {
        for (var i = 0; i < r.length; i++) {
        selMarcas.append('<option value="' + r(i).id + '">' + r(i).name + '</option>');
        }
        loading.hide();
    });
    }
    

    function getVeiculos() {
    var idMarca = selMarcas.val();
    var url = "http://fipeapi.appspot.com/api/1/carros/veiculos/" + idMarca + ".json";
    loading.show();
    $.get(url, null, function(r) {
        //console.log(r);
        for (var i = 0; i < r.length; i++) {
        selVeiculos.append('<option value="' + r(i).id + '">' + r(i).fipe_name + '</option>');
        }
        loading.hide();
    });
  }
  
  getMarcas();


</script>
    
</body>
</html>

java – en threads cómo mostrar primer elemento de primer array y a continuación primer elemento del segundo array, asi sucesivamente?

Tengo dos arrays de Strings:
String[] mensajes = {“H1: Hola”, “H1: Como te llamas?”, “H1: Cómo eres?”, “H1:Adios”};
String[] mensajes = {“H2: Hola”, “H2: Me llamo Juan?”, “H2: Soy alto!”, “H2:Adios”};
En Java y con threads cómo puedo ir mostrando el primer elemento del primer array y a continuación el primer elemento del segundo array?
De manera que quede como una conversación que diga Hola Hola Cómo te llamas? Me llamo Juan Cómo eres Soy alto Adios Adios

¿Cuándo es que Thread.sleep(1000); en realidad no equivale a un segundo?

He programado un cronómetro que cada segundo incrementa una variable y la muestra en una caja de texto:

Thread.sleep(1000);
acumulador++;
jTextField1.setText(acumulador);

Además se ejecutan otras tareas, pero tras una hora de ejecución he notado que hay un retraso de dos o tres segundos, y he reducido los 1000 ms a 990 para ajustarlo, pero pienso que al llevarlo a otras computadoras habrá diferencias entre ellas, sospecho que el procesamiento de todo el código conlleva un retraso adicional y por eso el retraso, mi pregunta es ¿qué posibles explicaciones hay para el retraso, de tal modo que 1000 ms realmente no equivalen a un segundo en la ejecución?

Reproducción en segundo plano de webview no aparece Android

Hola estimados amigos del foros.

Les cuento que estoy desarrollando una APK super sencilla. Solo contiene un webview en pantalla completa y muestra una pagina con un par de noticia y abajo tiene un reproductor (todo esto en html).

Todo funciona muy bien, de hecho, al minimizar la aplicación la música (de una radio) se sigue reproduciendo, aun cuando esta bloqueado. Pero no puedo lograr que salga el nombre del reproductor, o la canción o al menos una referencia de lo que esta escuchando. Ya que no sale nada en la pantalla bloqueada, es como si el dispositivo no detectara ningún reproductor, pero si de fondo se escucha el sonido del webview.

Que puedo hacer ?

c – Erro exited, segmentation fault ao adicionar um segundo elemento a minha lista

Esse erro só ocorre quando eu adiciono um segundo elemento a minha lista encadeada, sei que o problema se encontra no else da função insere_contato mas não consigo identifica-lo.

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct{
  char Nome(40);
  char Telefone(15);
  char Celular(15);
  char Email(40);
  struct Agenda *Ponteiro_Aponta_Proximo;
}Agenda;
Agenda *cria_agenda(){
  return NULL;
} 
Agenda *insere_contato(Agenda *Ponteiro_Inicio, char Nome_Parametro, char Telefone_Parametro, char Celular_Parametro, char Email_Parametro){
  if(Ponteiro_Inicio == NULL){
    Ponteiro_Inicio = (Agenda *) malloc(sizeof(Agenda));
    Ponteiro_Inicio->Nome(40) = Nome_Parametro;
    Ponteiro_Inicio->Telefone(15) = Telefone_Parametro;
    Ponteiro_Inicio->Celular(15) = Celular_Parametro;
    Ponteiro_Inicio->Email(40) = Email_Parametro;
    Ponteiro_Inicio ->Ponteiro_Aponta_Proximo = NULL;
    return Ponteiro_Inicio;
  }else{
    Agenda *Vetor_Apontador;
    Vetor_Apontador = (Agenda *) malloc(sizeof(Agenda));
    strcpy(Vetor_Apontador->Nome(40),Nome_Parametro);
    strcpy(Vetor_Apontador->Telefone(15),Telefone_Parametro);
    strcpy(Vetor_Apontador->Celular(15),Celular_Parametro);
    strcpy(Vetor_Apontador->Email(40),Email_Parametro);
    Vetor_Apontador -> Ponteiro_Aponta_Proximo = Ponteiro_Inicio;
    return Vetor_Apontador;

  }
}
void lista_contatos(Agenda *Elementos){
    Agenda *Ponteiro_Para_Impressao = Elementos;
    while(Ponteiro_Para_Impressao != NULL){
    printf("nO nome do contato é : %s", Ponteiro_Para_Impressao->Nome);
    Ponteiro_Para_Impressao = Ponteiro_Para_Impressao -> Ponteiro_Aponta_Proximo;
  }
}
int main(){
  Agenda * Agnd;
  char Nome_Main(40);
  char Telefone_Main(15);
  char Celular_Main(15);
  char Email_Main(40);
  Agnd = cria_agenda();
  int Opcao = 10;
  while(Opcao != 4){
  printf("nMenu de opcoes:nn");
printf("1 - Inserir Contaton");
printf("2 - Listar Contatosn");
printf("3 - Buscar Contaton");
printf("4 - Sairn");

printf("nDigite a opcao a ser executada : ");
scanf("%d",&Opcao);
while(Opcao < 1 || Opcao > 4){
  printf("nOpcao invalida, Digite novamente a opcao : ");
  scanf("%d",&Opcao);
        
}
switch(Opcao){
  case 1:
    setbuf(stdin, NULL);
    printf("nDigite o Nome, Telefone, Celular, e Email da pessoa nessa sequencian");
    fgets(Nome_Main,40,stdin);
    fgets(Telefone_Main,15,stdin);
    fgets(Celular_Main,15,stdin);
    fgets(Email_Main,15,stdin);
    Agnd = insere_contato(Agnd, Nome_Main, Telefone_Main, Celular_Main, Email_Main);
    break;
  case 2:
    lista_contatos(Agnd);
    printf("n");
    break;

    }
  }

  return 0;
}

script – pagina que indentifica dois acessos na pagina, mesmo que ela não seja fechada, e libere um link no segundo acesso

ola sou novo no web e designer, e gostaria de um scritp que:
indentifique dois acessoas na pagina, sendo que, no segundo acesso que o usuario fizer tudo que esta na pagina inciaalmente some e aparece apenas uma mensagem ou um link…

resumindo, no primeiro acesso tem umas instruções e no segundo acesso as instruções somem e aparece apenas o link ou a mensagem…

muito obrigado!!!

c# – Vista con 3 Columnas en lazadas ¿Por qué no se ven los datos en el segundo ListBox al seleccionar un elemento del primero?

Estoy haciendo un proyecto en WPF MVVM en C# versión 2019. Mi vista de compone por 3 columnas (2 ListBox y al final un StackPanel) cuyos datos se muestra en cascada al seleccionar uno de ellos en el primer ListBox y luego en el siguiente ListBox, y finalmente en el StackPanel hay una serie de datos de detalle sobre el elemento elegido de la segunda columna. Mi pregunta es porque no soy capaz de que al clicar sobre un elemento de la primera columna aparezcan en la segunda y así mismo, en el StackPanel. ¿En qué me he equivocado que está mal en el codigo o he olvidado poner? Los Buttons aún no los he implementado.

Os dejo la parte de los ListBoxs y el StackPanel de la Vista.

 <ListBox Grid.Row="2" Grid.Column="0"
             ItemsSource="{Binding Path=AlleSprachen}"
             DisplayMemberPath="S_Language"
             SelectedValuePath="S_Sprach_Id"
             SelectedValue="{Binding Path=SelectedSprache, Mode=OneWayToSource, BindsDirectlyToSource=True}"/>
            
            <!--x:Name="lisprache"-->

    <!--Spalte 2-->
    <ListBox Grid.Row="2" Grid.Column="1"
             ItemsSource="{Binding IDundFremdenfuehrer}"
            SelectedValuePath="F_Fremdenfuehrer_Id"
             SelectedValue="{Binding Path=SelectedFremdenfuhrerID, Mode=OneWayToSource,BindsDirectlyToSource=True}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <Run Text="{Binding F_Fremdenfuehrer_Id}"/>
                    <Run Text=" - "/>
                    <Run Text="{Binding F_Vorname}"/>
                    <Run Text=" "/>
                    <Run Text="{Binding F_Nachname}"/>
                </TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

    <!--Spalte 3-->
    <StackPanel Grid.Column="2" Grid.Row="2" Margin="12"
                DataContext="{Binding Path=SelectedFremdenfuhrer}">
        <TextBlock Text="Mitarbeiter_ID" Margin="0 0 0 3" Padding="3"/>
        <TextBlock Text="{Binding F_Fremdenfuehrer_Id}" Margin="0 0 0 3" Padding="3"/>
        <TextBlock Text="Vorname"/>
        <TextBlock Text="{Binding F_Vorname}" Margin="0 0 0 3" Padding="3"/>
        <TextBlock Text="Nachname"/>
        <TextBlock Text="{Binding F_Nachname}" Margin="0 0 0 3" Padding="3"/>

        <Button Content="Neuer Fremdenfuhrer" Margin="5 32 5 3" Padding="5"
                Command="{Binding NewCommand}"/>
        <Button Content="Lösche Fremdenführer" Margin="5 5 5 3" Padding="5"
                Command="{Binding DeleteCommand}"/>
        <Button Content="Speichern" Margin="5 5 5 3" Padding="5"
                Command="{Binding SaveCommand}"/>
        <TextBlock x:Name="fehler" TextWrapping="Wrap"/>
    </StackPanel>
</Grid>

Esta es la clase de la carpeta ViewModel, a parte está el CodeBehind que está limpio de código.

namespace WpfAppXXX.ViewModel
{
class VMFremdenfbearb : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

    //ListBox1
    public IEnumerable<Sprache> AlleSprachen // ItemsSource="{Binding Path=AlleSprachen}"
    {
        get
        {
            using (Tour_DBEntities dB = new Tour_DBEntities())
            { 
            var erg = (from s in dB.Spraches
                       orderby s.S_Language //DisplayMemberPath="S_Language"
                       select s).ToList();
            dB.Dispose();
            return erg;
            }
        }
    }

    //neu Instanz anlegen und Methode
    private int selectedSprache;    //SelectedValue="{Binding Path=SelectedSprache und DatenTyp von SelectedValuePath="S_Sprach_Id"

    public int SelectedSprache
    {
        get
        {
            return selectedSprache;
        }
        set
        {
            selectedSprache = value;                                                 
            PropertyChanged(this, new PropertyChangedEventArgs("SelectedSprache"));  //SelectedValue Listbox1 
            PropertyChanged(this, new PropertyChangedEventArgs("IDundFremdenfuehrer"));  //ItemsSource ListBox2
        }

    }

    //ListBox 2
    public IEnumerable<Fremdenfuehrer> IDundFremdenfuehrer
    {
        get
        {
            using (Tour_DBEntities db = new Tour_DBEntities())
            {
                var erg = (from f in db.Fremdenfuehrers
                           where f.F_S_Sprach_Id == SelectedSprache
                           //orderby f.F_Fremdenfuehrer_Id + " " + f.F_Vorname + " " + f.F_Nachname
                           select f);
               
            //db.Dispose();
            return erg .ToList();
            }
        }
    }

    //StackPanel
    private int selectedFremdenfuhrerID;

    public int SelectedFremdenfuhrerID
    {
        get
        {
            return selectedFremdenfuhrerID;
        }
        set
        {
            selectedFremdenfuhrerID = value;
            PropertyChanged(this, new PropertyChangedEventArgs("SelectedFremdenfuhrerID"));
            PropertyChanged(this, new PropertyChangedEventArgs("SelectedFremdenfuhrer"));
        }
    }

    public object SelectedFremdenfuhrer
    {
        get
        {
            using (Tour_DBEntities db = new Tour_DBEntities()) 
            {
                var erg = from f in db.Fremdenfuehrers
                          where f.F_Fremdenfuehrer_Id == SelectedFremdenfuhrerID
                          select new
                          {
                              f.F_Fremdenfuehrer_Id,
                              f.F_Vorname,
                              f.F_Nachname
                          };

            return erg.ToList().FirstOrDefault();
            }
            
        }
    }

    //Buttons


}

}