gestire una tabella mysql

steve97

Utente Attivo
30 Mar 2017
53
0
6
salve a tutti, ho bisogno del vostro aiuto, non riesco a trovare una soluzione al mio problema, provero ad essere chiaro e esaustivo, detto cio vado al punto, sto facendo un sistema che raccoglie i dati degli utenti in particolari i gusti musicali. nella mia homepage ho i formulari di login e registrazione, poi ho due tabelle nel mio db
1. utenti(destinato a contenere i dati di registrazione) contiene 6 campi : id, nome, email, pw, data-iscrizione, token, attivo
2.raccolta contiene 4 campi: id, genere, quantita, data-pubblicazione

in teoria ogni utente nuovo puo pubblicare il suo genere musicale preferito, se il genere non esiste nella tabella raccolta, crea il nuovo registro. dunque il mio problema e che non so come fare a far si che utente nuovo che ha il gusto uguale a un altro utente gia iscritto lo sommasse con quello, senza creare un nuovo registro. posteriormente vorrei anche la capacita di restare se un utente decidesse di cambiare gusto per un altro.
PHP:
<?php



$nome = $_GET['nome']; /* prende il dato inviato dal utente ovvero il gusto musicale */
$data = date('Y-m-d H:i:s');
$conex = mysql_connect("localhost", "uname");
mysql_select_db("my_db", $conex);
$recupero = "SELECT nome FROM raccolta WHERE nome = '$nome'";
$result = mysql_query($recupero) or die (mysql_error());
if(mysql_num_rows($result) < 1) {
   $sql = "INSERT INTO raccolta(id, nome, quantita, data)
   VALUES (NULL, '$nome', '1', '$data')";
    mysql_query($sql) or die(mysql_error())
    echo "dati inseriti correttamente";   
}
?>
se il nuovo utente a un gusto musicale a quello di un altro utente vorrei che il campo quantita associato a quel gusto aumentasse.
 
Ultima modifica di un moderatore:
Ciao
Per quanto riguarda l'inserimento del genere musicale ogni utente potrebbe inserirlo a modo suo es.:( Classica o Musica Classica / Reggaeton o Reggae) senza contare gli errori di battitura (molto probabili), per questo ti consiglio di fare una select con tutti i generi di musica precedentemente inseriti da te. In alternativa fai inserire manualmente all'utente ma finche non approvi non è pubblico.

Per quanto riguarda l'incremento recuperi il valore "quantita" con una SELECT e fai +1.

Fammi sapere.
 
@steve97
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 
Ciao
Per quanto riguarda l'inserimento del genere musicale ogni utente potrebbe inserirlo a modo suo es.:( Classica o Musica Classica / Reggaeton o Reggae) senza contare gli errori di battitura (molto probabili), per questo ti consiglio di fare una select con tutti i generi di musica precedentemente inseriti da te. In alternativa fai inserire manualmente all'utente ma finche non approvi non è pubblico.

Per quanto riguarda l'incremento recuperi il valore "quantita" con una SELECT e fai +1.

Fammi sapere.
si ma come faccio a farlo, potresti farmi vederlo in codice, grazie
 
@steve97
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag Vedi l'allegato 4875 quando posti del codice, oppure la funzione codice dalla barra degli strumenti
Vedi l'allegato 4876
Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
scusa ma non ho avevo trovato quel opzione, grazie comunque
 
Qualcosa del genere:
PHP:
<?php
    $DB_host = "localhost";
    $DB_user = "root";
    $DB_pass = "";
    $DB_name = "test";
    $conn = mysqli_connect($DB_host,$DB_user,$DB_pass,$DB_name) or mysqli_error();

    if(isset($_POST['id_genere'])){
        $id_genere = $_POST['id_genere'];
        $query_update = "UPDATE raccolta SET quantita=quantita+1 WHERE id='".$id_genere."'";
        $result = mysqli_query($conn, $query_update);
        if(!$result){
            echo "Errore non aggiornato!";
        }else{
            echo "Successo hai incrementato!";
        }
 
    }else{
    ?>
        <form method="post" action="#">
            <select name="id_genere">
                <option value="">Seleziona Genere Musica</option>
                <?php
                $query_generi ="SELECT * FROM raccolta";
                $risultato = mysqli_query($conn, $query_generi);
             
                foreach($risultato as $genere) {
                    echo '<option value="'.$genere["id"].'">'.$genere["nome"].'</option>';
                }
             
                ?>
            </select>
            <input type="submit" value="Invia" >
        </form>
        <?php
    }
    ?>

Fammi sapere
 
A ti consiglio di abbandonare mysql (ormai obsoleto) e utilizzare mysqli
 
Qualcosa del genere:
PHP:
<?php
    $DB_host = "localhost";
    $DB_user = "root";
    $DB_pass = "";
    $DB_name = "test";
    $conn = mysqli_connect($DB_host,$DB_user,$DB_pass,$DB_name) or mysqli_error();

    if(isset($_POST['id_genere'])){
        $id_genere = $_POST['id_genere'];
        $query_update = "UPDATE raccolta SET quantita=quantita+1 WHERE id='".$id_genere."'";
        $result = mysqli_query($conn, $query_update);
        if(!$result){
            echo "Errore non aggiornato!";
        }else{
            echo "Successo hai incrementato!";
        }
 
    }else{
    ?>
        <form method="post" action="#">
            <select name="id_genere">
                <option value="">Seleziona Genere Musica</option>
                <?php
                $query_generi ="SELECT * FROM raccolta";
                $risultato = mysqli_query($conn, $query_generi);
          
                foreach($risultato as $genere) {
                    echo '<option value="'.$genere["id"].'">'.$genere["nome"].'</option>';
                }
          
                ?>
            </select>
            <input type="submit" value="Invia" >
        </form>
        <?php
    }
    ?>

