Visualizzazione risultati 1 fino 9 di 9
Like Tree4Likes
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By GraphOGLRisorse
  • 1 Post By mzanella

Discussione: query con switch che mette a confronto 2 valori per restituire un risultato

  1. #1
    omgprova non è connesso Utente giovane
    Data registrazione
    03-02-2020
    Messaggi
    67

    Predefinito query con switch che mette a confronto 2 valori per restituire un risultato

    salva non essendo un programmatore sto cercando di risolvere un problemino che per molti sarà facile

    in pratica io ho queste query che eseguo da pannello di comando phpmyadmin per aggiornare la colonna stipendi


    Update f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT';
    Update f_player SET playerValue='300000' WHERE playerOverall= '69' AND playerPosition='PT';
    Update f_player SET playerValue='500000' WHERE playerOverall= '70' AND playerPosition='PT';
    Update f_player SET playerValue='600000' WHERE playerOverall= '71' AND playerPosition='PT';
    Update f_player SET playerValue='700000' WHERE playerOverall= '72' AND playerPosition='PT';

    oltre a queste 5 ce ne sono altre per ogni ruolo...
    volevo automatizzare il tutto creando una query unica comandata tramite un pulsante....


    ecco cosa ho fatto


    Codice PHP:
    <?php require_once('../Connections/config.php'); ?>

    <?php
    mysql_select_db
    ($database_config, $config);
    $agg_stipendi = "Update f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'";
    GetSQLValueString($_POST['playerValue'], "int"),
    $Result = mysql_query($agg_stipendi, $config) or die(mysql_error());

    ?>


    questo l ho messo nell index admin
    Codice PHP:
    <input type="button" value="aggiorna stipendi" onclick="javascript:location.href='aggiorna_stipendi.php />
    solo che non mi funziona...


    Credo che utilizzando la funzione switch potrebbe essere piu semplice
    qualcuno potrebbe aiutarmi?la funzioni dovrebbe funzionare in questo modo..

    se (playerPosition) è 'PT' e (playerOverall) è '70' (playerValue) diventa 1000
    se (playerPosition) è 'DC' e (playerOverall) è '70' (playerValue) diventa 1500
    ecc.ecc.
    grazie a chi può aiutarmi...
    Ultima modifica di omgprova : 01-06-2020 alle ore 15.39.24

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

    Predefinito

    Le funzioni mysql_* non fanno più parte di PHP. Passa a PDO o MySQLi.

    Ciò detto l'approccio che hai seguito va abbastanza bene. Lo script PHP che chiamerai dovrà semplicemente effettuare tutte le query che attualmente esegui a mano:
    aggiorna_stipendi.php
    Codice PHP:
    error_reporting(E_ALL);

    // Connessione al database
    $dbh = new \PDO('mysql:dbname=my_omgprova;host=localhost', 'omgprova', '');
    if (!
    $dbh) {
    die(
    "Cannot connect to database");
    }

    // Esegue le query
    $dbh->query("UPDATE f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='300000' WHERE playerOverall = '69' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='500000' WHERE playerOverall = '70' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='600000' WHERE playerOverall = '71' AND playerPosition='PT'");
    // eccetera
    Magari controllando il valore di ritorno dopo ogni chiamata.

    Nella pagina di amministrazione non hai bisogno di usare un pulsante a cui associ un event listener che fa cose strane, puoi molto più semplicemente usare un link (a cui eventualmente associare lo stile di un pulsante tramite CSS):
    Codice HTML:
    <a href="aggiorna_stipendi.php">Aggiorna Stipendi</a>
    Tutto questo vale nell'ottica in cui tu intenda aggiornare tutti gli stipendi simultaneamente, come fai ora da PhpMyAdmin. Se cerchi qualcosa per aggiornare lo stipendio di un player specifico, il discorso cambia un po'.
    Ultima modifica di mzanella : 01-06-2020 alle ore 18.39.10
    omgprova likes this.

    I suggerimenti che do più spesso:


  3. #3
    omgprova non è connesso Utente giovane
    Data registrazione
    03-02-2020
    Messaggi
    67

    Predefinito

    grazie gentilissimo.....si mi va bene aggiornare tutti i giocatori anche perchè utilizzando sempre lo stesso database lo aggiorniamo continuamente...
    la provo subito

  4. #4
    omgprova non è connesso Utente giovane
    Data registrazione
    03-02-2020
    Messaggi
    67

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Le funzioni mysql_* non fanno più parte di PHP. Passa a PDO o MySQLi.

    Ciò detto l'approccio che hai seguito va abbastanza bene. Lo script PHP che chiamerai dovrà semplicemente effettuare tutte le query che attualmente esegui a mano:
    aggiorna_stipendi.php
    Codice PHP:
    error_reporting(E_ALL);

    // Connessione al database
    $dbh = new \PDO($dsn = 'mysql:dbname=my_omgprova;host=localhost', 'omgprova', '');
    if (!
    $dbh) {
    die(
    "Cannot connect to database");
    }

    // Esegue le query
    $dbh->query("UPDATE f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='300000' WHERE playerOverall = '69' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='500000' WHERE playerOverall = '70' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='600000' WHERE playerOverall = '71' AND playerPosition='PT'");
    // eccetera
    Magari controllando il valore di ritorno dopo ogni chiamata.

    Nella pagina di amministrazione non hai bisogno di usare un pulsante a cui associ un event listener che fa cose strane, puoi molto più semplicemente usare un link (a cui eventualmente associare lo stile di un pulsante tramite CSS):
    Codice HTML:
    <a href="aggiorna_stipendi.php">Aggiorna Stipendi</a>
    Tutto questo vale nell'ottica in cui tu intenda aggiornare tutti gli stipendi simultaneamente, come fai ora da PhpMyAdmin. Se cerchi qualcosa per aggiornare lo stipendio di un player specifico, il discorso cambia un po'.
    funziona tutto anche se mi ero preso dal panico perchè mi dava errore e mi faceva vedere tutte le query scritte poi mi sono accorto che mancava <?php ?>
    ti chiedo un ultima cosa
    come faccio ad aggiungere un messaggio..se la query è andata a buon fine o se c'è errore?
    ho provato in questo modo

    Codice PHP:
    $result_dbh = mysql_query($dbh);



    if (!
    $result_dbh) {

    echo
    mysql_error();
    echo
    mysql_errno();

    echo (
    "<SCRIPT LANGUAGE='JavaScript'>
    window.alert('qualcosa non ha funzionato!')
    window.location.href='./aggiorna_stipendi.php'
    </SCRIPT>"
    );

    }

    mysql_close();



    echo (
    "<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Stipendi aggiornati!')
    window.location.href='./aggiorna_stipendi.php'
    </SCRIPT>"
    );
    mi è sembrato che mi da il risultato di ogni query visto che sono tutte $dbh e i messaggi si susseguono errore
    stipendi aggiornati
    errore stipendi agg..
    poi ho provato a fare così

    Codice PHP:
    $aggiorna_stipendi = mysql_query($dbh)

    $result_dbh = mysql_query($aggiorna_stipendi.php);



    if (!
    $result_dbh) {

    echo
    mysql_error();
    echo
    mysql_errno();

    echo (
    "<SCRIPT LANGUAGE='JavaScript'>
    window.alert('qualcosa non ha funzionato!')
    window.location.href='./aggiorna_stipendi.php'
    </SCRIPT>"
    );

    }

    mysql_close();



    echo (
    "<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Stipendi aggiornati!')
    window.location.href='./aggiorna_stipendi.php'
    </SCRIPT>"
    );
    ma non mi da nessun messaggio

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

    Predefinito

    Puoi controllare il valore di ritorno di ogni esecuzione di query e, se è false, mostrare un messaggio d'errore:
    Codice PHP:
    error_reporting(E_ALL);

    // Connessione al database
    $dbh = new \PDO('mysql:dbname=my_omgprova;host=localhost', 'omgprova', '');
    if (!
    $dbh) {
    die(
    "Cannot connect to database");
    }

    // Esegue le query
    $result = $dbh->query("UPDATE f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'");
    if (
    $result === false) {
    die(
    $dbh->errorCode());
    }

    $result = $dbh->query("UPDATE f_player SET playerValue='300000' WHERE playerOverall = '69' AND playerPosition='PT'");
    if (
    $result === false) {
    die(
    $dbh->errorCode());
    }

    $result = $dbh->query("UPDATE f_player SET playerValue='500000' WHERE playerOverall = '70' AND playerPosition='PT'");
    if (
    $result === false) {
    die(
    $dbh->errorCode());
    }

    $result = $dbh->query("UPDATE f_player SET playerValue='600000' WHERE playerOverall = '71' AND playerPosition='PT'");
    if (
    $result === false) {
    die(
    $dbh->errorCode());
    }
    // eccetera
    Che puoi anche rendere in maniera più compatta usando die, se preferisci:
    Codice PHP:
    error_reporting(E_ALL);

    // Connessione al database
    $dbh = new \PDO('mysql:dbname=my_omgprova;host=localhost', 'omgprova', '');
    if (!
    $dbh) {
    die(
    "Cannot connect to database");
    }

    // Esegue le query
    $dbh->query("UPDATE f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'") or die($dbh->errorCode());
    $dbh->query("UPDATE f_player SET playerValue='300000' WHERE playerOverall = '69' AND playerPosition='PT'") or die($dbh->errorCode());
    $dbh->query("UPDATE f_player SET playerValue='500000' WHERE playerOverall = '70' AND playerPosition='PT'") or die($dbh->errorCode());
    $dbh->query("UPDATE f_player SET playerValue='600000' WHERE playerOverall = '71' AND playerPosition='PT'") or die($dbh->errorCode());
    // eccetera
    Ultima modifica di mzanella : 01-06-2020 alle ore 18.43.32
    omgprova likes this.

    I suggerimenti che do più spesso:


  6. #6
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,997

    Predefinito

    Salve,
    come ha scritto mzanella prima, non deve usare mysql che non fa più parte di php.

    Può aggiundere errorCode con errorInfo dopo dbh->query per rivelare se ci sono errori.
    $dbh->query("UPDATE f_player SET playerValue='600000' WHERE playerOverall = '71' AND playerPosition='PT'");

    echo $dbh->errorCode();
    print_r ($connec->errorInfo());
    Cordiali saluti.
    omgprova likes this.

  7. #7
    omgprova non è connesso Utente giovane
    Data registrazione
    03-02-2020
    Messaggi
    67

    Predefinito

    grazie per le risposte...ma l intenzione è di avere un solo messaggio per tutte le operazioni...
    finito l aggiornamento dovrebbe uscire
    Aggiornamento fatto con successo
    o
    aggiornamento fallito

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

    Predefinito

    Ci sono diverse alternative. Quella più semplice probabilmente è sollevare un'eccezione in caso di problemi e usare un try/catch:
    Codice PHP:
    error_reporting(E_ALL);

    // Connessione al database
    $dbh = new \PDO('mysql:dbname=my_omgprova;host=localhost', 'omgprova', '');
    if (!
    $dbh) {
    die(
    "Cannot connect to database");
    }
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Esegue le query
    try {
    $dbh->query("UPDATE f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='300000' WHERE playerOverall = '69' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='500000' WHERE playerOverall = '70' AND playerPosition='PT'");
    // eccetera
    }
    catch (\
    Exception $e) {
    die(
    "Aggiornamento fallito");
    }
    echo
    "Aggiornamento riuscito";
    omgprova likes this.

    I suggerimenti che do più spesso:


  9. #9
    omgprova non è connesso Utente giovane
    Data registrazione
    03-02-2020
    Messaggi
    67

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Ci sono diverse alternative. Quella più semplice probabilmente è sollevare un'eccezione in caso di problemi e usare un try/catch:
    Codice PHP:
    error_reporting(E_ALL);

    // Connessione al database
    $dbh = new \PDO('mysql:dbname=my_omgprova;host=localhost', 'omgprova', '');
    if (!
    $dbh) {
    die(
    "Cannot connect to database");
    }
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Esegue le query
    try {
    $dbh->query("UPDATE f_player SET playerValue='200000' WHERE playerOverall <='68' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='300000' WHERE playerOverall = '69' AND playerPosition='PT'");
    $dbh->query("UPDATE f_player SET playerValue='500000' WHERE playerOverall = '70' AND playerPosition='PT'");
    // eccetera
    }
    catch (\
    Exception $e) {
    die(
    "Aggiornamento fallito");
    }
    echo
    "Aggiornamento riuscito";
    grazie

Regole di scrittura

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