• User Attivo

    Scusate se mi intrometto, ma nel 2019 non si possono vedere più le funzioni di mysql native. Né per didattica, né per test, per nulla proprio!

    Utilizza PDO per interfacciarti con MySQL 🙂

    https://it.phptherightway.com/#databases

    Al massimo MySQLi


  • Moderatore

    @flaviors200 said:

    Scusate se mi intrometto, ma nel 2019 non si possono vedere più le funzioni di mysql native. Né per didattica, né per test, per nulla proprio!

    Utilizza PDO per interfacciarti con MySQL 🙂

    https://it.phptherightway.com/#databases

    Al massimo MySQLi
    Ciao flaviors200.
    Hai perfettamente ragione in quello che dici e mi trovi pienamente d'accordo, anche perchè sono funzioni deprecate da anni che non girano quasi più da nessuna parte. Detto questo però, questa non è una scuola, ma un luogo ove cercare confronto e chiedere aiuto.
    La parte della richiesta in questo thread è una corretta Query SQL per ottenere dei dati, più che l'uso di PHP e va benissimo che tu dica di usare PDO, ma allora poni un esempio pratico, così che possa rimanere qui di aiuto anche per qualcun altro, perchè siamo tutti in grado di leggere php.net, ma non tutti abbiamo la stessa esperienza in questo settore.


  • User Attivo

    Ciao Stefano,

    non voglio certo fare il professore qua dentro, anche perchè di esperienza ne ho ma imparo sempre qualcosa di nuovo tutti i giorni, e credo che si possa imparare anche dai forum 🙂

    L'esempio pratico in realtà c'è e lo avevo pure linkato

    http://it.phptherightway.com/#databases

    Posso anche riportare il codice qui sul forum, però l'editor del codice molte volte non indenta bene e fatico parecchio a farlo a manina con gli spazi, dunque o lo posto su pastebin oppure, come in questo caso, il codice è già nella risorsa linkata (tra l'altro ancorata al paragrafo sui database).

    Grazie comunque per il tuo intervento.


  • Moderatore

    @flaviors200 said:

    Ciao Stefano,

    non voglio certo fare il professore qua dentro, anche perchè di esperienza ne ho ma imparo sempre qualcosa di nuovo tutti i giorni, e credo che si possa imparare anche dai forum 🙂

    L'esempio pratico in realtà c'è e lo avevo pure linkato

    http://it.phptherightway.com/#databases

    Posso anche riportare il codice qui sul forum, però l'editor del codice molte volte non indenta bene e fatico parecchio a farlo a manina con gli spazi, dunque o lo posto su pastebin oppure, come in questo caso, il codice è già nella risorsa linkata (tra l'altro ancorata al paragrafo sui database).

    Grazie comunque per il tuo intervento.
    Io ti ringrazio per la partecipazione che hai nel forum, ma oggettivamente parlando (non soggettivamente), quegli esempi non spiegano nulla, ma forse dei concetti dove fare copia e incolla per chi, già conosce le strutture di PDO e può prenderne spunto per riscriverle, perchè a livello codice, sono bucate e prive di controlli.
    Se conosci PDO, sai benissimo che esistono una serie ben definita di istruzioni che vanno passate alle variabili e che fanno parte della classe stessa, che li, non vengono neanche menzionate compromettendo di molto la stabilità e sicurezza delle connessioni al database.
    Questo intendevo. O si fanno degli esempi concreti e ben definiti oppure è preferibile non aggiungere altre nozioni a metà a delle persone che magari cercano aiuto su tutt'altro argomento, che ricordo essere una query SQL.


  • User Attivo

    Salve a tutti, 🙂
    come ho specificato nel thread sono un principante che conosce poco il php, quel poco che ho imparato non mi permette di risolvere i problemi legati a questo linguaggio,
    per questo chiedo aiuto a voi che siete molto piu' esperti di me, spero con il tempo di migliorare e aiutare un giorno forse qualcuno allo mio stesso livello.
    Il PDO non lo conosco, parto dalle basi piccole, dopotutto il mio database lo uso solo io.
    Grazie a tutti, e spero mi aiutate 🙂

    ps: non sono un programmatore, ne opero in questo campo, il mio lavoro e' di un altro tipo,
    quello che faccio e' una passione.


  • Moderatore

    Ciao Alex, cerco di aiutarti anche se sono dal telefono e mi rimane veramente difficile scrivere una corretta SQL, però il concetto te lo posso illustrare.
    Per estrarre gli attori di un dato film, devi necessariamente effettuare un query su di essi e non sul film da estrarre e lo puoi fare eseguendo un INNER JOIN.
    In pratica, la tua query è errata dal punto di vista delle estrazioni, non proprio nel metodo.
    Ovvero.
    Select actor.name as name, actor.photo as photo, film.movie_title as movie_title, film.year as year FROM film_actor INNER JOIN actor on film_actor.actor_id = actor.actor_id INNER JOIN film on film.film_id = film_actor.film_id where actor_film.film_ id = $film_id

    Mi spiace che sono in giro e non riesco ad aiutarti al meglio.
    Prova e fammi sapere.


  • User Attivo

    Ciao Ultima,
    a quale codice ti riferisci? :mmm:
    a film.php o cinema.php?
    perche' come lo strutturato adesso funziona come volevo io
    certo ci sono ancora molte cose da fare,
    oltre a quello citato sopra (non posso inserire il link al post perche' non sono Premium), ma e' quello prima del vostro intervento

    e questi (dove apriro' altri thread)

    • trovare il metodo per inserire le foto agli attori e i film
    • avere la possibilita' di aggiungere, cancellare, modificare dalla pagina php
    • inserire film scegliendo un attore collegato o viceversa
      ecc...

  • Moderatore

    Io creerei un unico file, film.php che viene richiesto quando passi la variabile film_id. In questo modo, con una sola query ottieni sia il film richiesto, che la lista degli attori partecipanti in elenco con annessi parametri aggiuntivi.
    Poi, per il caricamento delle immagini, quindi delle photo, cerca su PHP.net la variabile globale $_files e la funzione move_uploaded_file()
    Ci sono esempi pratici, che con un po'di ingegno, riesci tranquillamente ad adattare alle tue esigenze.
    Per le altre cose, il discorso è più ampio perché entrano in gioco altri tipi di fattori, sia di HTML, php e SQL, ma niente di trascendentale.
    Potresti provare a cercare su Google qualcosa tipo: creare un mini CMS in PHP. Almeno per apprenderne i concetti base. Ma a mio avviso, dovresti cercare per prima cosa sullo sperimentare porzioni di codice, per apprenderne la logica. Poi quando hai una buona conoscenza di base, ti lanci nella costruzione di un qualcosa di tuo.


  • User Attivo

    Ultima ciao,

    Ricreare tutto da zero e' un'impresa per me, ci ho messo mesi per arrivare a questo risultato, sono piu' professionale con il mio mestiere che scrivere php
    come e' scritto il codice adesso sembra funzionare, mancano ancora alcune cose da aggiustare, ma non so come fare,

    se mi aiuti su come visualizzare i **credited nella pagina cinema.php **ho risolto la fase query

    poi apro altre discussioni per gli altri aiuti


  • User Attivo

    @Ultima said:

    Io ti ringrazio per la partecipazione che hai nel forum, ma oggettivamente parlando (non soggettivamente), quegli esempi non spiegano nulla, ma forse dei concetti dove fare copia e incolla per chi, già conosce le strutture di PDO e può prenderne spunto per riscriverle, perchè a livello codice, sono bucate e prive di controlli.
    Se conosci PDO, sai benissimo che esistono una serie ben definita di istruzioni che vanno passate alle variabili e che fanno parte della classe stessa, che li, non vengono neanche menzionate compromettendo di molto la stabilità e sicurezza delle connessioni al database.
    Questo intendevo. O si fanno degli esempi concreti e ben definiti oppure è preferibile non aggiungere altre nozioni a metà a delle persone che magari cercano aiuto su tutt'altro argomento, che ricordo essere una query SQL.

    Ma infatti quelle risorse servono soprattutto a prendere spunto, se uno vuole la pappa bella e pronta è un altro discorso.

    Io ho semplicemente fatto notare che bisognerebbe cambiare approccio e non copiare e incollare il primo codice che si trova in rete, seguendo cattive pratiche.

    Nell'esempio del sito PHP The Right Way c'è tutto quello che serve per connettersi ed eseguire query in maniera sicura, comprese le query parametriche.

    istruzioni che vanno passate alle variabili e che fanno parte della classe stessa, che li, non vengono neanche menzionate compromettendo di molto la stabilità e sicurezza delle connessioni al database

    Cosa intendi? I parametri PDO::MYSQL_ATTR_INIT_COMMAND oppure PDO::ATTR_EMULATE_PREPARES ad esempio?


  • User Attivo

    Noto con dispiacere che nessuno ha voglia di aiutarmi, pazienza, funziona cosi anche nella vita di tutti i giorni :(, purtroppo.
    L'altruismo non esiste piu'.


  • User Attivo

    forse ho trovato la soluzione, la query e' questa

    [PHP]

    require_once("connetti.php");

    $film_id = $_GET["id"];
    $query = mysql_query ("SELECT credited, note FROM film_actor Where actor_id = {$film_id}");

    while($row=mysql_fetch_array($query)){

    [/PHP]

    il problema e che la devo inserire dentro quest'altra, se no i campi sono sballati, ho provato cosi, ma viene generato un errore :bho:

    [PHP]
    <?php

    $con = mysqli_connect("localhost","root","","xxx");

    $id = $_GET['id'];

                $id = mysqli_real_escape_string($con,$id);  
                $query = mysqli_query($con, "SELECT film.* FROM film  
    

    JOIN film_actor ON film_actor.film_id = film.film_id
    WHERE film_actor.actor_id = " . intval($_GET['id']));
    while($row=mysqli_fetch_array($query)){

    $film_id = $_GET["id"];
    $query_2 = mysql_query ("SELECT credited, notes FROM film_actor Where actor_id = {$film_id}");

    while($row=mysql_fetch_array($query_2)){
    ?>

    <tr class="we">

    <td><?php echo "<a href="film.php?id=" . $row['film_id'] . "">" . $row['movie_title'] . "</a>";?></td>

    <td><?php echo $row['year']; ?></td>
    <td><?php echo $row['distributor']; ?></td>
    <td><?php echo $row['credited']; ?></td>
    <td><i><?php echo $row['notes'] ?></i></td>

    <?php
    }
    }
    ?>

    [/PHP]


  • Moderatore

    Che errore ti stampa?
    Se lo posti, magari si trova la soluzione


  • User Attivo

    Ciao Ultima, 🙂

    l'errore e' questo

    **Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in **W:\domains\localhost\Cinema_2019\cinema.phpon line **408
    
    **Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in **W:\domains\localhost\Cinema_2019\cinema.phpon line **408************
    

    **linea 408
    **
    [PHP]while($row=mysql_fetch_array($query_2)){
    [/PHP]


  • Moderatore

    Il tuo errore è molto semplice.
    Tu generi una variabile al primo while chiamata $row, ove al suo interno la sovrascrivi nel secondo ciclo while chiamandola sempre $row.
    Ma soprattutto, a cosa ti serve la prima query se all'interno della seconda query non utilizzi nessun parametro?
    A parte questo, prova intanto a modificare il nome della seconda variabile $row, magari usando semplicemente $row2. Se hai ancora errori, riporta l'errore.


  • User Attivo

    Torno a spiegare

    Il database è in mysql cosi formato

    Database struttura: 3 tabelle

    actor: <------Table
    actor_id
    photo
    name

    film: <------Table
    film_id
    movie_title
    year

    film_actor: <------Table
    actor_id
    film_id
    credited
    notes

    nella pagina film.php io visualizzo la scheda film e gli attori (non vedo la foto, ma questo lo risolveremo dopo)

    quello importante sono gli attori, la query mi restituisce il** nome**, credited e notes

    questo e' il codice

    film.php
    [PHP]<?php

    require_once("connetti.php");

    $film_id = $_GET["id"];
    $query = mysql_query ("SELECT * FROM film_actor as fa JOIN actor as a ON a.actor_id = fa.actor_id JOIN film as f ON f.film_id = fa.film_id WHERE fa.film_id = {$film_id}");

    while($row=mysql_fetch_array($query)){

    ?>

    <div class="castbox"><p><img class="headshot" src="<?php echo $row ['nome'] ?>"><br><?php echo "<a href="cinema.php?id=" . $row['actor_id'] . "">" . $row['nome'] . "</a>";?></a><br><i><?php echo $row['credited'] ?></i><br><pre><?php echo $row['notes'] ?></pre><br> <br> <br></div>

    <?php
    }
    ?>

    <?php[/PHP]

    nella pagina **cinema.php **visualizzo la scheda attore (anche la foto) con tutti i dati e la lista dei suoi film, tramite DataTables (per il filtraggio e la ricerca istantanea)

    ****cinema.php <------------------**query1
    **
    [PHP]<?php

    $con = mysqli_connect("localhost","root","","xxx");

    $id = $_GET['id'];

                $id = mysqli_real_escape_string($con,$id);  
                $query = mysqli_query($con, "SELECT film.* FROM film  
    

    JOIN film_actor ON film_actor.film_id = film.film_id
    WHERE film_actor.actor_id = " . intval($_GET['id']));
    while($row=mysqli_fetch_array($query)){
    ?>

    <tr class="we">

    <td><?php echo "<a href="film.php?id=" . $row['film_id'] . "">" . $row['movie_title'] . "</a>";?></td>

    <td><?php echo $row['year']; ?></td>
    <td><?php echo $row['distributor']; ?></td>
    <td><i><?php echo $row['notes'] ?></i></td>
    <td><?php echo $row['credited']; ?></td>

    <?php
    }
    ?>
    [/PHP]

    dove sta il problema? non visualizzo credited e notes nella lista film,
    questa e' la tabella riproposta

    film_actor: <------Table
    actor_id
    film_id
    credited
    notes

    questa sembra funzionare ma la devo inserire il codice nella stessa query query1, se no i dati non vengono visualizzati in DataTables

    [PHP]$film_id = $_GET["id"];
    $query = mysql_query ("SELECT credited FROM film_actor Where actor_id = {$film_id}");

    while($row=mysql_fetch_array($query)){ [/PHP]


  • Moderatore

    Forse non mi sono spiegato.
    Tu hai due variabili row ricorsive. Quando assegni il primo while a row se utilizzi la stessa variabile row nel secondo while che ti ricordo essere nel primo, il primo row che generi lo distruggi e di conseguenza tronchi il ciclo while primario mandando in confusione tutto. E questo è il primo errore.
    Il secondo è che le due query, non parlano tra loro. Nonostante siano una dentro l'altra.
    Altro errore. Le JOIN non sono corrette, anche se ti funzionano, la sintassi è errata.
    Il tuo è un solo errore di logica, non di scrittura, perché il codice per quanto obsoleto in parte è corretto. Ma devi sistemare la logica, ottimizzare l'algoritmo di estrazione.
    Ti do una dritta. Le query, testale con un phpmyadmin. Quando funzionano, allora estrai i dati con PHP.
    Esegui sempre dei test, prima di scrivere del codice. (Debug)


  • User Attivo

    Ritorniamo al punto di partenza :(, lo scritto anche a Giorgio nel suo canale youtube, nel suo intervento di oggi,
    se io ero capace di fare quello che stai scrivendo allora non era necessario chiedere il vostro aiuto, purtroppo io e il php siamo ancora conoscenti, al 5%,
    sono un autodidatta e la mia passione e' imparare qulcosa, ma a volte trovo degli ostacoli che non riesco a superare, :bho:
    tra l'altro io svolgo un lavoro che e' il contrario del vostro, il mio e' manuale, e quello si lo faccio professionalmente.


  • User Attivo

    Nessuna risposta, nessun aiuto concreto, solo concetti virtuali, bisogna avere una laurea in informatica per poter dialogare, se sei un principiante sei perduto.
    Mi rassegno 😞 questo forum e' una vera delusione, come tutti gli altri in Italia. 😞
    Cerchero' le mie risposte in altre fonti su canali esteri del mio paese.


  • Moderatore

    Ciao Alex, questo è un forum dove l'intento degli utenti è cercare di aiutare le persone a crescere in quello che stanno facendo. Io ti ho largamente detto come e cosa fare, ma evidentemente o non mi faccio capire o oppure cerchi di avere qualcosa di già bello che funzionante.
    La programmazione non funziona in questo modo. E no, non bisogna avere una laurea in informatica, ma bisogna studiare e comprendere a fondo le basi della programmazione.
    Te lo riscrivo, io ti ho dato errori e soluzioni, se poi non sei in grado di implementarli, allora siamo su un altro livello di conoscenza. E dire che questo forum è una delusione è una cavolata immensa, perchè questo thread che hai aperto ha già una miriade di risposte di utenti che hanno cercato di aiutarti, ma non puoi pretendere che le persone si fermino a prepararti la pappa.
    Io non so quanti anni hai, ma di certo hai bisogno di studiare le fondamenta della programmazione, iniziando dalle basi, non da codice rubato da internet per poter cercare di fare qualcosa di tuo, se poi non lo sai adattare.
    Mi spiace che la pensi in questo modo, ma ti dirò di più, se hai la pazienza di cercare all'interno del forum, troverai problemi analoghi ai tuoi. Fermo restando, che ti ho detto dov'è l'errore 3 volte.
    A presto.