Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292

    inserire valori di array nel database

    Ciao ragazzi vi espongo subito il mio problema, in pratica ho un DB strutturato così:

    nome_it | nome_uk | nome_por | nome_jp | nome_es | nome_fr

    e in poche parole le lingue potranno aumentare in un secondo momento

    alchè ho pensato di farmi un array così:

    Codice PHP:
    $lingue = array (
        
    "Italiano" => "it",
        
    "Inglese" => "uk",
        
    "Por" => "por",
        
    "Giapponese" => "jp",
        
    "Spagnolo" => "es",
        
    "Francese" => "fr"); 

    e quando devo stampare i valori presenti in quei campi faccio così:

    Codice PHP:
    foreach($lingue as $etichetta => $valore) {

    echo 
    $etichetta ": " $row['nome_'.$valore];


    fin qui nessun problema...adesso quello che non riesco a fare è l'inserimento e la modifica all'interno del db perchè non so cosa mettere perchè se non so a priori i nomi dei campi cosa gli devo mettere?

    Codice PHP:

    INSERT INTO categorie 
    (?) VALUES ($?) 

    Potreste aiutarmi?

    P.S. Il database non l'ho strutturato io così ma è un progetto già realizzato e devo riprenderlo.

    Grazie

    Matt86

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    37
    come sono strutturati i campi che devi andare a riempire?
    sono uguali per tutte le tabelle?
    nome_it | nome_uk | nome_por | nome_jp | nome_es | nome_fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    no, ho una tabella che si chiama "categorie" e dentro ho i campi:

    nome_it | nome_uk | nome_fr ...

    olio | oil | huile ...
    vini | wines | vin ...

  5. #5
    Sai che non ho capito quale sia il problema?

    Spiegati un po' meglio, magari con un esempio dove si presenta il tuo problema nello specifico.

    Probabilmente non saprò aiutarti, ma almeno capisco il problema.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    sono riuscito a fare questo:

    Codice PHP:
    $query "INSERT INTO tabella (";

    foreach(
    $lingue as $etichetta => $valore) {

        
    $query .= "nome_" $valore ",";
        
    }

    if (
    strlen($query)>0) {
         
    $query substr($query 0strlen($query )-1);
    }  

    $query .= ") VALUES (";

    foreach(
    $lingue as $etichetta => $valore) {

        
    $query .=$_POST['nome_' $valore] . ",";
        
    }
    if (
    strlen($query)>0) {
         
    $query substr($query 0strlen($query )-1);
    }
      
    $query .= ")";

    echo 
    $query
    adesso funziona ma il codice mi sembra molto lungo, come potrei trasformarlo in una funzione?

  7. #7
    Originariamente inviato da m4tt86
    sono riuscito a fare questo:

    Codice PHP:
    $query "INSERT INTO tabella (";

    foreach(
    $lingue as $etichetta => $valore) {

        
    $query .= "nome_" $valore ",";
        
    }

    if (
    strlen($query)>0) {
         
    $query substr($query 0strlen($query )-1);
    }  

    $query .= ") VALUES (";

    foreach(
    $lingue as $etichetta => $valore) {

        
    $query .=$_POST['nome_' $valore] . ",";
        
    }
    if (
    strlen($query)>0) {
         
    $query substr($query 0strlen($query )-1);
    }
      
    $query .= ")";

    echo 
    $query
    adesso funziona ma il codice mi sembra molto lungo, come potrei trasformarlo in una funzione?
    Non hai risposto alla mia domanda, ma a grandi linee puoi semplificare tutto usando 2 funzioni:

    serialize

    e

    unserialize

  8. #8
    Ciao,

    prima di tutto questo if e' sempre vero:

    Codice PHP:
    if (strlen($query)>0) {
         
    $query substr($query 0strlen($query )-1);

    A causa di questo:

    Codice PHP:
    $query "INSERT INTO tabella ("
    Mentre per rispondere alla tua domanda puoi fare cosi:
    Codice PHP:


    $fields 
    $values "";
    foreach(
    $lingue as $etichetta => $valore) {
      
    $fields .= "nome_$valore,";
      
    $values .= "'".$_POST["nome_$valore"] . "',";
    }

    $fields substr($fields0, -1); // Guardati sul manuale l'utilizzo di un val. negativo come ultimo parametro
    $values substr($values0, -1); 


    $query "INSERT INTO tabella ($fields) VALUES ($values)";
    echo 
    $query
    Non ho messo l'if. Se ho capito giusto come volevi utilizzarlo (dal tuo codice non e' molto charo... ), puoi mettere tutto il codice che ho scritto all'interno di questo:

    Codice PHP:
    if(count($lingue) > 0) {
    ...


  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Allora ti spiego bene il mio problema.
    Sto realizzando un portale in 6 lingue dove vi sono presenti delle categorie, delle sottocategorie e all'interno si trovano i prodotti. Ora siccome devo lavorare su un DB già realizzato precedentemente da un altro programmatore, io ovviamente mi devo adeguare alla struttura di questo db.

    la tabella categorie ha i seguenti campi:

    nome_it, nome_uk, nome_fr, nome_por, nome_jp, nome_es


    In poche parole è il nome della categoria in 6 lingue.

    Ora siccome chi vuole realizzato questo sito mi ha detto che in un secondo momento il numero di lingue potranno aumentare io volevo realizzare un sistema che quando dovrò aggiungere altre lingue io dovrò intervenire solo sul db e non sul codice (ovvero dovrò aggiungere i valori solo sull'array delle lingue che si trovano su un file di configurazione).

    Per visualizzare i dati presenti nei diversi campi ho fatto semplicemente:

    Codice PHP:
    $lingue = array (     "Italiano" => "it",     "Inglese" => "uk",     "Por" => "por",     "Giapponese" => "jp",     "Spagnolo" => "es",     "Francese" => "fr"); 
    Codice PHP:
    foreach($lingue as $etichetta => $valore) {  echo $etichetta ": " $row['nome_'.$valore];  } 

    Fin qui nessun problema.

    Adesso volevo sapere, come posso invece fare l'inserimento, la modifica e la cancellazione sfruttando l'array lingue visto che "non so" a priori quante lingue ci sono nel db (visto che possono crescere)?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    292
    Grazie WhiteDragon,
    adesso il codice è molto più pulito :-)

    ora però volevo chiederti se potresti aiutarmi a trasformare il tutto in una funzione

    Codice PHP:
    $campi = array ("nome_","descrizione_");

    function 
    inserisci_nel_db ($lingue$campi) {

    $fields $values "";
    foreach(
    $lingue as $etichetta => $valore) {

      
    $fields .= "nome_$valore,";
      
    $values .= "'".$_POST["nome_$valore"] . "',";
      
    }

    $fields substr($fields0, -1); // Guardati sul manuale l'utilizzo di un val. negativo come ultimo parametro
    $values substr($values0, -1);


    $query "INSERT INTO tabella ($fields) VALUES ($values)";
    return 
    $query;


    il mio problema è che non riesco a sostituire "nome_$valore," con $campi

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.