Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 50 di 50
Like Tree10Likes

Discussione: strpos + substr e stringa

  1. #31
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    Buongiorno a tutti,
    ciao mzanella

    non mi e' chiara una cosa,

    tabella actor: (con il campo performer_aka type text precedente)




    tabella performer_aka



    siccome io inserisco i dati principalmente via phpmyadmin (finche non completo i form) e' possibile
    visualizzare i campi della tabella performer_aka nella tabella actor?

    una cosa simile ad Access

    perche' se non si puo' devo prima inserire i dati nella tabella actor e poi in performer_aka

    una cosa contorta, non so' se mi sono spiegato

  2. #32
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Tramite phpmyadmin non credo, però non l'ho mai usato quindi non ne sono certo...

    I suggerimenti che do più spesso:


  3. #33
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    sto tentando di ricuperare i dati di prova inseriti,

    ma ricevo questo errore


    mySQL error: Column 'actor_id' in where clause is ambiguous


    Codice PHP:

     <?php 
     
        
    /
     
    require_once(
    "connetti.php"); 

    $actor_id $_GET["id"];
    $sql="SELECT 
    actor.actor_id AS actor_id, 
    actor.nome AS actor_name, 
    performer_aka.aka AS performer_aka_name, 
    performer_aka.source AS performer_aka_source
    FROM actor JOIN performer_aka ON actor.actor_id = performer_aka.actor_id
    WHERE actor_id="
    $actor_id
    $result mysql_query$sql );
    if (!
    $result)
     die(
    "mySQL error: "mysql_error()); 
    while( 
    $row mysql_fetch_object$result ) ) : ?> 



    <?php 

           
    if(!empty($row->performer_aka_name)) { echo "<p class=\"bioheading\">Performer AKA 2</p><p  class=\"biodata\">" $row->performer_aka_name "</p>"; } 

        
    ?>

    <? endwhile; ?>




  4. #34
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Questa
    Codice PHP:
    WHERE actor_id=". $actor_id
    va modificata in
    Codice PHP:
    WHERE actor.actor_id=". $actor_id
    blackskyisback likes this.

    I suggerimenti che do più spesso:


  5. #35
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    dopo alcune prove in phpmyadmin sql ho risolto

    questo sembra funzionare

    corretto

    Codice PHP:
    WHERE actor.actor_id=". $actor_id
    sql completa

    Codice PHP:
    $sql="SELECT 
    actor.actor_id AS actor_id, 
    actor.nome AS actor_name, 
    performer_aka.aka AS performer_aka_name, 
    performer_aka.source AS performer_aka_source
    FROM actor JOIN performer_aka ON actor.actor_id = performer_aka.actor_id
    WHERE actor.actor_id="
    $actor_id

  6. #36
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    questo e' strano

    mi crea 2 righe adesso, non dovrebbe visualizzare nello stesso posto?





  7. #37
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Questa
    Codice PHP:
    WHERE actor_id=". $actor_id
    va modificata in
    Codice PHP:
    WHERE actor.actor_id=". $actor_id

    mi hai preceduto di un po'

  8. #38
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    questo e' strano
    mi crea 2 righe adesso, non dovrebbe visualizzare nello stesso posto?
    Mi sembra corretto: ogni elemento della lista degli "aka" ha un proprio record separato nella tabella.

    Lo screenshot che hai mostrato fa invece riferimento al codice che stai sviluppando?

    I suggerimenti che do più spesso:


  9. #39
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    si lo screen fa riferimento al codice,

    ma io vorrei visulizzare il tutto nello stesso posto

    pensa se ci sono 10, 20, 100 performer_aka_name (che poi sarebbero i ruoli interpretati nei film)



    da cosi

    Performer AKA 2

    Alex 1

    Performer AKA 2

    Alex 2

    a cosi

    Performer AKA 2

    Alex 1 - Alex 2

  10. #40
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Mostra il codice vediamo come sistemarlo.

    I suggerimenti che do più spesso:


  11. #41
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    Ecco..lo


    Codice PHP:
    <?php 
     
    require_once("connetti.php"); 

    $actor_id $_GET["id"];
    $sql="SELECT 
    actor.actor_id AS actor_id, 
    actor.nome AS actor_name, 
    performer_aka.aka AS performer_aka_name, 
    performer_aka.source AS performer_aka_source
    FROM actor 
    JOIN performer_aka ON actor.actor_id = performer_aka.actor_id
    WHERE actor.actor_id="
    $actor_id
    $result mysql_query$sql );
    if (!
    $result)
     die(
    "mySQL error: "mysql_error()); 
    while( 
    $row mysql_fetch_object$result ) ) : ?> 



    <?php // nascondere etichette se vuote

           
    if(!empty($row->performer_aka_name)) 
           { echo 
    "<p class="bioheading">Performer AKA 2</p><p  class="biodata">" 
       
    $row->performer_aka_name 
      
    //  . " - " . "&nbsp;"
      // . $row->performer_aka_source
       
    "</p>"; } 

        
    ?>

    <? endwhile; ?>    
        
    <!-- FINE QUERY E SCRIPT -->

  12. #42
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Puoi modificare la parte dentro al ciclo while.

    Idealmente potresti usare le funzioni fetch_all di mysqli e PDO per recuperare, in un colpo solo, la lista di "aka" e stamparla con una sola riga di codice:
    Codice PHP:
    <p class="bioheading">Performer AKA 2</p>
    <p  class="biodata">
    <?php echo implode(', 'mysqli_fetch_all($result)); ?>
    </p>
    tuttavia questo non è possibile con le vecchie funzioni mysql. Le opzioni sono leggere preventivamente tutti gli "aka" e salvarli in un vettore, quindi procedere tramite implode, oppure determinare il numero di record e usare un ciclo for per leggerli, sfruttando gli indici per capire se mostrare o meno il trattino.

    La prima alternativa:
    Codice PHP:
    <?php
    $result 
    mysql_query($sql);
    if (!
    $result) {
        die(
    "mySQL error: " mysql_error());
    }
    $performer_akas = [];
    while (
    $row mysql_fetch_object($result)) {
        
    $performer_akas[] = $row->performer_aka_name;
    }
    ?>
    <p class="bioheading">Performer AKA 2</p>
    <p  class="biodata">
    <?php echo implode(' - '$performer_akas); ?>
    </p>
    La seconda:
    Codice PHP:
    $result mysql_query($sql);
    if (!
    $result) {
        die(
    "mySQL error: " mysql_error());
    }
    $n mysql_num_rows($result);

    echo 
    '<p class="bioheading">Performer AKA 2</p>';
    echo 
    '<p  class="biodata">';
    for (
    $i 0$i $n; ++$i) {
        
    $row mysql_fetch_object($result);
        echo 
    $row->performer_aka_name;
        if (
    $i $n) {
            echo 
    "-";
        }
    }
    echo 
    "</p>";
    ?> 
    L'if nel ciclo for serve a mostrare il trattino solo se nella lista comparirà un nuovo elemento (quindi non dopo l'ultimo elemento).
    blackskyisback likes this.

    I suggerimenti che do più spesso:


  13. #43
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    mzanella sei un genio ,
    caspita non arrivero' mai al tuoi livelli
    ma lavori in questo campo?

    ecco il risultato finale



    e questo e' il codice

    Codice PHP:
     <?php 
     
    // code by mzanella update 2020.12.07
    // http://forum.it.altervista.org/newreply.php
     
    require_once("connetti.php"); 

    $actor_id $_GET["id"];
    $sql="SELECT 
    actor.actor_id AS actor_id, 
    actor.nome AS actor_name, 
    performer_aka.aka AS performer_aka_name, 
    performer_aka.source AS performer_aka_source
    FROM actor 
    JOIN performer_aka ON actor.actor_id = performer_aka.actor_id
    WHERE actor.actor_id="
    $actor_id
    $result mysql_query($sql);
    if (!
    $result) {
        die(
    "mySQL error: " mysql_error());
    }
    $n mysql_num_rows($result);

    echo 
    '<p class="bioheading">Performer AKA 2</p>';
    echo 
    '<p  class="biodata">';
    for (
    $i 0$i $n; ++$i) {
        
    $row mysql_fetch_object($result);
        echo 
    $row->performer_aka_name;
        if (
    $i $n) {
            echo 
    "&nbsp;-&nbsp;";
        }
    }
    echo 
    "</p>";
    ?>
    Grazie tanto di cuore

    da come ho capito bisogna normalizzare il database con i campi ridondanti

  14. #44
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Codice PHP:
    mzanella sei un genio 
    caspita non arrivero' mai al tuoi livelli 
    Chiunque può arrivarci, se ha la possibilità a investire un bel po' di tempo nella pratica costante.

    Codice PHP:
    ma lavori in questo campo
    La parte di PHP/web è più che altro un passatempo. Sto per finire il dottorato in informatica, tesi consegnata la settimana scorsa .

    da come ho capito bisogna normalizzare il database con i campi ridondanti
    Vedila come una piccola seccatura quando devi preparare schema del database e query, ma che poi viene ripagata quando altre operazioni poi si semplificano.
    alemoppo likes this.

    I suggerimenti che do più spesso:


  15. #45
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    Complimenti, auguri per il tuo dottorato

    vai sul sicuro, lo stai dimostrando qui

    ti tengo aggiornato sul mio progetto

    Ciao e grazie da Alex
    mzanella likes this.

  16. #46
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    stavo pensando che sul campo source se si poteva fare questo?

    prelevare i dati da un'altra tabella esterna, possibile siano sempre uguali




    forse anche aka

  17. #47
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    stavo pensando che sul campo source se si poteva fare questo?
    Una normalizzazione in piena regola eccellente!
    Se, da quello che credo di aver capito, le "source" sono gli URL dei siti web decisamente sì. Puoi creare una nuova tabella per le fonti, con un id e l'URL (ed eventualmente altre info).

    Per "aka" non so, mi sembra sia il nome che una specifica fonte assegna a un personaggio, giusto? Se è così può rimanere una stringa.

    I suggerimenti che do più spesso:


  18. #48
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Una normalizzazione in piena regola eccellente!
    Se, da quello che credo di aver capito, le "source" sono gli URL dei siti web decisamente sì. Puoi creare una nuova tabella per le fonti, con un id e l'URL (ed eventualmente altre info).

    Per "aka" non so, mi sembra sia il nome che una specifica fonte assegna a un personaggio, giusto? Se è così può rimanere una stringa.
    e si, e' ora di rimettere mano al codice, troppi sbagli mi hai fatto notare tu

    vediamo se ho capito

    Tabella: performer_aka

    actor_id
    aka
    source


    aka e' il pseudonimo di un attore o attrice

    Tabella da creare source_actor

    id_source smallint(5)
    url_source text

    e la relazione con performer_aka?

  19. #49
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    e la relazione con performer_aka?
    performer_aka.source deve corrispondere a source_actor.id_source, in modo da poter effettuare le JOIN:
    Codice:
    SELECT * FROM performer_aka JOIN source ON performer_aka.source = source_actor.id_source

    I suggerimenti che do più spesso:


  20. #50
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    ciao mzanella

    adesso e' cosi

    Codice PHP:
    SELECT FROM performer_aka JOIN source_actor ON performer_aka.source source_actor.source_id 
    ho scoperto che nella tabella actor si possono inserire le relazioni esterne

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •