Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    Metodo corretto per creare Array da riutilizzare

    Scusatemi (e buona domenica a tutti), il titolo non è molto chiaro ma cerco di spiegare nel miglior modo possibile.

    Al caricamento di una pagina effettuo una query SQL su MySQL

    codice:
    SELECT nome_foto FROM foto WHERE id_ristorante = $id_ristorante
    (ovviamente funziona)

    Dato che dovrò stampare successivamente i nomi delle foto, mi salvo il tutto all'interno di un array

    codice:
    $result = @$mysqli->query($sql);
    	
    	if(@$result->num_rows > 0) {
    	
    		$temp=array();
    		while($row = mysqli_fetch_array($result)) {
    		
    			$temp[]=$row;
    			
    		} // while
    	
    	} // if(@$result->num_rows > 0) {
    Il problema è che la struttura dell'array (testata con

    codice:
    echo "<pre>";
    print_r($temp);
    echo "</pre>";
    ) è la seguente:

    codice:
    Array
    (
        [0] => Array
            (
                [0] => 25-fotovacanza12.jpg.png
                [nome_foto] => 25-fotovacanza12.jpg.png
            )
    
        [1] => Array
            (
                [0] => 25-fotovacanza12.jpg-opia.png
                [nome_foto] => 25-fotovacanza12.jpg-opia.png
            )
    
        [2] => Array
            (
                [0] => 25-fotovacanza12.jpg-opia-opia.png
                [nome_foto] => 25-fotovacanza12.jpg-opia-opia.png
            )
    
    )
    Il contenuto è corretto (parlo di "nome_foto"), anche verificando direttamente con il db, ma non capisco cos'è quel [0], da dove l'abbia tirato fuori....

    Mi starebbe anche bene lasciarlo cosi, vi dico la verità, solo che a questo punto non mi dispiacerebbe modificare questo codice

    codice:
    <?php foreach($temp as $valori) {
    				
    						   foreach($valori as $valore) {
    						   
    								echo "<img src=\"".$percorso_foto_assoluto_ristoranti.$valore."\" title=\"\" alt=\"\" />";
    								
    							} // foreach($valori as $valore){
    						
    						} // foreach($temp as $valori){
    						
    				 ?>
    per evitare che mi stampi in totale 6 foto, avendone trovate 3 (o 4 trovandone 2)

    Grazie a tutti e di nuovo buona domenica!

  2. #2

    Re: Metodo corretto per creare Array da riutilizzare

    Originariamente inviato da webtemplum
    Il contenuto è corretto (parlo di "nome_foto"), anche verificando direttamente con il db, ma non capisco cos'è quel [0], da dove l'abbia tirato fuori....
    E' l'indice dell'array che hai creato: 4 elementi hanno indice che va da 0 a 3.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Scusami...
    le foto sono solo 3, non 4, cosi l'indice va da 0 a 2 (e fin li ci sono)

    non intendevo [0] => Array [1] => Array etc, ma questo:

    codice:
    [0] => 25-fotovacanza12.jpg.png
    ripetuto per ogni elemento (ed infatti mi stampa 6 foto, non 3)

    grazie!

  4. #4
    Perche', in mancanza del secondo argomento, la funzione mysqli_fetch_array() (come chiaramente specificato nel manuale) restituisce un array con entrambi gli indici: numerico e stringa.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Risolto!
    Sbagliavo la chiamata mysqli e creavo un bidimensionale...

    Semplicemente risolto con

    codice:
    while($row = mysqli_fetch_row($result)) {
    Grazie comunque!

  6. #6
    Originariamente inviato da webtemplum
    Sbagliavo la chiamata mysqli e creavo un bidimensionale...
    No, ottenevi un array con due valori, che e' una cosa molto diversa.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Ma a me non interessavano infatti due valori... mi serviva di tirar fuori solo un valore... tanto che alla select dicevo di tirar fuori solo il "nome_foto", laddove l'id del ristorante fosse stato uguale...

    Dove mi sto perdendo?

  8. #8
    Originariamente inviato da webtemplum
    Ma a me non interessavano infatti due valori... mi serviva di tirar fuori solo un valore... tanto che alla select dicevo di tirar fuori solo il "nome_foto", laddove l'id del ristorante fosse stato uguale...

    Dove mi sto perdendo?
    Non estraevi due valori, solo che la funzione *_fetch_array restituisce un array in cui ogni valore compare due volte: una volta con un indice numerico e una volta con il suo indice stringa (che e' il nome del campo del database o dell'alias specificato nella query). Ripeto, e' spiegato chiaramente nel manuale, basta leggero.

    Comunque se ti serve un solo valore e' buona norma aggiungere solo quello all'array cumulativo:
    codice:
    $temp = $row['nome_foto']

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    E infatti mi sono ribloccato...
    Perchè ora necessito di estrarre anche la descrizione della foto.
    Ti chiedo per favore, puoi indirizzarmi a far si che..

    premessa: dall'id che passo estraggo 3 foto e 3 descrizioni.

    L'array che mi si compone è il seguente:
    codice:
    Array
    (
        [0] => Array
            (
                [0] => 25-fotovacanza12.jpg.png
                [1] => interno del locale
            )
    
        [1] => Array
            (
                [0] => 25-fotovacanza12.jpg-opia.png
                [1] => esterno del locale
            )
    
        [2] => Array
            (
                [0] => 25-fotovacanza12.jpg-opia-opia.png
                [1] => dall'alto
            )
    
    )
    A logica ci sono, ciclo dentro un altro ciclo, potresti pero' per favore indirizzarmi, magari ad uno stesso problema già risolto?

    Grazie

  10. #10
    Non ho capito il problema, mi sembra che li' ci siano tutti i dati che ti servono.

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.