PHP mini problem

poruka: 20
|
čitano: 1.809
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
PHP mini problem

$query = 'SELECT posts.title, posts.body, posts.user_id, user.username
                FROM posts, users
               WHERE posts.user_id = users.id';
    
     $result = mysql_query($query);
    
     while($row = mysql_fetch_array($result)) {
        
         //ispisuje na stranici
         echo '<h2>' . $row['title'] . '</h2>' . '<br />';
         echo $row['body'] . '<br />';
         echo $row['username'] . '<br />';
         
    }

 

U kodu je greška negdje, jel sam fulala negdje u sintaksi? Ja neam pojima

Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
 
0 0 hvala 0
16 godina
neaktivan
offline
PHP mini problem

Jel možeš napisati koju grešku ti ispisuje?

There's too many self-Indulgent wieners in this city with too much bloody money!
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP mini problem
kaže da je u ovom redu greška:

while($row = mysql_fetch_array($result)) {

kao da nije sql naredba dobra... dakle po meni neš sam fulala u varijabli $query...
Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
16 godina
neaktivan
offline
RE: PHP mini problem
cozmika kaže...

$query = 'SELECT posts.title, posts.body, posts.user_id, user.username
                FROM posts, users
               WHERE posts.user_id = users.id';
    
     $result = mysql_query($query);
    

 

 pretpostavljam da je greška u samom sql kodu. Također pretpostavljam da izvlačiš podatke iz dvije tablice. Posts i user(s).
Prvo selektiraš username iz tablice "USER" i onda uspoređuješ user_id iz tablice POSTS i id usera iz tablice USERS. Sad sve ovisi kako ti se tablica koja ima podatke o userima zove.

Vjerojatno ti zato mysql_query() funckija vraća false.

možeš se recimo i od toga zaštitit..tako da staviš:

if($result) {
    while($row = mysql_fetch_row($result)) {
          // Dalje kod
    }
}
There's too many self-Indulgent wieners in this city with too much bloody money!
Poruka je uređivana zadnji put pet 25.7.2008 14:10 (coder_).
16 godina
neaktivan
offline
RE: PHP mini problem

U SQLu je greška jer ti fali jedan "s" u nazivu join-ane tabele:

 

SELECT posts.title, posts.body, posts.user_id, users.username
FROM posts, users
WHERE posts.user_id = users.id

 

a ovo dalje bi trebalo biti OK - iako već dugo nisam radio ovako direktno s bazom :)

šta vas briga kakvo računalo imam, neću priznati ni ako me mučite
Poruka je uređivana zadnji put pet 25.7.2008 14:19 (NaniteBoy).
16 godina
neaktivan
offline
RE: PHP mini problem
Sad nema greške ali mi je prazna sranica... ?!
Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
16 godina
neaktivan
offline
PHP mini problem

Ili ti je postavljeno da ti skripta ne ispisuje greške (u development fazi bi trebala ispisivat sve greške) ili nemaš ništa u bazi pa nema šta ispisat (u što ne vjerujem).

 

znači, probaj postavit negdje na vrhu skripte:

 

error_reporting(E_ALL | E_STRICT); //Ispisuje sve greške tijekom development faze.

 

 

Trebala bi napravit debug skripte da vidiš što ti se događa sa kodom.

There's too many self-Indulgent wieners in this city with too much bloody money!
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP mini problem

Čini mi se da je NaniteBoy u pravu...

coder_ kaže...

error_reporting(E_ALL | E_STRICT); //Ispisuje sve greške tijekom development faze.

Trebala bi napravit debug skripte da vidiš što ti se događa sa kodom.

 Samo da napomenem da je E_STRICT uveden u php-u 5 pa ako radiš na četvorci ovo će biti dodatni bug :)
16 godina
neaktivan
offline
RE: PHP mini problem
Ima u bazi za ispisati, to štima....

$query = 'SELECT posts.title, posts.body, posts.user_id, user.username
FROM posts, users
WHERE posts.user_id = users.id';

