come interrogo array php?

VAik

Utente Attivo
16 Apr 2016
117
3
18
ciao a tutti ragazzi
tramite un programma php

PHP:
$strsql= "SELECT * FROM slideshow ";
$rs = @mysqli_query($link, $strsql) or die("Errore query database: " . mysqli_error($link));


    $result = array();
    while ($riga = mysqli_fetch_array($rs)) {
        $result[] = $riga;
    }
    echo json_encode($result);

ottengo un array con diverse coppie chiave-valore.

come faccio ora con un metodo $.ajax a prelevare delle info dall'array (mi interessa una chaive in particolare indirizzo_foto) e costruire un tag <img src="">

Codice:
$.ajax({
            url: 'file.php',
            dataType: "json",     //<-----o devo mettere HTML?
             
            success: function (dati) {

//in dati ci dovrebbe essere l'array costruito nel file .php. giusto?

                     console.log(dati);
                //var indi=dati.indirizzo_foto;      //con .indirizzo_foto  vado ad accedere ad una chiave dell'array . E' corretto?
               // var image = "<img src=\"" + indi + "\">";   //vorrei costruire un tag img
                  $('img src').html(dati.indirizzo_foto);
                var image = "<img src=\"" + indi + "\">";
                $('#boxslide img').append(image);
            }
        });
   
    
    }
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, tutto corretto ma devi usare un ciclo : la query ti restituisce più risultati
in questo modo dovresti riuscire a estrarre il primo valore
Codice:
var indi=dati[0].indirizzo_foto;
con un ciclo each() li estrai tutti
 
  • Like
Reactions: VAik

VAik

Utente Attivo
16 Apr 2016
117
3
18
Ciao Criric
grazie per avermi risposto. Ho modificato in questo modo, ma non mi funziona la comparsa delle immagini:

HTML:
 function animo(tipo) {
        if (tipo=='succ' && spostamento>-imgdim*numimg) {
            spostamento -= imgdim;
            slideDB();
            $box.css('margin-left',spostamento+'px');
        } else if (tipo=='prec' && spostamento<0) {
            spostamento += imgdim;
            slideDB();
            $box.css('margin-left',spostamento+'px');
        }
    }

  function slideDB() {
        $.ajax({
            url: 'lettura-da-altervista_per_slideshow.php',
            dataType: "json",
          
            success: function (dati) {
                     console.log(dati);
                         
                $(dati).each(function () {//scorro questo oggetto
                    var indi=dati[0].indirizzo_foto;
                    var image = "<img src=\"" + indi + "\">";
                    $('#boxslide').append(image);
                    });
            
            
            }
        });
 
 
 
    }//chiudo funzione
});//chiudo tutto lo script

        </script>



</head>
<body>
<section id="slogan">
         <div id="controllo_slide">
               <div id="finestra_slide">
                      <div id="boxslide">
                           <img src="../images/slide1.png" width="570" alt="Slide 1">
                        <!--    <img src="../images/slide2.png" width="570" alt="Slide 2">
                               <img src="../images/slide3.png" width="570" alt="Slide 3"> -->
                            </div>
                        </div>
                     
                        <a href="#" class="prec"><img src="../images/prev.png" width="24" height="43" alt="Precedente"></a>
                        <a href="#" class="succ"><img src="../images/next.png" width="24" height="43" alt="Successivo"></a>
                    </div>
                    <img src="../images/cornice.png" alt="">
                </section>

</body>
</html>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
la sintassi giusta è questa
Codice:
$.ajax({
        url: 'lettura-da-altervista_per_slideshow.php',
        dataType: "json",
        success: function (dati) {
            $(dati).each(function (i, e) {//scorro questo oggetto
                var image = "<img src=\"" + e.indirizzo_foto + "\">";
                $('#boxslide').append(image);
            });
        }
    });
guarda nella console del browser se ti dà errori.
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
ciao Criric
ho modificato anche come hai scritto tu, non ci sono errori ma non funziona.

Perchè hai usato questa forma ed hai abbandonato

var indi=dati[0].indirizzo_foto;

e poi hai messo come parametri di ingresso alla funzione del ciclo each() la i e la e
e poi hai usato solo la e?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
la prima serviva per estrarre solo il primo elemento , era un prova
la i e la e servono per estrarre dal ciclo l'indice e l'elemento
metti nel ciclo console.log(e.indirizzo_foto) e anche console.log(i) e guarda in console cosa ti scrive
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
ciao

allora
HTML:
console.log(e.indirizzo_foto);
mi da in consolle 14 indefiniti

HTML:
console.log(i);
mi da proprio l'indice ed infatti ne vedo 1-2-3-4-------14
HTML:
console.log(dati[0].indirizzo_foto);
mi da in consolle 14 indefiniti
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
posta tutta la struttura del json
console.log(dati);
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
questo lo ottengo se nel datatype del metodo $.ajax imposto html.
Se imposto json non riesco a vedere nulla
Codice:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>leggo i file dal db di altervista</title>
</head>

<body><!-- BEGIN AV_TOOLBAR -->
<div id="av_toolbar_regdiv">
<div class="av_site"><a target="_blank" href="http://it.altervista.org/crea-sito-gratis.php?utm_campaign=toolbar&amp;utm_source=link&amp;utm_medium=link" title="Siti, blog e web hosting gratis">Crea sito</a></div>
</div>
<script type="text/javascript">
(function(d, s) {
    var fjs = d.getElementsByTagName(s)[0], js = d.createElement(s);
    js.src = "//tb.altervista.org/js/script.js?1";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script'));
</script>
<!-- END AV_TOOLBAR -->



tutto l'array è[{"0":"1","id":"1","1":"prima slide","titolo":"prima slide","2":"prima slide dello slideshow","descrizione":"prima slide dello slideshow","3":"http:\/\/miosito.org\/img_s_show\/slide1.png","indirizzo_foto":"http:\/\/miosito.org\/img_s_show\/slide1.png"},
{"0":"2","id":"2","1":"seconda slide","titolo":"seconda slide","2":"seconda slide dello slideshow","descrizione":"seconda slide dello slideshow","3":"http:\/\/miosito.org\/img_s_show\/slide2.png","indirizzo_foto":"http:\/\/miosito.org\/img_s_show\/slide2.png"},
{"0":"3","id":"3","1":"terza slide","titolo":"terza slide","2":"terza slide dello slideshow","descrizione":"terza slide dello slideshow","3":"http:\/\/miosito.org\/img_s_show\/slide3.png","indirizzo_foto":"http:\/\/miosito.org\/img_s_show\/slide3.png"}]
    </body>
    </html>
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
intendevo quello che esce in console.
Fai cosi : modifica la query aggiungendo LIMIT 1 cosi lavoriamo su una sola immagine
rimetti nel ciclo console.log(i) e console.log(e) e guarda in console cosa ti scrive
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
la pagina php deve esclusivamente mandare in echo il json, non ci può essere altro codice. Togli tutto il resto e lascia solo il risultato della query : echo json_encode($result);
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
allora ho modificato il file .php eliminando tutto ciò che era html.

con console.log(e); e console.log(i); ottengo
Codice:
jquery-latest.js:2 Uncaught Error: Syntax error, unrecognized expression: [{"0":"1","id":"1","1":"prima slide","titolo":"prima slide","2":"prima slide dello slideshow","descrizione":"prima slide dello slideshow","3":"http:\/\/miosito.org\/img_s_show\/slide1.png","indirizzo_foto":"http:\/\/miosito.org\/img_s_show\/slide1.png"}]
fa.error @ jquery-latest.js:2
fa.tokenize @ jquery-latest.js:2
fa.select @ jquery-latest.js:2
fa @ jquery-latest.js:2
n.fn.extend.find @ jquery-latest.js:2
n.fn.init @ jquery-latest.js:2
n @ jquery-latest.js:2
$.ajax.success @ prova_slideshow_da_fonte_esterna.html:122
i @ jquery-latest.js:2
j.fireWith @ jquery-latest.js:2
z @ jquery-latest.js:4
(anonymous function) @ jquery-latest.js:4
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
se richiami direttamente la pagina php cosa ti stampa il browser ?
metti limit 1
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
si ho messo LIMIT 1 e mi da appunto solo la prima immagine: cioè aprendo il file .php visualizzo questo

Codice:
[{"0":"1","id":"1","1":"prima slide","titolo":"prima slide","2":"prima slide dello slideshow","descrizione":"prima slide dello slideshow","3":"http:\/\/miosito.org\/img_s_show\/slide1.png","indirizzo_foto":"http:\/\/miosito.org\/img_s_show\/slide1.png"}]
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
anche se considero console.log(dati) ottengo

quello di prima e sotto anche quello del messaggio 13
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
il json che hai postato è corretto. Ho fatto questa prova :
pagina json.php
PHP:
<?php

echo '[{"0":"1","id":"1","1":"prima slide","titolo":"prima slide","2":"prima slide dello slideshow","descrizione":"prima slide dello slideshow","3":"http:\/\/miosito.org\/img_s_show\/slide1.png","indirizzo_foto":"http:\/\/miosito.org\/img_s_show\/slide1.png"}] ';
manda in echo il json

pagina index.hrml
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
    $.ajax({
        url: 'json.php',
        dataType: "json",
        success: function (dati) {
            $(dati).each(function (i, e) {
                console.log(i);
                console.log(e.indirizzo_foto);
            });
        }
    });
</script>
scrive correttamente in console l'indice 0 e l'url dell'immagine.
Ricontrolla bene tutto il tuo codice e prova anche questo semplice esempio con il tuo file php
 
  • Like
Reactions: VAik

VAik

Utente Attivo
16 Apr 2016
117
3
18
ok, allora ho trovato....usciva il problema sempre per via del DataType del metodo $.ajax.
Se imposto "json" ora va bene.
con
console.log(e.indirizzo_foto);
vedo appunto l'indirizzo dell'immagine

invece con
console.log(e);

vedo l'oggetto
Codice:
Object {0: "1", 1: "prima slide", 2: "prima slide dello slideshow", 3: "http://miosito.org/img_s_show/slide1.png", id: "1", titolo: "prima slide", descrizione: "prima slide dello slideshow", indirizzo_foto: "http://miosito.org/img_s_show/slide1.png"}

Levando dal file .php il LIMIT 1 alla query, vedo tutte e tre gli oggetti

QUINDI

diciamo che legge bene il file esterno.

EDIT:forse funziona anche con le slide
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
bene, puoi togliere i log e il limit 1 , dovrebbe funzionare.
 
  • Like
Reactions: VAik

VAik

Utente Attivo
16 Apr 2016
117
3
18
si quando ho modificato per l'ennesima volta dicendo che funzionava, mi riferivo proprio a questo fatto: che le slide scorrono.

Bellissimo, veramente bell'effetto. Devo limare qualcos'altro però penso che un grande passo è stato fatto.
GRAZIE GRAZIE GRAZIE
Per ora mi fermo perchè è arrivato il momento tanto atteso del pranzo.
Dopo vedo come migliorare l'effetto.
 
  • Like
Reactions: criric
Discussioni simili
Autore Titolo Forum Risposte Data
otto9due Leggere valore da array multidimensionale a chiavi dinamiche PHP 1
M Passaggio variabili array php su un tasto jq PHP 3
M Somma inversa di Array C/C++ 2
MarcoGrazia Iterazione array PHP 5
N Passare array da php a javascript PHP 5
G Ordinare un array multidimensionale PHP 4
H Errore su array associativo PHP 1
K Array senza ripetizioni Presentati al Forum 4
A Gestione array multidimensionale PHP 6
otto9due Più chiavi in array con array_key_exists() PHP 0
M Array associativi php su 2 campi mysql PHP 10
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L Sessione e array per utenti PHP 0
R Importazione csv su mysql tramite array PHP 2
elpirata Ricavare e stampare indirizzo ip da array associativo PHP 0
P Ciclare tra array di oggetti PHP 1
R Raggruppare valori array PHP 5
S Come conoscere la posizione di numeri in un array escludendo i doppioni PHP 4
D Popolare array PHP 8
R Includere elementi array fra apici PHP 1
P Array da foreach PHP 2
N Variabile di sessione è un array PHP7 PHP 3
R Scorporare array e recuperare record tabella PHP 10
A Contare gli elementi di un array PHP 13
A Importare array in mysql PHP 1
A Array di immagini Sviluppo app per Android 10
D Chiave unica in estrazione dati da array php PHP 0
D Spazio vuoto in un elemento di un array php PHP 2
S Come filtrare valori di un array PHP 4
mazman mysqli_query() mi ritorna un array vuoto anche se presente un record nella tabella PHP 13
A Non è un array e nemmeno un intero, che tipo di dato è? Javascript 1
max1974 PHP, Array Multidimensionale e Grafici PHP 22
S [PHP] Confrontare due array con valori quasi uguali PHP 2
MarcoGrazia [PHP] Unioni di due array con somma di valori PHP 6
R [PHP] Visualizzazione dati Array PHP 2
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
M Importare - Manipolare Json Array Sviluppo app per Android 2
M [PHP] Problemi su inserimento array nel db PHP 7
M [PHP] Visualizzare un array partendo dal numero 1 e non 0 PHP 5
G [ASP] Ciclare i valori di 2 array Classic ASP 2
S [PHP] Estrarre elementi array su più variabili PHP 5
S [PHP] Estrarre dati tabella in diversi array PHP 2
max1974 [PHP] Raggruppare array PHP 4
A [PHP] Caricamento database in array PHP 11
G sql select con array in php PHP 1
L [Java] Aggiungere elementi ad array JSON Java 0
S [PHP] individuare chiave elemento array PHP 7
A [PHP] Script con array con numeri che iniziano per 00 PHP 2
Emix [Javascript] Somma con array input HTML Javascript 1

Discussioni simili