Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33

Discussione: sql + php facile

  1. #1

    sql + php facile

    Devo creare una tabella con 2 campi, uno contenente uno codice ed uno numero che di default è uno. Poi devo inserire in una pagina php un form di ricerca per far si che quando viene inserito un codice va a controllare nel database, se c'è già incrementa il relativo campo numero di uno e mostra a video il valore del campo numero, se non c'è lo crea, lo incrementa e lo mostra a video. Come procedo? Per la tabella posso farla manualmente con il phpmyadmin, e per la query da assegnare al form di ricerca?

    p.s. devo fare anche un qualche tipo di controllo sui dati? per evitare problemi di sql injection..

  2. #2
    up!

  3. #3
    Beh puoi fare in questo modo:

    1) controlli se nel database c'è quel codice e se c'è incrementi il numero di uno con la seguente query:

    $query = "UPDATE nome_tabella SET nome_campo_numero=nome_campo_numero+1 WHERE nome_campo_codice='codice' "

    Puoi eseguire questa query con la funzione mysql_query:

    $result = mysql_query($query, $conn);

    2)A questo punto conti il numero di righe interessate dalla modifica e se tale numero è uguale a 0 vuol dire che il codice nel db non c'è e allora lo crei:

    if (mysql_affected_rows($conn)==0) {
    $query = "INSERT INTO nome_tabella VALUES ('codice', 1)";
    $result = mysql_query($query, $conn);
    }

  4. #4
    L'ordine perà dovrebbe essere il contrario... Prima si controlla che già esiste, quindi se esiste niente altrimenti si crea, e poi si fa il +1...


  5. #5
    esatto, deve essere fatto al contrario.. inoltre qual'è il codice da inserire nella pagina php per creare la casella di ricerca il cui campo verrà cercato all'interno del database?

  6. #6
    Originariamente inviato da trafalguar
    esatto, deve essere fatto al contrario.. inoltre qual'è il codice da inserire nella pagina php per creare la casella di ricerca il cui campo verrà cercato all'interno del database?
    Cioè, vorresti creare un form con una Casella di Testo nella quale scrivere il codice che bisogna verificare se esiste o no e poi fare il +1?

  7. #7
    esattamente..

  8. #8
    Allora crei una pagina del genere:

    tuapagine.php
    Codice PHP:
    <?php
    if (isset($_POST['invia'])) {

    $query "SELECT campocode FROM tabname WHERE campocode='" $_POST['code'] . "'";

    $results mysql_query($query) or die(mysql_error());
    $num mysql_num_rows($results);
    $rcode mysql_fetch_field($results);

    if (
    $num == 0) {

    $query2 "INSERT INTO tabname(campocode) VALUES ('1')";
    $results2 mysql_query($query) or die(mysql_error());
    $code 1;

    } else {

    $code $rcode;

    }

    echo 
    $code;

    } else {
    ?>
    <form action="tuapagina.php" method="post">

    <input type="text" name="code" value="Inserisci qua il tuo codice" />

    <input type="submit" name="invia" value="Invia" />
    </form>
    <?php
    }
    ?>

  9. #9
    Ora provo a creare la tabella e lo testo.. così a occhio e croce però mi sembra che è un pò diverso da quello che dicevo.. allora la tabella ha 2 campi, campocode, camponum. Ora, se il codice lo trova incrementa di 1 il camponum e poi stampa a video il valore del camponum, altrimenti quando va a creare campocode deve comunque incrementare camponum e stampare a video il valore del camponum..

  10. #10
    Originariamente inviato da TheMastion
    L'ordine perà dovrebbe essere il contrario... Prima si controlla che già esiste, quindi se esiste niente altrimenti si crea, e poi si fa il +1...
    Il procedimento che ho indicato io fa risparmiare una query:
    infatti la procedura completa sarebbe:
    a) interrogare il db per vedere se il codice c'è (1 query)
    b) se c'è aumentare di uno il campo (1 query)
    c) se non c'è crearlo (1 query)

    in totale devi sempre fare due query;

    La procedura che ti ho indicato io invece:
    a)aggiorna il campo facendo +1 se il codice esiste (1 query)
    b) se il codice non c'è lo crea (1 query)

    In questo caso risparmi una query se il codice è già presente nel db...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.