Adaugare mai multe stiri in baza de date pentru fiecare user

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Ditzy
Mesaje:5

Adaugare mai multe stiri in baza de date pentru fiecare user

Salutare
Am si eu nevoie de un mic ajutor, si nu am stiut unde sa mai apelez..
Vreau sa fac un site unde userii se inregistreaza, si incepe sa posteze diverse lucruri pe site..
Am de exemplu userul Ditzy cu id-ul 1 in tabelul users din baza de date..
Acesta vrea sa adauge cateva informatii, intr-un alt tabel din baza de date, care acesta este numit stiri

Am acest cod pentru a verifica daca userul este logat:

Cod: Selectaţi tot

    <?php
    // Start the session (pretty important!)
    session_start();
    
    // Establish a link to the database
    $dbLink = mysql_connect('localhost', 'DBUSER', 'PW');
    if (!$dbLink) die('Can\'t establish a connection to the database: ' . mysql_error());
    
    $dbSelected = mysql_select_db('DBNAME', $dbLink);
    if (!$dbSelected) die ('We\'re connected, but can\'t use the table: ' . mysql_error());
    
    $isUserLoggedIn = false;  
    $query      = 'SELECT * FROM users WHERE session_id = "' . session_id() . '" LIMIT 1';  
    $userResult     = mysql_query($query);  
    if(mysql_num_rows($userResult) == 1){  
    $_SESSION['user'] = mysql_fetch_assoc($userResult);  
    $isUserLoggedIn = true;  
    }else{  
    if(basename($_SERVER['PHP_SELF']) != 'index.php'){  
        header('Location: index.php');  
        exit;  
    }  
    }  
    ?>
Structura tabelului users din baza de date arata asa:
------------------------------------------------------------------------------
| id | name | email | password | registered_date | session_id |
------------------------------------------------------------------------------

Acum am acest cod care ma ajuta sa adaug informatiile adaugate de userul Ditzy in baza de date:

Cod: Selectaţi tot

    <?php
    include ('adresa-site.php');
    if(isset($_POST['add']))
    {
    $dbhost = 'localhost';
    $dbuser = 'DBUSER';
    $dbpass = 'PW';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
    die('Eroare de conexiune: ' . mysql_error());
    }
    
    if(! get_magic_quotes_gpc() )
    {
    $link = $web_site.''.$_POST["stire"].'?idstire='.$_POST["idstire"];
    $poza = addslashes ($_POST['poza']);
    $nume = addslashes ($_POST['nume']);
    $prenume = addslashes ($_POST['prenume']);
    $varsta = addslashes ($_POST['varsta']);
    $localitatea = addslashes ($_POST['localitatea']);
    $numep = addslashes ($_POST['numep']);
    $idstire = addslashes ($_POST['idstire']);
    $stire = addslashes ($_POST['stire']);
    $data = gmDate('Y-m-d H:i:s');
    }
    else
    {
    $link = $web_site."".$_POST['stire']."?idstire=".$_POST['idstire'];
    $poza = htmlentities($_POST['poza'], ENT_QUOTES | ENT_HTML5);
    $nume = htmlentities($_POST['nume'], ENT_QUOTES | ENT_HTML5);
    $prenume = htmlentities($_POST['prenume'], ENT_QUOTES | ENT_HTML5);
    $varsta = $_POST["varsta"];
    $localitatea = htmlentities($_POST['localitatea'], ENT_QUOTES | ENT_HTML5);
    $numep = htmlentities($_POST['numep'], ENT_QUOTES | ENT_HTML5);
    $idstire = htmlentities($_POST['idstire'], ENT_QUOTES | ENT_HTML5);
    $stire = $_POST["stire"];
    $data = gmDate('Y-m-d H:i:s');
    }
    
    
    $sql = "INSERT INTO stiri".
       "(link, poza, nume, prenume, varsta, localitatea, numep, idstire, stire, accesari,         data) ".
                   "VALUES('$link','$poza','$nume','$prenume','$varsta','$localitatea','$numep','$idstire','$stire','$accesari', NOW())";
    mysql_select_db('DBNAME');
    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
    die('Nu s-au putut adauga datele: ' . mysql_error());
    }
    echo "
    
    <p class='text-center'>Copiaza si trimite link-ul de mai jos, prietenului tau</p>
    
    <textarea rows='2' cols='55'>http://site.ro/" . $_POST['stire'] . "?idstire="     . $_POST['idstire'] . "</textarea>
    
    <br />
    <p class='text-center'>Acceseaza <a target='_blank'href='http://site.ro/" .     $_POST['stire'] . "?idstire=" . $_POST['idstire'] . "'>ACEST</a> link pentru     previzualizare</p>
    
    ";
    mysql_close($conn);
    }
    ?>
Structura tabelului stiri din baza de date arata asa:
--------------------------------------------------------------------------------------------------------------------------
| id | link | poza | nume | prenume | varsta | localitatea | numep | idstire | stire | data | accesari |
--------------------------------------------------------------------------------------------------------------------------

Deci sa fac o mica harta cam cu ceea ce vreau sa fac...
Userul Ditzy cu id = 1 din tabelul users din baza de date, vrea sa creeze o stire..
Ditzy intra pe o pagina in care se afla un formular..
Acel formular stocheaza informatiile in tabelul stiri din baza de date..
Ditzy scrie informatiile si apasa butonul de trimite.
Acum informatiile au fost adaugate cu succes in baza de date, in tabelul stiri ..

Ceea ce am zis mai sus, este deja rezolvat..
Vreau doar ca atunci cand Ditzy introduce o noua stire in baza de date, sa fie "legata" de contul lui, mai exact de id-ul contului lui..
Deci daca Ditzy adauga o stire, mai adauga o stire, si inca o stire, si tot asa, sa fie adaugate aceste stiri doar in contul lui..
Fiecare user inregistrat va avea posibilitatea de a scrie stiri, asa ca trebuie sa ma folosesc de id-ul fiecarui user in parte..
Sper ca ati inteles cam ceea ce vreau sa fac.. Daca nu ati inteles, lasa-ti un coment si voi incerca sa explic mai clar..
Va multumesc..
Claudiu!

steell Mesaje:190
Nu trebuie neaparat sa apelezi mereu la coloana id din tabele. Poti sa mai adaugi o coloana username in tabelul stiri.
In momentul cand cineva posteaza o stire se va adauga in aceasta coloana username-ul persoanei respective. Asa poti sa editezi usor doar anumite stiri care apartin doar anumitor useri. E mai usor asa, nu ai treaba cu id-ul.

MarPlo Mesaje:4343
Salut
Vad ca in tabelul "stiri" ai "id" si "idstiri", Mai util ar fi sa ai "id" coloana Primary Auto_Increment pentru ID-ul stirilor, si "iduser" coloana INT pentru ID-ul utilizatorului care adauga stirea.
Cand utilizatorul se logheaza, retii id-ul lui din tabelul "users" intr-o sesiune, iar cand adauga stirea, preiei id-ul din sesiune si-l adaugi in coloana "iduser".

Subiecte similare