• 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.


  • Moderatore

    film.php
    [PHP]
    <?php
    /*

    • Come ti avevo già ampiamente scritto, la query è errata nel metodo e nella sintassi
      */

    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}");
    $query = "SELECT
    film_actor.actor_id as actor_id,
    film_actor.film_id as film_id,
    film_actor.credited as credited
    film_actor.notes as notes,
    actor.actor_id as actor_ID,
    actor.photo as photo,
    actor.name as name,
    film.film_id as film_ID,
    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_actor.film_id = film.film_id WHERE film_actor.film_id = " . $film_id;

    $result = mysql_query( $query );

    while( $row = mysql_fetch_object( $result ) ) : ?>

    <div class="castbox">
    <p><img class="headshot" src="<?php echo $row->photo; ?>"><br>
    <a href="cinema.php?actor_id=<?php echo $row->actor_ID; ?>"><?php echo $row->name; ?></a>
    </a><br>
    <i>
    <?php echo $row->credited; ?>
    </i><br><pre><?php echo $row->notes; ?></pre><br> <br> <br>
    </div>

    <?php endwhile; ?>
    [/PHP]

    cinema.php
    [PHP]
    <?php
    /*

    • Questa invece è completamente errata. Come ti ho già scritto, utilizzi per ben due volte la stessa tipologia di variabile, andando a sovrascrivere la precedente, e te non fai altro che ripetere una sintassi errata presa dalla query dei film, a dimostrazione, di come ho scritto prima, che non stai minimamente applicando metodo, ma stai semplicemente appoggiando dati e porzioni di codice.
    • Oltretutto, sopra usi mysql, qui usi mysqli ( o una o l'altra)
      */
      require_once("connetti.php");

    $actor_id = $_GET['actor_id'];
    // funzione inutile. $id è un numero non una stringa
    //$id = mysqli_real_escape_string($con,$id);
    // query completamente errata
    //$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']));
    $query = "SELECT
    film_actor.actor_id as actor_id,
    film_actor.film_id as film_id,
    film_actor.credited as credited
    film_actor.notes as notes,
    film.film_id as film_ID,
    film.movie_title as movie_title,
    film.year as year
    FROM film_actor INNER JOIN film ON film_actor.film_id = film.film_id WHERE film_actor.actor_id = " . $actor_id;

    $result = mysql_query( $query );

    while( $row = mysql_fetch_object( $result ) ) : ?>

    <tr class="we">
        <td><a href="film.php?id=<?php echo $row->film_id; ?>"><?php echo $row->movie_title; ?></a>
        </td>
    
        <td><?php echo $row->year; ?>; ?></td>
        <?php // distributor adesso da dove salta fuori? ?>
        <!--<td><?php //echo $row['distributor']; ?></td>-->
        <td><i><?php echo $row->notes; ?></i></td>
        <td><?php echo $row->credited; ?></td>
    <?php // tr di chiusura mancante!!!!! ?>
    </tr>
    

    <?php endwhile; ?>
    [/PHP]


  • User Attivo

    Ciao Ultima,

    la query non e' mia, io non sapevo da dove cominciare, me la fornito andreagotta, confidando che era giusta

    Io lavoro nelle costruzioni, costruisco e ristrutturo case, ho 51 anni e non penso che a questa eta' possa pensare di imparare programmazione,
    quello che so' lo imparato da solo o suggerito da altri, come ho detto, io il php non lo conosco ( conosco l'xml e xslt), e ' un paio di mesi che lo sto' studiando,

    la mia richiesta erano semplicemente delle query, cosa che non capisco fino in fondo, non voglio la "pappa pronta" come ormai leggo nel 99% dei forum (ma ormai e' moda),
    anche perche' io ho creato il database, le pagine ,il motore di ricerca interno, e il caricamento delle foto, ma semplicemente un aiuto.

    Io penso che i forum devono fornire conoscenza a chi e' ignorante della materia, non fornire dubbi, e come aprire un libro e trovarlo incompleto.

    Se chiedi a Giorgio Tave ti dira' da dove provengo, e dove abito adesso,

    spero che mi aiutere a risolvere i miei prossimi quesiti, che sono ormai pochi

    grazie per l'aiuto


  • User Attivo

    Incredibile, ancora errore 😞

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in W:\domains\localhost\Cinema_2019\film.php on line 180

    **film.php <-------------- line 180

    **[PHP]
    while( $row = mysql_fetch_object( $result ) ) : ?>
    [/PHP]

    cinema.php <-------------- line 418

    **Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in **W:\domains\localhost\Cinema_2019\cinema.php on line **418

    [PHP]while( $row = mysql_fetch_object( $result ) ) : ?> [/PHP]

    ******:bho:


  • Moderatore

    Aggiungi questa, prima del ciclo while
    [PHP]
    if (!$result)
    die("mySQL error: ". mysql_error());
    [/PHP]

    Adesso riesegui il processo e vediamo che errore esce.

    PS.
    Concettualmente qualcuno adesso (me) sta facendo il tuo lavoro, anche se questo è un tuo divertimento. Ecco, questo è ciò che il Forum non deve fare.
    Te lo scrivo in maniera chiara, perchè la tua lamentela mi ha particolarmente colpito.
    "Il Forum è un luogo dove ci si scambia conoscenza, non un luogo dove si cerca un lavoro svolto a gratis". E' una alinea sottile che forse, non hai appreso, dimostrato da da quello che leggo e quello che scrivi e lamentandoti nonostante "io" ed altri, ti stiamo dando una mano. Poi, puoi avere anche 100 anni, il discorso non cambia.


  • User Attivo

    Ultima non sei obbligato ad aiutarmi, io non obbligo nessuno, se tu non sei disponibile lasciamo perdere,
    al mio paese si aiuta senza rinfacciare,
    tu dici che il forum e' un luogo dove si scambia conoscenza, ma io questa conoscenza non c'e lo,
    per te e' facile, tu conosci il codice e ci metti poco, io da ignorante in materia forse un mese, un anno o mai,
    se io ti dico, vammi a costruire una casa, tu lo sai fare? ne dubito, quindi chiedi consiglio a me e io ti spiego come fare e che materiali usare,
    lo stesso e' il codice.

    va beh..comunque l'errore e' questo

    [PHP]mySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'film_actor.notes as notes, actor.actor_id as actor_ID, actor.photo as photo,' at line 5[/PHP]


  • Moderatore

    @Alex_2019 said:

    Ultima non sei obbligato ad aiutarmi, io non obbligo nessuno, se tu non sei disponibile lasciamo perdere,
    al mio paese si aiuta senza rinfacciare,
    tu dici che il forum e' un luogo dove si scambia conoscenza, ma io questa conoscenza non c'e lo,
    per te e' facile, tu conosci il codice e ci metti poco, io da ignorante in materia forse un mese, un anno o mai,
    se io ti dico, vammi a costruire una casa, tu lo sai fare? ne dubito, quindi chiedi consiglio a me e io ti spiego come fare e che materiali usare,
    lo stesso e' il codice.

    va beh..comunque l'errore e' questo

    [PHP]mySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'film_actor.notes as notes, actor.actor_id as actor_ID, actor.photo as photo,' at line 5[/PHP]
    Bene perfetto, ti sei risposto da solo. Allora io ti ho dato tutte le informazioni del caso per capire l'errore. Quindi evito di costruirti la casa no? I prodotti da utilizzare e come, mi pare di averteli spiegati no?
    Nota bene. Io non ti sto rinfacciando proprio nulla, sto solamente prendendo le difese di questo bellissimo Forum, cosa che dal tuo personale punto di vista non è, solo perchè "non è il tuo mestiere"
    Sai, cosa? Ci sono libri, ci sono testi, ci sono video e c'è stackoverflow.
    Have a nice day!


  • User Attivo

    Caro Stefano con il tuo atteggiamento di adesso stai dimostrando che questo forum e' uguale a tutti gli altri, non c'e' dialogo costruttivo e solo la presunzione e l'arroganza di essere piu' intelligenti degli altri solo perche' si conosce un poco di codice, ma il mondo gira su altre cose, in primis il rispetto e l'altruismo, valori che si sono persi ormai,
    sicuramente sarai piu' giovane di me, quando arriverai all mia eta' comincerai a riflettere.


  • User Attivo

    Risolto :),
    anche se ci sono stati dei disguidi ringrazio Ultima per il suo prezioso aiuto


  • Community Manager

    Mai mettere davanti la risoluzione del proprio problema rispetto alla percezione di una community.

    Stefano (@ultima) è una delle persone più disponibili qui che ha aiutato molte persone. E le aiuta a crescere.

    Che per noi è la cosa più imporante.

    Perché i pesci possono sicuramente sfamare, ma insegnare ad usare la canna da pesca è un altro livello 🙂

    :ciauz:


  • User Attivo

    Non mangio pesce e nemmeno carne :smile5:, sono vegetariano.
    Ciao Giorgio 🙂


  • User Attivo

    c'e' un problema, in cinema.php riesco a visualizzare la foto dell'attore con questa query

    [PHP]require_once("connetti.php");

    $actor_id = $_GET["id"];
    $sql="select foto from actor where actor_id=".$_GET['id'];
    $result=mysql_query($sql); $riga=mysql_fetch_row($result);
    $filename=basename($riga[0]);

    echo "<img src='image_upload/uploads/"

    .$filename."'><br>".$filename;

    ?>
    [/PHP]

    in film.php niente, nonostante ho messo il codice postato da Ultima :arrabbiato:

    le foto sono posizionati nella cartella **image_upload/uploads e nel database nellatabella actor e campo foto [LEFT]varchar(100)

    [/LEFT]soluzione? :bho:[LEFT][/LEFT]

    **


  • User Attivo

    Risolto il mistero:fumato:

    penso che questo thread si possa bollare [SOLVED] 🙂