Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: UPDATE con JOIN

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    9

    UPDATE con JOIN

    buonasera, volevo sottoporvi un mio piccolo problema.
    Sto creando in php e html un sito riguardante il mondiale di formula e.
    Ho creato su phpmyadmin il database con due tabelle, una relativa ai piloti e una alle scuderie.
    i campi sono i seguenti.
    tabella dati: id, id_scuderia, pilota,numero, punti
    tabella costruttori: id, scuderia, punti_sc.

    ho creato un form per l'aggiornamento dei punti dei piloti e va tutto bene. il problema nasce quando dalla tabella piloti voglio sommare i punti di quelli appartenti alla stessa scuderia e aggiornare la tabella costruttori. credo sappiamo tutti come funziona un mondiale a squadre.

    ora questo è la mia query:
    if (!$connessione->query("UPDATE costruttori INNER JOIN dati ON costruttori.id=dati.id_scuderia SET costruttori.punti_sc=costruttori.punti_sc+dati.pun ti)"))

    Funziona in parte, nel senso che mi aggiorna i dati ma solo del primo pilota appartenente a quella scuderia, ma non di tutti....come mai?
    attendo vostre e vi ringrazio anticipatamente

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    9
    Quote Originariamente inviata da optime Visualizza il messaggio
    che db usi?
    InnoDB

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    9
    si, tu che intendevi?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    9
    nessuno?

  7. #7
    ciao, funziona senza join? cioè un classico update,set,where?

    se è possibile scrivici i dati contenuti nelle due tabelle...

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    9
    se uso un prepared statement funziona benissimo, inserisco il codice scuderia e mi aggiunge i punti normalmente:
    $punti=$_POST['punti'];
    $cod=$_POST['scuderia'];


    if(isset($_POST['submit']) || isset($cod))
    {
    include "connect_FormE_db.php";

    $stmt = $connessione->prepare("UPDATE costruttori SET punti_sc=(punti_sc+('$punti')) WHERE id=?");
    $stmt->bind_param("i", $id);
    $id = $cod;
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result->num_rows > 0)
    {
    while ($row = $result->fetch_array(MYSQLI_ASSOC))
    {
    echo $row['punti_sc'];
    }
    }
    }

    volevo solo venisse fatto in automatico. ti metto i dati delle due tabelle:
    https://imgur.com/MXsZY5P.jpg
    https://imgur.com/BIFkZxS.jpg

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    9
    spero riusciate ad aiutarmi ^^"

  10. #10
    ciao, prova cosi:

    Codice PHP:
    $cod $_POST['scuderia'];
    $id $cod;

    //oppure direttamente.
    //$id = $_POST['scuderia'];

    //meglio ancora.
    //$id_scuderia = $_POST['scuderia']; 

    da:

    Codice PHP:
    UPDATE costruttori INNER JOIN dati ON costruttori.id=dati.id_scuderia    
    SET costruttori
    .punti_sc = (costruttori.punti_sc dati.punti

    a:

    Codice PHP:
    UPDATE costruttori c INNER JOIN dati d ON c.id d.id_scuderia    
    SET c
    .punti_sc = (c.punti_sc d.puntiWHERE c.id $id
    se non va in php, provala in mysql, sostituisci $id con un valore reale.

    comunque, tutte le query si provano prima in mysql... dopo, se funziona, la porti in php.

    inoltre, dovresti rivedere le tue tabelle... potresti fare delle tabelle n:n, una tabella solo per i punti (scuderia, punti_totali), un'altra solo con (piloti, scuderie) e altre ancora.

    ciao
    Ultima modifica di italo_anonimo; 19-01-2018 a 22:13

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.