Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema Form con connessione a DB

    salve ho il seguente problema che non so come aggirare,
    praticamente devo fare un form per l'inserimento di una posizione d'arrivo ad una tappa per un insieme di giocatori(non mi dilungo piu di tanto nella spiegazione della tappa) per ogni giocatore all'interno di un DB
    Io avevo pensato di fare un'interfaccia php nel seguente modo:
    lista dei giocatori presenti nel db con di fianco un menù a tendina per ognuno dove scegliere la posizione d'arrivo (la pos va da 1 a 10+ in quanto dal 10 in poi non c'è differenza e ND se il giocatore non era presente alla tappa) come in figura



    il mio problema è il seguente: come passo tutti i menù a tendina?perchè in sostanza passerei una variabile da recuperare in POST nella pagina di "ricezione" per ogni giocatore e il numero di giocatori può variare(quindi anche il numero di variabili da recuperare).. posso passare tutte le posizioni come un unico array in modo da avere quindi una sola variabile da andare a recuperare in POST?Se si come faccio?
    il codice per il momento è qualcosa di questo tipo (ma come ho detto presenta il problema di avere un numero non variabile di variabili che devono essere poi recuperati nella pagina di "ricezione")

    Codice PHP:
    <?php
    //parte di connessione al db
    $sql "SELECT * FROM \"Giocatore\" ";
    $i=0;
    ?><form action="paginaRicezione.php" name="pgr" method="POST"><?php
    foreach ($dbh->query($sql) as $row)
      {
      
    $nome=$row['nickname']; ?>
      <div class="nome-ris" id="nome-<?php echo $i+1;?>" ><?php  print $nome?></div>
      <div class="posizione-ris" id="posizione-<?php echo $i+1;?>">
         <select name="pos-<?php print $nome;?>">
         <?php 
         
    for ($m=1$m<10$m++) 
          { 
    ?>
          <option value="<?php print $m?>"> <?php print $m?> </option>
          <?php 
           
    ?>
        <option  value="<?php print '10'?>"> <?php print '10+'?> </option>
        <option  value="<?php print 'assente'?>"> <?php print 'N.D.'?> </option>
        </select>
      </div>
      <div class="clearer"></div>
      <?php $i++;
      }
      
    ?> </form> <?php
     
    //resto codice
    ?>
    mi scuso per la scarsa identazione ma ho avuto dei problemi a copiare il codice e spero di essere stato chiaro nella spiegazione del problema

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    scusa se "bypasso" la domanda... nn puoi usare jquery (o simile) e fare un pannello dove si trascinano i nomi nella posizione corretta (tipo )?lista riordinabile

  3. #3
    eh non conosco jquery
    poi devo necessariamente presentare il progetto in php

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non c'entra la questione "in php"... con il php genererai cmq un'interfaccia html, suppongo... se cmq non vuoi/puoi usare javascript e/o altre librerie allora ti suggerisco di fare un elenco di tag input con NAME="POS[]" e accanto un menu a discesa con l'elenco dei "giocatori" e l'id corrispondente... lo script riceverebbe una variabile $_POST['POS'] tipo:

    codice:
    array(
    0 => xxx,
    1 = > xxx,
    2 => xxx,
    ...
    );
    Naturalmente dovresti - penso - evitare "doppioni", ma per questo opterei per js: quando selezioni la prima pos dal menu a discesa, viene eliminata dalle altre. Oppure fai un controllo a posteriori in php stesso, oppure fai dei form "sequenziali" (scegli la prima pos, poi ti compare un nuovo form per la seconda e così via)

  5. #5
    non ho capito 2 cose
    1 facendo come dici però mi resta il problema che non conosco a priori quanti siano i giocatori (quindi non so quante pos ci sono e di conseguenza quanti menù a tendina devo fare)e che comunque dovrei tener conto anche delle posizioni dopo la 9 (dal 10 in poi per me son tutti uguali e non voglio distinguerli, è come se arrivassero tutti decimi) giusto?
    2 in sostanza mi stai dicendo che se facessi i menù in questo modo
    Codice PHP:
    <select name="POS[<?php print $x;?>]">
    poi sulla pagina di ricezione posso direttamente ricevere tutto l'array facendo
    $x=$_POST['POS'] che è il mio array con in pos 1 il nome di quello che è arrivato primo ecc...giusto?cioè posso poi fare una cosa tipo print $x[1] che mi stampa il nome di chie arrivato primo?se no come accedo agli elementi dell'array?
    alternativamente potrei fare la stessa cosa ma mandare al posto che le posizioni i nomi come indici dell'array e al posto del nome la posizione nel contenuto?
    cioè avere $x[nome giocatore] contenente la posizione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.