Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Combine di più array

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194

    Combine di più array

    Ciao, ho trovato una soluzione ad un mio problema ma volevo sapere se esistesse, ed immagino di sì, una soluzione più elegante.
    Dunque, ho tre array creati dall'inserimenti di dati dell'utente: $id, $titolo, $foto.
    Ho bisogno di fare dei cicli di questi array tenendo in considerazione l'id.
    Ho combinato $id con $titolo e ho fatto il mio ciclo. Ora, se ho capito bene, l'array $id una volta combinato, è andato perduto; se infatti provo a fare un combine tra $id e $foto mi dice che devo avere più di un campo per fare un combine.
    Ho risolto velocemente mettendo i miei id su due array così che potessi combinarli con entrambi gli altri due array. Voi come avreste fatto?
    Vi metto un codice di esempio:

    Codice PHP:
    $id $_POST['id'];
    $newid $_POST['id'];
    $titolo $_POST['titolo'];

    if (empty(
    $_FILES['userFile']['type']))
                {                    
                    
    $array array_combine($id$titolo);
                    foreach (
    $array as $id => $titolo)
                        {
                           ..............
                        }
                                    

                    if (isset(
    $_FILES['modifica']))
                        {     
                            
    $array array_combine($newid$_FILES['modifica']['tmp_name']);
                            foreach (
    $array as $newid => $_FILES['modifica']['tmp_name'])
                            {  
                             .............
                             };
                        };
                 }; 

    Ho provato anche a ricreare un nuovo array id ad ogni ciclo di $id-$titolo ma senza successo.
    Codice PHP:
    $array array_combine($id$titolo);
                    foreach (
    $array as $id => $titolo)
                        {
                            
    $newid[] = $id;
                        } 

  2. #2
    L'array $id non è andato perduto è che tu nel ciclo foreach hai utilizzato la variabile $id sovrascrivendo quella originale contenente l'array!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, non mi e' molto chiaro quale dovrebbe essere il risultato finale.
    Hai dei dati in arrivo da una form, e devi mettere in un array con un solo ID sia il valore di foto che titolo ( e/o alro)?
    Non ti basta creare un array in questo modo?
    codice:
    $array = array($id => array('foto'=>'valore', 'titolo'=>'valore', .......)
    Cosi' come fatto nell'esempio oltretutto se entra nel secondo IF $array si resetta perchè viene ricreato da capo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Ciao, grazie delle risposte.
    $array = array($id => array('foto'=>'valore', 'titolo'=>'valore', .......)
    Così ad occhio e croce non so se fa a caso mio, ad esempio il mio file contiene diversi valori al suo interno ([type],[name],ecc..)... sì, forse esplodendo il file ed inserendoli singolarmente.. ci devo pensare.

    La situazione al momento comunque è questa. Ho un form che crea in automatico gli array dei mie valori: name="id[]", name="titolo[]", (type="file" name="modifica[]") ed altre cose.
    Mi serve che siano in array perchè l'html riprodotto, dal numero degli id, è sempre uguale ma l'utente deve avere la possibilità di cambiare uno o tutti questi valori con un singolo "salva".
    Se avessi un salva per ogni singolo valore ciclato, ogni mio singolo id, non avrei di questo problema.

    Nella pagina php:
    1) ricevo il tutto
    2) controllo se ci sono valori in arrivo
    3) inserisco in db i nuovi valori
    4) aggiorno tutti i restanti per essere sicuro di includere le modifiche ai valori precedenti

    Intanto che scrivo sto ancora pensando al risultato che otterrei mettendo in array tutti i dati come mi hai proposto... sto un po' azzerato. Credo che dovrei fare in modo di aggiornare il mio array di volta in volta perchè se ad esempio cancello una foto tutta una mia riga sparisce. Non so se sarei in grado di procedere in quella maniera. Secondo te è sempre una soluzione valida?

  5. #5
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Se non ho capito male ora hai una form dove inserisci alcuni dati tipo Titolo, descrizione..... più N elementi tipo immagine con relativi dati associati, per questo array.
    A rigor di logica se sa quanti sono gli elementi dovresti avere lo stesso indice array per ognuno di questi blocchi.
    Quindi se hai name[] nel primo blocco, avrai name[] nel secondo e su elaborazione riceverai name[0] e name[1].
    Basta ciclare sul numero del primo array per leggerli tutti e l'indice sarà sempre corrispondente.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Sì giusto, lo terrò presente per i prossimi lavori.
    Ora ad esempio ho un php per la cancellazione ed uno per l'aggiornamento. Se cancello un id dal DB dovrei cancellarlo anche dall'array ed è più immediato che tutto sia in una sola pagina o dovrei portarmi a spasso il mio array.
    Grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Rispolvero questa mia discussione e vi sarei immensamente grato per ogni dritta aiuto o suggerimento.
    Sono ancora alle prese con gli array e questa volta devo assolutamente lavorare come mi è stato proposto da m4rko80 perchè ho parecchie variabili tutte scritte a ciclo dal mio DB. Quindi piuttosto che portarmi dietro più array, che non saprei come incrociare, ne vorrei uno contentente tutte le mie variabili.
    Non riesco però ad usare le variabili in un array e non trovo esempi in internet che mi aiutino.
    In pratica l'array legge la mia variabile come testo e non gli da il valore associato. Ho provato con apici vari e parentesi ma senza risultato.

    Per provare il risultato sto lavornado sulla stessa pagina. Vi posto il codice

    Codice PHP:
        <?php 
                $sql
    ="SELECT * FROM `home`";
                
    $dati=mysql_query($sql);
                while(
    $row=mysql_fetch_assoc($dati))
                {
                
                
    $id $row['id'];
                
    $titolo $row['titolo'];
                
    $sottotitolo $row['sottotitolo'];
                
    $prodotto $row['prodotto'];
                
    $descrizione $row['descrizione'];
                
    $prodlink $row["prodlink"];
                
                        
    $home = array( $id => array (
                        
    'titolo' => '$titolo',
                        
    'sottotitolo' => '$sottotitolo',
                        
    'prodotto' => '$prodotto',
                        
    'descrizione' => '$descrizione',
                        
    'link' => '$prodlink'
                        
    ));
                        
    ?>
                        
                <div class="box">
                    <div class="boxalto">

                        <div class="boximg boxeffect" style="background:#fff url(data:<?php echo $row['type']; ?>;base64,<?php echo $row['thumb']; ?>) center center no-repeat; background-size: cover;">
                        <img src="images/mascherina.png" alt="<?php echo $row["prodotto"]; ?>">
                        <input class="add" type="file" name="userFile" />
                        </div>
                        <div class="boxarrow">
                        <div class="boxarrowline"></div>
                        </div>
                        <input class="header3" name="prodotto" type="text" placeholder="Il titolo qui" value="<?php echo $row["prodotto"]; ?>" />
                        <table style="position:absolute; margin-left:2%; border:none;">
                        <tr>
                        <td>
                        <span class="shadow white">Caratteri rimanenti:</span>
                        </td>
                        <td id="contatoreprod<?php echo $row['id']; ?>" style="color:#000">
                        </td>
                        </tr>
                        </table>
                        <p class="boxdesc">
                        <textarea id="desc<?php echo $row['id']; ?>" class="paragrafo" name="descrizione" onkeyup="updateCounter(this, 200, 'desc<?php echo $row['id']; ?>', 'contatoreprod<?php echo $row['id']; ?>');" placeholder="Scriva qui il suo articolo"><?php echo $row["descrizione"]; ?></textarea>
                        </p>
                        <div class="boxfondo">
                        <input class="continua" name="prodlink" type="text" placeholder="Link" value="<?php echo $row["prodlink"]; ?>" />
                        </div>
                    </div>
                    <input class="nascosto" type="text" name="id" value="<?php echo $row['id']; ?>" />
                </div>
                <?php
                
    }
                
    ?>        
                <div class="clear"></div>
                <input class="nascosto" type="text" name="key" value="<?php echo $key?>" />
                <input class="nascosto" type="text" name="home" value="<?php echo $home?>" />
                <button class="salva" type="submit" formaction="db/homeupload.php">Salva</button>
            </form>
            <?php print_r($home); ?>

    Ottengo: Array ( [6] => Array ( [titolo] => $titolo [sottotitolo] => $sottotitolo [prodotto] => $prodotto [descrizione] => $descrizione [link] => $prodlink ) )

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Ho risolto in parte. Pensavo di dover usare gli apici per le variabili e invece no, tolti e l'array mi restituisce i valori giusti.
    Ora il problema è come inviare il mio array alla pagina di destinazione del form oppure come creare il mio array nella pagina di destinazione.

    1) Se creo il mio array nella mia pagina di destinazione a logica ho inserito gli ultimi dati inviati perchè il mio form è un ciclo di elementi sempre uguali: id, titolo, sottotitolo, prodotto... ecc. Questo è il motivo per il quale avevo optato per usare id[], titolo[], prodotto[],ecc...

    2) Se invece creo il mio array nella pagina del form aggiornando l'array al ciclo del mio db, come invio il mio array? Se metto nell'input del form echo $home non ho nulla.

    In sostanza:

    Caso1
    Codice PHP:
    $id $_POST ['id'];
    $titolo $_POST['titolo'];
    $sottotitolo $_POST['sottotitolo'];
    $prodotto $_POST['prodotto'];
    $descrizione $_POST['descrizione'];
    $link $_POST['link'];
            
            
    $home = array( $id => array (
                        
    'titolo' => $titolo,
                        
    'sottotitolo' => $sottotitolo,
                        
    'prodotto' => $prodotto,
                        
    'descrizione' => $descrizione,
                        
    'link' => $link
                        
    )); 
    Caso2:
    Codice PHP:
    <form method="post" enctype="multipart/form-data">
            
                <?php
                $sql
    ="SELECT * FROM `home` WHERE id=1";
                
    $dati=mysql_query($sql);
                
    $row=mysql_fetch_assoc($dati);
                
    ?>
                
                <div class="title">
                <input class="header1" name="titolo" type="text" placeholder="Il titolo qui" value="<?php echo $row["titolo"]; ?>" />
                </div>
                <input class="header2" name="sottotitolo" type="text" placeholder="Il sotto titolo qui" value="<?php echo $row["sottotitolo"]; ?>" />
                
            <div class="container">
            
                <?php 
                $sql
    ="SELECT * FROM `home`";
                
    $dati=mysql_query($sql);
                while(
    $row=mysql_fetch_assoc($dati))
                {
                        
    $home = array( $id => array (
                        
    'titolo' => $titolo,
                        
    'sottotitolo' => $sottotitolo,
                        
    'prodotto' => $prodotto,
                        
    'descrizione' => $descrizione,
                        
    'link' => $link
                        
    ));
                
    ?>
                
                <div class="box">
                    <div class="boxalto">

                        <div class="boximg boxeffect" style="background:#fff url(data:<?php echo $row['type']; ?>;base64,<?php echo $row['thumb']; ?>) center center no-repeat; background-size: cover;">
                        <img src="images/mascherina.png" alt="<?php echo $row['prodotto']; ?>">
                        <input class="add" type="file" name="userFile" />
                        </div>
                        <div class="boxarrow">
                        <div class="boxarrowline"></div>
                        </div>
                        <input class="header3" name="prodotto" type="text" placeholder="Il titolo qui" value="<?php echo $row['prodotto']; ?>" />
                        <table style="position:absolute; margin-left:2%; border:none;">
                        <tr>
                        <td>
                        <span class="shadow white">Caratteri rimanenti:</span>
                        </td>
                        <td id="contatoreprod<?php echo $row['id']; ?>" style="color:#000">
                        </td>
                        </tr>
                        </table>
                        <p class="boxdesc">
                        <textarea id="desc<?php echo $row['id']; ?>" class="paragrafo" name="descrizione" onkeyup="updateCounter(this, 200, 'desc<?php echo $row['id']; ?>', 'contatoreprod<?php echo $row['id']; ?>');" placeholder="Scriva qui il suo articolo"><?php echo $row["descrizione"]; ?></textarea>
                        </p>
                        <div class="boxfondo">
                        <input class="continua" name="link" type="text" placeholder="Link" value="<?php echo $row['link']; ?>" />
                        </div>
                    </div>
                    <input class="nascosto" type="text" name="id" value="<?php echo $row['id']; ?>" />
                    <input type="text" name="home" value="<?php echo $home?>" />
                </div>
                <?php
                
    }
                
    ?>        
                <div class="clear"></div>
                <input class="nascosto" type="text" name="key" value="<?php echo $key?>" />
                <button class="salva" type="submit" formaction="db/homeupload.php">Salva</button>
            </form>

    Aiutooooo

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Correggo, nel caso 2:

    Codice PHP:
    $home = array( $row["id"] => array (
                        
    'titolo' => $row["titolo"],
                        
    'sottotitolo' => $row["sottotitolo"],
                        
    'prodotto' => $row["prodotto"],
                        
    'descrizione' => $row["descrizione"],
                        
    'link' => $row["link"]
                        )); 
    Ultima modifica di Ciakko; 09-11-2015 a 21:55

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Ho provato con serialize per inserire il mio array in una variabile da spedire in POST. Quando però nella pagina di destinazione faccio unserialize mi da errore: unserialize() expects parameter 1 to be string.
    Devo trattare la mia variabile in qualche maniera quando la ricevo?
    $data = unserialize($_POST['home']);

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.