Fammi sapere
scusa ma ho provato con +1 e non va, comunque generi musicali era solo un esempio, tu mi proponi di lasciarlo mettere il genere musicale nel form come un opzione ma non e propio quello che volevo, per questo caso e un ottima soluzione perche i generi musicali sono pochi, ma se si trattase di un altro tipo di dato, come per esempio, la squadra di calcio preferita, non vorrei mettere manualmente tutte le opzioni, ma vorrei che sia l'utente a farlo, non so se mi spiego, comunque ti lascio il mio codice cosi verifichi se ho fatto errori
disponibilita sta x quantita

PHP:
<?php

$nome = $_GET['nome'];
$data = date('Y-m-d H:i:s');


$conex = mysql_connect("localhost", "wardrivers");
mysql_select_db("my_wardrivers", $conex);


$recupero = "SELECT nome FROM raccolta WHERE nome = '$nome'";
$result = mysql_query($recupero) or die (mysql_error());
if(mysql_num_rows($result) < 1) {
   $sql = "INSERT INTO raccolta(id, nome, disponibilita, data)
   VALUES (NULL, '$nome', '1', '$data')";
    mysql_query($sql) or die(mysql_error());
    echo "dati inseriti correttamente";

 
}
elseif(mysql_num_rows($result)>1) {
 mysql_query("UPDATE raccolta SET disponibilita=disponibilita+1");
 echo "dati aggiornati";
}


?>
purtroppo non mi mostra nulla
 
Ultima modifica di un moderatore:
Questo è il tuo risistemato e come ti dicevo con mysqli:
PHP:
<?php
    $DB_host = "localhost";
    $DB_user = "wardrivers";
    $DB_pass = "TUA_PASSWORD";
    $DB_name = "my_wardrivers";
    $conn = mysqli_connect($DB_host,$DB_user,$DB_pass,$DB_name) or mysqli_error();

    if(isset($_GET['nome'])){
        $nome = $_GET['nome'];
        $data = date('Y-m-d H:i:s');

        $recupero = "SELECT nome FROM raccolta WHERE nome='".$nome."'";
        $result = mysqli_query($conn, $recupero) or die (mysqli_error());
        $quanti = mysqli_num_rows($result);
        if($quanti == 0) {
            $sql = "INSERT INTO raccolta (id, nome, disponibilita, data)VALUES (NULL, '$nome', '1', '$data')";
            mysqli_query($conn, $sql);
            echo "Nuova Genere Inserito Correttamente.";
        }
        elseif($quanti >= 1) {
            mysqli_query($conn, "UPDATE raccolta SET disponibilita=disponibilita+1 WHERE nome='".$nome."'");
            echo "Genere Già Presente ed Incrementato.";
        }else{
            echo "Errore, riprova o contatta l'amministratore.";
        }
    }else{
    ?>
        <form method="get" action="#">
            <input type="text" name="nome">
            <input type="submit" value="Invia" >
        </form>
        <?php
    }
?>


Per quanto riguarda la lista inizia a diventare complicato perchè se fai inserire all'utente manualmente come dicevo prima potrebbe esserci 20 volte la stessa cosa ma in modi scritti diversi e con errori di battitura.
Se mi viene in mente qualcosa ti faccio sapere.
 
  • Like
Reactions: steve97
Questo è il tuo risistemato e come ti dicevo con mysqli:
PHP:
<?php
    $DB_host = "localhost";
    $DB_user = "wardrivers";
    $DB_pass = "TUA_PASSWORD";
    $DB_name = "my_wardrivers";
    $conn = mysqli_connect($DB_host,$DB_user,$DB_pass,$DB_name) or mysqli_error();

    if(isset($_GET['nome'])){
        $nome = $_GET['nome'];
        $data = date('Y-m-d H:i:s');

        $recupero = "SELECT nome FROM raccolta WHERE nome='".$nome."'";
        $result = mysqli_query($conn, $recupero) or die (mysqli_error());
        $quanti = mysqli_num_rows($result);
        if($quanti == 0) {
            $sql = "INSERT INTO raccolta (id, nome, disponibilita, data)VALUES (NULL, '$nome', '1', '$data')";
            mysqli_query($conn, $sql);
            echo "Nuova Genere Inserito Correttamente.";
        }
        elseif($quanti >= 1) {
            mysqli_query($conn, "UPDATE raccolta SET disponibilita=disponibilita+1 WHERE nome='".$nome."'");
            echo "Genere Già Presente ed Incrementato.";
        }else{
            echo "Errore, riprova o contatta l'amministratore.";
        }
    }else{
    ?>
        <form method="get" action="#">
            <input type="text" name="nome">
            <input type="submit" value="Invia" >
        </form>
        <?php
    }
?>


Per quanto riguarda la lista inizia a diventare complicato perchè se fai inserire all'utente manualmente come dicevo prima potrebbe esserci 20 volte la stessa cosa ma in modi scritti diversi e con errori di battitura.
Se mi viene in mente qualcosa ti faccio sapere.
la mia idea e di fare un sistema di prestiti tipo quello bibliotecario a livello nazionale, ma non so come continuare
 

Discussioni simili