Ja mislim da je tu caka. Jer maknula sam sve i upisala "select * from posts" i radilo je.
Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
16 godina
neaktivan
offline
RE: PHP mini problem
Jooj jesam debil
user.username to je krivo
users.username ide.....
sorry
Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
16 godina
neaktivan
offline
RE: PHP mini problem

pa da nisi tako brzala čitanje i postanje na pogrešne

prijedloge, vidjela bi da je matori programer to već uočio

 

ništa strašno - to svi napravimo barem 10 puta dnevno ali iskustvom

se postiže brzina uočavanja glupih grešaka - dok pametne ostaju kao feature ;)

šta vas briga kakvo računalo imam, neću priznati ni ako me mučite
16 godina
neaktivan
offline
RE: PHP mini problem

Sad me nekaj drugo muči:

 

ovo je funkcija:

 

function create_post($params){
        
         $connection = db_connect();
        
         $query = sprintf("INSTERT INTO posts
                   SET
                  title = '%s',
                  body = '%s',
                  created_at = NOW(),
                  user_id = '%s'
                  ",
                  mysql_real_escape_string($params['title']),
                  mysql_real_escape_string($params['body']),
                  mysql_real_escape_string($params['user_id'])
                  );
   
   
        $result = mysql_query($query);
       
        if (!$result) {
           
            return false;

            } else {
           
            return true;

                }
       
   
     }
     

 

i onda poslije funkcije ide:

 

if ( !create_post(array( 'title' => 'This is the title', 'body' => 'This is the body', 'user_id' => 1 )) )
     {
     echo "Sranje! " . mysql_error();
     }

 

Ovaj if sam stavila jel mi se nije htjelo ispisivati na stranici pa me zanimalo jel tu greška i ispada da je.

Kaže da je greška tu:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSTERT INTO posts SET title = 'This is the title', ' at line 1

 

Kako to riješiti prosim lijepo.

Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
Poruka je uređivana zadnji put sub 26.7.2008 15:30 (cozmika).
16 godina
neaktivan
offline
RE: PHP mini problem
cozmika kaže...

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSTERT INTO posts SET title = 'This is the title', ' at line 1

 

Kako to riješiti prosim lijepo.

 nije ti dobra sql sintaksa.. Pravilna sintaksa sa mysql insert query ti je: INSERT INTO posts (title) VALUE ("This is the title");

spojila si sintaksu insert naredbe i update naredbe.

Update ide: UPDATE posts SET title = "This is the title";
There's too many self-Indulgent wieners in this city with too much bloody money!
Poruka je uređivana zadnji put sub 26.7.2008 15:48 (coder_).
16 godina
neaktivan
offline
RE: PHP mini problem

Sad sam išla na w3schools provjeriti kak se točno piše i prepravila:

 

$query = sprintf("INSTERT INTO posts (title, body, created_at, user_id)
                           VALUES
                          (title = '%s',
                          body = '%s',
                          created_at = NOW(),
                          user_id = '%s')
                          ",
                          mysql_real_escape_string($params['title']),
                          mysql_real_escape_string($params['body']),
                          mysql_real_escape_string($params['user_id'])
                          );

 

... ali opet isto, tek se učim, help

Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
16 godina
neaktivan
offline
RE: PHP mini problem

evo pogledaj ovdje malo. moguće  ti je i magic_quotes_gpc uključen pa onda moraš podatke prije provuć kroz stripslashes() funkciju.

There's too many self-Indulgent wieners in this city with too much bloody money!
16 godina
neaktivan
offline
RE: PHP mini problem

Ako sam te skužila mislio si ovako:

 

stripslashes(mysql_real_escape_string($params['title'])),
stripslashes(mysql_real_escape_string($params['body'])),
stripslashes(mysql_real_escape_string($params['user_id']))

 

No ne radi... Ma nema veze, budem već nekako skužila...

Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
16 godina
neaktivan
offline
RE: PHP mini problem
cozmika kaže...

Ako sam te skužila mislio si ovako:

 

