Problema struttura codice php

di il
10 risposte

Problema struttura codice php

Ciao a tutti, sto facendo un progetto per l'università che consiste nella creazione di un sito web.
Ho un codice js che mi permette di creare delle icone e posizionarle a forma di cerchio, ma non riesco ad integrarlo bene nel mio codice php.

Il codice js è il seguente:
var list = $("#list");

var updateLayout = function(listItems){
	for(var i = 0; i < listItems.length; i ++){
		var offsetAngle = 360 / listItems.length;
		var rotateAngle = offsetAngle * i;
		$(listItems[i]).css("transform", "rotate(" + rotateAngle + "deg) translate(0, -470px) rotate(-" + rotateAngle + "deg)")
	};
};
var listItems=$(".list-item");
updateLayout(listItems);
mentre il pezzo di codice php è:
            <?php
             $db = mysqli_connect('localhost','root','','DBsito');
            if (!$db)
            {
              die('Could not connect to database: ' . mysqli_error());
            }
  
            $db_select = mysqli_select_db($db, 'DBsito');
            $username = $_SESSION['username'];
  
            $categorie = mysqli_query($db, "SELECT * FROM categoria WHERE BINARY categoria.user_utente = BINARY '$username'");
            $count = mysqli_num_rows($categorie);
            
           
            for($i = 1; $i<= $count; $i++){
              $categoria = mysqli_fetch_assoc($categorie);
              $nome_categoria = $categoria["nome_categoria"];

              echo '
              <a href="categoria.php?categoria='.urlencode($nome_categoria).'">
              
              <li class="list-item"><img class="card-icone" shadow-lg p-3 mb-5 src=img/upload/'. $categoria["icona"]. ' &nbsp  '.'>
              </li>
              </a>
              <script type="text/javascript" src="js/home.js">
              </script>'; 

            }

            ?>
Il mio problema è che avendo fatto un ciclo for per andare a prendere tutte le informazioni nel database, in class="list-item" alla fine ho solamente l'ultimo elemento del ciclo e non tutti come invece dovrebbe essere. Per questo alla fine visualizzo solamente l'ultimo elemento analizzato.
Qualcuno può aiutarmi?

10 Risposte

  • Re: Problema struttura codice php

    GattoFelice ha scritto:


    Ciao a tutti, sto facendo un progetto per l'università che consiste nella creazione di un sito web.
    Ho un codice js che mi permette di creare delle icone e posizionarle a forma di cerchio, ma non riesco ad integrarlo bene nel mio codice php.
    [...]
    Il mio problema è che avendo fatto un ciclo for per andare a prendere tutte le informazioni nel database, in class="list-item" alla fine ho solamente l'ultimo elemento del ciclo e non tutti come invece dovrebbe essere. Per questo alla fine visualizzo solamente l'ultimo elemento analizzato.
    Il problema sicuro che vedo è legato al fatto che l'importazione dello script, che avviene con questa istruzione

    <script type="text/javascript" src="js/home.js">
    </script>

    viene ripetuta per ogni elemento del ciclo, mentre dovrebbe essere fatta una volta sola (presumo).

    Per il resto, io proverei a ricostruire la pagina prendendo spunto dal codice che hai scritto, ma procedendo per gradi: prima esegui la query e recupera gli elementi, poi stendi una lista (normale, senza attributi aggiuntivi) dei dati che vuoi vedere e controlla che essa appaia sulla pagina, poi aggiungi via via gli stili, gli script, ecc. fino al completamento.

    Mettendo tutto assieme e valutando il risultato finale, o hai la padronanza di strumenti con i "Developer Tools" del browser (tasto F12) o comprendi la problematica dal sorgente della pagina originale, ma da una visione d'insieme senza approfondire è difficile poi capire se la causa è il markup, lo script o cos'altro.

    In sintesi, procedi per gradi e verifica progressivamente i risultati, cercando anche di capire l'obiettivo delle parti di codice che stai integrando.

    Ciao!
  • Re: Problema struttura codice php

    Alka ha scritto:



    Per il resto, io proverei a ricostruire la pagina prendendo spunto dal codice che hai scritto, ma procedendo per gradi: prima esegui la query e recupera gli elementi, poi stendi una lista (normale, senza attributi aggiuntivi) dei dati che vuoi vedere e controlla che essa appaia sulla pagina, poi aggiungi via via gli stili, gli script, ecc. fino al completamento.

    Se invece di <li class="list-item"> metto <li> semplice, la lista me la fa visualizzare correttamente, solo che ovviamente non mi posiziona le varie icone a cerchio. Ho spostato anche l'importazione dello script dopo il ciclo for. Il problema potrebbe quindi essere lo script?
  • Re: Problema struttura codice php

    GattoFelice ha scritto:


    Se invece di <li class="list-item"> metto <li> semplice, la lista me la fa visualizzare correttamente, solo che ovviamente non mi posiziona le varie icone a cerchio. Ho spostato anche l'importazione dello script dopo il ciclo for. Il problema potrebbe quindi essere lo script?
    Stando a questo comportamento, direi che è probabile.
  • Re: Problema struttura codice php

    Forse ho capito dove potrebbe stare il problema.
    Avevo già fatto una versione .html della pagina passandoci io stessa gli elementi semplicemente per testare il tutto, solo che ho dovuto modificare tutto perché dovevo prendere le informazioni nel database e non passarle io. Nella pagina html funzionava tutto, solo che ogni volta che aggiungevo una nuova icona, la classe "list-item" richiamata per la lista era diversa. Quindi penso che alla fine avevo varie liste tutte con un unico elemento che è appunto l'icona. Quindi lo script mi prendeva tutte queste liste e le disponeva a cerchio. Adesso invece ho un'unica lista con vari elementi dentro, appunto le icone.
    Potrebbe essere? Se si, come posso fare in modo che ogni volta che aggiungo una icona mi si crei una nuova lista?
  • Re: Problema struttura codice php

    Se usi un ciclo e mysqli_query per SELECT ritorna un oggetto mysqli, ma non avanzi il puntatore stampa n occorrenze ma con un solo valore, probabilmente il browser giustamente di tutte le tue list ne valida una. (Per questo vedi l'ultima, ma in realtà è la prima e unica).
    Il codice è lento se conosci a priori tutti gli elementi, nel tuo oggetto jquery var statico_count = listItems.length; poi il ciclo e la variabile, mentre non avrai bisogno di num_rows, poiché usi il while
    $result = mysqli_query($mysqli, $query);
    
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        printf("%s (%s)\n", $row["sai_cosa_mettere"], $row["sai_cosa_mettere2"]);
    }
    Infine mi chiedo perché usi la sessione ma non vedo session_start() ? (Come lo recuperi o crei, dal momento che occorre tale funzione).
    Comunque nell'attributo src stai anche inserendo il valore &nbsp un'entità carattere termina con il semicolonna ; (alcuni browser potrebbero produrlo ugualmente, perché? Bug).
  • Re: Problema struttura codice php

    Hormus ha scritto:


    Se usi un ciclo e mysqli_query per SELECT ritorna un oggetto mysqli, ma non avanzi il puntatore stampa n occorrenze ma con un solo valore, probabilmente il browser giustamente di tutte le tue list ne valida una. (Per questo vedi l'ultima, ma in realtà è la prima e unica).
    Il codice è lento se conosci a priori tutti gli elementi, nel tuo oggetto jquery var statico_count = listItems.length; poi il ciclo e la variabile, mentre non avrai bisogno di num_rows, poiché usi il while
    $result = mysqli_query($mysqli, $query);
    
    
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        printf("%s (%s)\n", $row["sai_cosa_mettere"], $row["sai_cosa_mettere2"]);
    }
    Infine mi chiedo perché usi la sessione ma non vedo session_start() ? (Come lo recuperi o crei, dal momento che occorre tale funzione).
    Comunque nell'attributo src stai anche inserendo il valore &nbsp un'entità carattere termina con il semicolonna ; (alcuni browser potrebbero produrlo ugualmente, perché? Bug).
    Ho provato a sostituire il ciclo for con il while ma riesco sempre a visualizzarne una, come posso fare?
    Il session_start() c'è ma per sbaglio non l'ho copiato e incollato insieme al resto del codice. Per quanto riguarda &nbsp è stato anche questo un errore, ho rimediato togliendolo.
  • Re: Problema struttura codice php

    Stai usando questo codice?
    https://3v4l.org/hvFR
  • Re: Problema struttura codice php

    Hormus ha scritto:


    Stai usando questo codice?
    https://3v4l.org/hvFR
    Esatto, ma visualizzo sempre una sola componente
  • Re: Problema struttura codice php

    Hormus ha scritto:


    Stai usando questo codice?
    https://3v4l.org/hvFR
    Più precisamente il codice è il seguente:
    <?php
    // START THE SESSION
    session_start();
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    
      <head>
    
        <title>NomeSito</title>
    
        <!-- Bootstrap core CSS -->
        <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    
        <!-- my CSS -->
        <link href="css/home.css" rel="stylesheet">
        
      </head>
      <body>
    
    
      <?php
                $db = mysqli_connect('localhost','root','','DBsito');
                if (!$db)
                {
                  die('Could not connect to database: ' . mysqli_error());
                }
      
                $db_select = mysqli_select_db($db, 'DBsito');
                $username = $_SESSION['username'];
      
                $categorie = mysqli_query($db, "SELECT * FROM categoria WHERE BINARY categoria.user_utente = BINARY '$username'");
    
      ?>
      
      <div class="row">
              <ul id="list">
              
              <?php   
               
                /* fetch associative array */
                while ($row = mysqli_fetch_assoc($categorie)) {
    
                  echo '
                  <a href="categoria.php?categoria='.urlencode($row["nome_categoria"]).'">
                  <li class="list-item"><img class="card-icone" shadow-lg p-3 mb-5 src="img/upload/'. $row["icona"] . '" &nbsp;  >
                  </li>
                  </a>';
                  }
                ?>
                <script type="text/javascript" src="js/home.js"></script>
                </ul>
              </div>
              
    
          <?php
          //SET SESSION VARIABLES
          $_SESSION["username"] = $username;
          ?>
                                  
      </body>
    </html>
      
  • Re: Problema struttura codice php

    Hormus ha scritto:


    Stai usando questo codice?
    https://3v4l.org/hvFR
    Misa' che riesco a vederne solamente una di icona perché me la mette una sopra l'altra, non segue la disposizione a cerchio che gli passo tramite il codice js. Infatti se tolgo o metto la chiamata al file home.js vedo sempre la stessa cosa, forse sbaglio il punto in cui richiamo lo script?
Devi accedere o registrarti per scrivere nel forum
10 risposte