Php problemă ip

De ce nu mi se updatează IP-ul userului în baza de date?

if (isset($_POST) && sizeof($_POST) > 0){
    $data = new TopicData();
    $_SERVER['REMOTE_ADDR'] = $topic['ip'];
    $data->add($_POST);
    header("LOcation: /");
    exit;
}

Nu primesc erori! Ideea e că dacă la un topic îmi setez din baza de date un IP de exemplu, nu există probleme (folosesc IP-ul pt. a afișa 2 butoane pt. a modifica topic-ul creat de user și le afișează și merge totul ok)

Informatiile prezentate de tine sunt prea vagi…nu prea pot intelege unde este problema si ce legatura are codul de mai sus cu problema intampinata.

1 Like

Păi după cum vezi este apelată funcția add care introduce datele în baza de date:

    public function add($data)
    {
        $query = $this->connection->prepare(
            "INSERT INTO topics (
            title,
            description,
            id
        ) VALUES (
            :title,
            :description,
            :id
        )"
        );

        $data = [
            ':title' => $data['title'],
            ':description' => $data['description'],
            ':id' => $data['id']
        ];

        $query->execute($data);
    }

Ai scris gresit.

ar trebui sa fie invers. $_SERVER deja contine un array cu date

nu cred ca iti da lungimea array-ului din $_POST.

Manualul php-ului nu recomanda sizeof(cel putin in comentarii)
http://php.net/manual/ro/function.sizeof.php

conditia, din punctul meu de vedere este contradictorie.
http://php.net/manual/ro/function.isset.php

Eu as folosi pt acel $_POST["ceva"]

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

pt debugging

2 Likes

Cred ca asa ai vrut sa scrii:

2 Likes

Tot nu merge.

Pasi pt a rezolva problema(valabili pt orice limbaj)

Ia o coala de hartie si structureaza-ti ideile despre cum vrei sa implementezi functionalitatea. Fa un flow al functionalitatii. Foloseste pseudo codul. N-a murit si este extrem de util. Cel putin asa fac eu la serviciu

Nu te arunca direct in cod.

2 Likes

Eu sunt de parere ca ceea ce a prezentat tu mai sus nu are legatura cu problema ta… zici de modificarea IP-ului, dar tu introduci date in acel tabel, nu modifici nimic, mai mult decat atat, nici nu te atingi de campul ce tine de IP-uri, daca ai un astfel de camp in tabelul tau.

Apropo, nu este un raspuns rautacios, incerca doar sa te gandesti mai bine la ce vrei sa faci si ceea ce faci cu adevarat.

2 Likes

Nu modific, m-am exprimat eu greșit, ci introduc. Am un camp in tabelul meu, e de tip varchar si are lungimea maxima de 64. (e asa mare ca ma gandeam ca unii mai au si IPv6)

Nu inteleg de ce nu faci debug pe problema direct: “de ce nu se updateaza ip-ul”. Vezi functia care face asta si rezolvi.

1 Like

Sunt prea paralel cu PHP-ul… E un cod simplu luat de pe github, caruia i-am pus bootstrap (n-avea nicio tema).

Problema este acolo sigur, pt. ca restul sistemului functioneaza. Am pus la un topic ip-ul meu si imi afiseaza butoanele. Deci de incarcat se incarca bine. Problema la functia add nu vad care ar fi…

Bootstrap-ul nu are nicio treaba cu ce ai tu acolo.

Intelege codul inainte sa-l folosesti

2 Likes

Tu mai exact ce vrei sa faci ? Descrie ca pt un utilizator paralel cu prgramarea.

1 Like

Adauga si campul IP in propozitia SQL si in variabila $data, acolo unde ai ‘:title’ => $data[‘title’]

1 Like

N-am zis ca are legatura :))

Voiam sa-ti demonstrez cat de paralel sunt cu PHP-ul :)))

De inteles il inteleg cat de cat, stiind deja cateva limbaje de programare (C++, Lua, PAWN)

`

public function add($data)
    {
        $query = $this->connection->prepare(
            "INSERT INTO topics (
            title,
            description,
            ip
        ) VALUES (
            :title,
            :description,
           :ip
        )"
        );

        $data = [
            ':title' => $data['title'],
            ':description' => $data['description'],
            ':ip' => $data['ip'],
        ];

        $query->execute($data);
    }

Renunta la id, in mod normal, acel camp creste de la sine.Apropo, vezi ca pentru title si description nu introduci date.

1 Like

Acum am obsercat :))

Am modificat de mai multe ori codul sa vad unde gresisem, si pe graba am uitat :))

Multumesc tuturor de ajutor! (testez)

1 Like

Marcheaza raspunsul lui PoscanJr ca solutie ! :slight_smile:

Sa vada si altii care au probleme aasemanatoare cu a ta

Vreau sa-ti dau un sfat, nu conteaza ce limbaj folosesti, important e sa stii chestiile fundamentale, concentreaza-te pe astea si vei vedea ca poti jongla cu oprice limbaj de programare.