stripslashes(mysql_real_escape_string($params['title'])),
stripslashes(mysql_real_escape_string($params['body'])),
stripslashes(mysql_real_escape_string($params['user_id']))

 

No ne radi... Ma nema veze, budem već nekako skužila...

 hehe, obratno..

znači: mysql_real_escape_string(stripslashes($params['title']));

znači, kad imaš ovakav slučaj, prvo se izvršava unutarnja funkcija (stripslashes) koja vraća vrijednost funkciji mysql_real_escape_string.


Iako je bolje da sama skužiš (tako najbolje naučiš), tu smo da pomognemo.. Ako zapne, pitaj.

E sad sam malo bolje pogledao query. Treba bit ovako:

$query = sprintf("INSTERT INTO posts (title, body, created_at, user_id)
                           VALUES
                          ('%s',
                          '%s',
                          NOW(),
                          '%s')
                          ",
                          mysql_real_escape_string(stripslashes($params['title']), $conn),
                          mysql_real_escape_string(stripslashes($params['body']), $conn),
                          mysql_real_escape_string(stripslashes($params['user_id']), $conn)
                          );

There's too many self-Indulgent wieners in this city with too much bloody money!
Poruka je uređivana zadnji put sub 26.7.2008 16:51 (coder_).
16 godina
neaktivan
offline
RE: PHP mini problem

PHP me mrzi.... Plač

 

Stavila sam kako si rekao ali mi je onda još više grešaka izbacilo. Ovako sam onda stavila.... Ja fakat ne znam kaj ga muči. Sad mi izbaci:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSTERT INTO posts( title, body, created_at, user_id) VALUES ' at line 1

 

Ovo je taj je... kod:

 

// novi post radi ----------------------------------------------------------------------------------------
     function create_post($params){
        
         $connection = db_connect();
        
         $query = sprintf("INSTERT INTO posts( title, body, created_at, user_id)
                           VALUES
                          ('%s',
                           '%s',
                           NOW(),
                           '%s')
                          ",
                          mysql_real_escape_string($params['title']),
                          mysql_real_escape_string($params['body']),
                          mysql_real_escape_string($params['user_id'])
                          );
   
   
        $result = mysql_query($query);
       
        if (!$result) {
           
            return false;

            } else {
           
            return true;

                }
       
   
     }
     
     
     if ( !create_post(array( 'title' => 'This is the title', 'body' => 'This is the body', 'user_id' => 1 )) )
     {
     echo "Sranje! " . mysql_error();
     }

Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
Poruka je uređivana zadnji put sub 26.7.2008 17:10 (cozmika).
16 godina
neaktivan
offline
RE: PHP mini problem

Probaj napraviti ovako (bez nepotrebnog sprintf) - također obrati pažnju da nije INSTERT već INSERT (tip-feler):

 

  $query =
    "INSERT INTO posts(title, body, created_at, user_id) VALUES ( " .
    "'" . $params['title'] . "', " .
    "'" . $params['body'] . "', " .
    "NOW(), " .
    "'" . $params['user_id'] . "'";

 

Sad ne znam da li ti je user_id string ili broj u bazi (preporučam broj) - ako je broj, onda makni ove navodnike koje sam stavio.

 

Ovo je iz glave jer nemam gdje trenutno probati da li zaista radi ali mislim da je to to ...

Uglavnom, točkom spajaš stringove u PHPu i ne moraš se previše mučiti navodnicima - samo koristi iste za isti "nivo".

šta vas briga kakvo računalo imam, neću priznati ni ako me mučite
16 godina
neaktivan
offline
RE: PHP mini problem
Riješila sam problem. malo sam pomiješala sintaksu i napisala sam insrert ili tak neku neboulozu.. sad sve radi
Znam da je ovdje 98% muške populacije, ali ja sam u onih 2% žena tako da nebude više zamjene Ja bi dSLR a nemrem ga imati - weeeee baš suuuper http://www.nabava.net/kategorija.php?kat=12&se=4255&order=min_cijena
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice