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

    Inserimento valori di un array in un db

    Salve a tutti, ho un problema che non riesco a risolvere. La soluzione sarà banale ma non ci arrivo.Sto costruendo un sito dedicato al fantacalcio.

    Ho due pagine (1.php e 2.php). Nella pagina 1.php seleziono la formazione della squadra per esempio 3-4-3 e in maniera dinamica mi si creano 3 select per i difensori, 4 per i centrocampisti e 3 per gli attaccanti. Per ogni select ottenuta seleziono i giocatori che voglio schierare. Passo i valori alla pagina 2.php così strutturata:

    Codice PHP:
    <?php
    session_start
    (); 

    include(
    "config.php");  

    $admin_id "x"
    //recupero la variabile relativa al portiere
    $portiere $_POST['portiere']; 

    //recupero la variabile che identifica il numero di select relative al difensore. per esempio se la tattica è 3-4-3 il primo numero relativo al difensore fa si che creo 3 select e quindi $j vale 3
    $j $_POST['incremento']; 
    for(
    $i=0;$i<=$j;$i++){ 
    //assegno alla variabile $difens i valori passati nelle select
    $difens $_POST['difensore'.$i]; 
    //stampo per prova questi valori ed effettivamente vengono passati tutti
    echo $difens;


    $k $_POST['incremento2']; 
    for(
    $i=0;$i<=$k;$i++){ 
    $centrocamp $_POST['centrocampista'.$i]; 
    echo 
    $centrocamp


    $m $_POST['incremento3']; 
    for(
    $i=0;$i<=$m;$i++){ 
    $attacc $_POST['attaccante'.$i]; 
    echo 
    $attacc
    }  

    echo 
    $portiere;  

    $connessione = @mysql_connect($mysql_host$mysql_user$mysql_password);
    @
    mysql_select_db($mysql_db_name) or die ("Non posso selezionare il database"); 

    $sql "INSERT INTO formazione (id_squadra, portiere, difensore, centrocampista, attaccante) VALUES ('$admin_id', '$portiere', '$difens', '$centrocamp','$attacc')"
    mysql_query($sql);                  
    if(
    $sql){             
    echo 
    "Inserimento ok";         
    }else{             
    echo 
    "Errore";         
    }  
    ?>
    Il mio problema consiste nel fatto che durante l'inserimento tramite la query sql vengono immessi nel database solo gli ultimi campi dei difensori, dei centrocampisti e degli attaccanti e non tutti quanti. Per esempio se i miei difensori sono: Molinaro, De Ceglie e Cannavaro nel database viene inserito solo Cannavaro e lo stesso discorso vale per i centrocampisti e per gli attaccanti.
    Come posso risolvere?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    432
    Il problema che lamenti è abbastanza ovvio.

    Fare:

    Codice PHP:
    for($i=0;$i<=$k;$i++){ 
    $centrocamp $_POST['centrocampista'.$i];
     echo 
    $centrocamp; } 
    è come fare

    Codice PHP:
    $centrocamp $_POST['centrocampista1'];
    $centrocamp $_POST['centrocampista2'];
    $centrocamp $_POST['centrocampista3'];
    $centrocamp $_POST['centrocampista4']; 
    Percui è ovvio che alla fine la variabile $centrocamp vale $_POST['centrocampista4'];
    Per la soluzione non mi sento di consigliarti "artigianalate", io sinceramente valuterei di modificare lo schema della tabella (portandolo almeno alla prima forma normale), andando quindi a creare una tabella giocatore che ad esempio ha i campi id, nome, squadra, ruolo ed andando a inserire i dati dentro di essa.

  3. #3
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Così facendo invece, inserisce tutti i nomi come unica stringa nel campo centrocampista della tabella formazione
    codice:
    $centrocamp = "";
    $k = $_POST['incremento2'];
    for($i=0;$i<=$k;$i++){
    $centrocamp = $centrocamp + $_POST['centrocampista'.$i];
    } 
    echo $centrocamp;
    ma non so se può essere la tua soluzione; e poi bisognerebbe ottenere i nomi separati da virgola/spazio.

  4. #4
    Grazie a tutti per le risposte...i vostri consigli sono stati molto di aiuto perchè grazie a voi ho potuto risolvere. Mi avete fatto riflettere! (Ogni tanto mi sa che è meglio che faccio una pausa )

    Comunque ho risolto proprio considerando il metodo di Enzaccio nel seguente modo:

    Codice PHP:
    $difens "";
    $j $_POST['incremento']; 
    for(
    $i=0;$i<=$j;$i++){     
       if(
    $difens == ""){     
          
    $difens $_POST['difensore'.$i];
       }else{     
          
    $difens $difens "#" $_POST['difensore'.$i];
       }
    }

    //in questo modo il risultato che ottengo è il seguente: Molinaro#De Ceglie#Cannavaro
    echo $difens
    proprio quello che volevo in un'unica variabile e in un unico campo del db.

    Per estrarlo quando occorrerà basta che uso:

    Codice PHP:
    $difensore explode "#"$difens ); 
    Grazie ancora per la vostra disponibilità

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 © 2024 vBulletin Solutions, Inc. All rights reserved.