Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Serverske aplikacije i baze podataka

Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion...
MySQL, PostgreSQL, MSQL, Oracle...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 12.5.2009, 3:38   #1
dark mesiah
Član
 
Član od: 11.12.2006.
Lokacija: Heaven and Hell
Poruke: 157
Zahvalnice: 147
Zahvaljeno 126 puta na 45 poruka
Slanje poruke preko ICQ-a korisniku dark mesiah
Određen forumom PHP MYSQL problem

Potrebna mi je pomoc. Napisao sam par skripta u php koji treba da koriste mysql databazu, ali nikako da proradi jer mi ispisuje greske,

Prva sluzi za dodavanje info u bazu podataka. I kad god se iz glavne html stranice posalju informacije, uvek ispisuje, 'Nepostoji!'
PHP kod:
<? 
$ime = $_POST['ime'];
$prezime = $_POST['prezime'];
$grupa = $_POST['grupa'];
$godina = $_POST['godina'];
$smer = $_POST['smer'];

$conn = mysql_connect("localhost","root","root"); 

if (!$conn): 
  echo "<h1>Konektovanje databaze neuspesno</h1>";  
endif; 

mysql_select_db("studenti") or die ("Nepostoji!");

if (isset($_POST['submit'])):
$res = ("insert into student (ime,prezime,grupa,godina,smer) values ('$ime','$prezime','$grupa', '$godina','$smer')");
                   $pa = mysql_query($res) or die ("neuspesno"); 
                   echo "uspesno.";
endif;
?> 

    <form action="ispis.php"> 
    <input type="submit"  
           value="Pregled" /> 
    </form>
    
    <br /> 
    
    <form action="Evidencija studentov.html"> 
    <input type="submit"  
           value="Dodaj studenta" /> 
    </form> 
    
<? 
  mysql_close($conn); 
?>


Druga treba da ispise podatke iz baze u tablicu, ali mi uvek ispise
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in Z:\www\ispis.php on line 25
PHP kod:
<?
$db = mysql_connect("localhost", "root","root");
mysql_select_db("student",$db);
$result = mysql_query("SELECT * FROM student",$db);
$br=mysql_numrows($result);

for($i=0; $i<$br; $i++): 
  echo "<tr>\n"; 
  echo "<td align=\"center\">".  
       mysql_result($result, $i, "id"). 
       "</td>\n"; 
  echo "<td>".mysql_result($result, $i, "ime"). 
       "</td>\n";   
  echo "<td>".mysql_result($result, $i, "prezime"). 
        "</td>\n"; 
  echo "<td>".mysql_result($result, $i, "grupa"). 
       "</td>\n";
  echo "<td>".mysql_result($result, $i, "godina"). 
       "</td>\n"; 
  echo "<td align=\"right\">". 
       mysql_result($result, $i, "smer"). 
       "</td>\n";         
  echo "</tr>\n"; 
endfor;  
?>

</table>

<br />

<form action="Evidencijastudenta.html"> 
    <input type="submit"  
           value="Dodaj studenta" /> 
    </form> 
    
<br />

<form action="obrisi.php"> 
      <input name="id" 
      value="". 
      mysql_result($result, $i, "id")."\" /> 
      <input type="submit" value="Obr" /
></td></form>

<br />

<form action="ispravi.php"> 
       
      <input type="submit" value="Ispr" />
</form>

<br />

<form action="nadji.php"> 
      <input type="submit"  
           value="Nadji stud" />
</form>

<?       
  echo "</tr>\n";  
mysql_close(); 
?>
Ako bi neko znao da mi pomogne.. ?
dark mesiah je offline   Odgovor sa citatom ove poruke
Stara 12.5.2009, 8:49   #2
dbaja
Veteran
 
Avatar korisnika dbaja
 
Član od: 4.12.2005.
Poruke: 1.180
Zahvalnice: 50
Zahvaljeno 214 puta na 130 poruka
Određen forumom Re: PHP MYSQL problem

U prvom slučaju zaglavljuje na otvaranju tabele, zbog komentara koji daje kad prsne.
Dakle, trebalo bi u tome tražiti razlog.
Da probaš komandu:
mysql_select_db("studenti") or die ("Nepostoji!");

da zadaš ovako:

mysql_select_db("studenti", $conn) or die ("Nepostoji!");

ili da proveriš da li je u bazi naziv tabele baš taj "studenti".

Za drugi slučaj mislim da naziv funkcije nisi napisao kako treba.
Postoji i numrows, ali u tvom slučaju trebalo bi ovako:

$br=mysql_num_rows($result);
dbaja je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku dbaja na korisnoj poruci:
dark mesiah (12.5.2009)
Stara 12.5.2009, 13:47   #3
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: PHP MYSQL problem

Smeo bih da se kladim da je problem u konekciji sa MySQL serverom tj. u redovima koji sadrže
PHP kod:
$conn mysql_connect("localhost","root","root"); 
Naime, mysql_select_db će uvek prijaviti neupsešan pokušaj selekcije baze ukoliko poslednji pokušaj ostvarivanja konekcije sa MySQL serverom (mysql_connect) nije uspeo ili eksplicitno navedena konekcija kao u sledećem primeru
PHP kod:
mysql_select_db("student",$conn); 
u stvari ne sadrži objekat konekcije (daje null vrednost).

Zbog toga je apsolutno pravilo da se u ovakvim slučajevima vodi računa da se svaki potencijalni neuspeh konekcije, selektovanja baze i upita registruje i prijavi. Drugim rečima ako se koristi or die() pristup potrebno je uvek za mysql_connect navesti taj deo:
PHP kod:
$conn mysql_connect('localhost''root''root') or die('Neuspešan pokušaj konekcije na server'); 
Jedno usputno pitanje kad sam već ovde. Da li si apsolutno siguran da je lozinka za root korisnika na tvom MySQL serveru root? Pitam zato što ako je u pitanju sveža instalacija MySQL podrazumevano nema lozinku za root korisnika pa bi tvoj upit trebao da izgleda ovako:
PHP kod:
$conn mysql_connect('localhost''root''') or die('Neuspešan pokušaj konekcije na server'); 
A sad malo kritike
U delu u kome unosiš podatke u bazu ne vršiš escapeovanje podataka prosleđenih formom. Malo sam se umorio upornim ponavljanjem koliko si samom sebi time zategao omču oko vrata Dakle jednom za sva vremena.

Podatke iz formi nikada ne treba direktno upotrebljavati u SQL upitima bez da se prvo escapeuju sa mysql_real_escape_string funkcijom!

Takođe, pre escapeovanja podataka treba da proveriš da li je uključena magic_quotes funkcija na serveru koja može da zabrlja stvari. Tvoj kod za unos u bazu bi trebalo da izgleda ovako:
PHP kod:
<?php
/*
* Po logici nema potrebe da otvaras konekciju i sve ostalo sto ide uz to
* ako forma nije prethodno prosledjena.
*/
if(isset($_POST['submit'])){
    
/*
    * Ako je magic_quotes aktiviran moramo da ocistimo prvo $_POST od
    * backslash djubreta
    */
    
if(get_magic_quotes_gpc){
        
$_POST array_map('stripslashes'$_POST);
    }
    
    
$conn mysql_connect('localhost''root''') or die('Neuspesna konekcija');
    
/*
    * Izbegavaj alternativnu if sintaksu
    * if (uslov) :
    *     blok sa if komandama
    * endif;
    * S obzirom da ce die stopirati izvrsavanje gore nema potrebe za if-om
    */
    
mysql_select_db('studenti') or die ('Selekcija baze neuspesna!');
    
    
/*
    * Ne trebaju ti zagrade oko obicnog stringa i navikni se da koristis nesto smisleno
    * za naziv promenjljive SQL stringa. Ja uvek koristim $sql. Preporucljivo je
    * da kada pises upite kljucne SQL reci budu pisane velikim slovima.
    */
    
$sql "INSERT INTO `student` (ime, prezime, grupa, godina, smer) VALUES ('".
    
mysql_real_escape_string($_POST['ime'])."', '".
    
mysql_real_escape_string($_POST['prezime'])."', '".
    
mysql_real_escape_string($_POST['grupa'])."', '".
    
mysql_real_escape_string($_POST['godina'])."', '".
    
mysql_real_escape_string($_POST['smer'])."')";
    
    if(
mysql_query($sql)){
        
/*
        * Kod koji zelis da se izvrsi po uspesnom upitu
        */
    
} else {
        
/*
        * Kod za slucaj da je nesto krenulo naopako
        */
    
}
}
?>
I ovde važi da sam možda negde usput napravio neku grešku ali to bi se videlo kod pokretanja.
Da dodam još jednu stvar. Izbegavajte korišćenje mysql_result funkcije. Zašto i zbog čega? Potrajalo bi objašnjenje ali bi siže bio da je problematična i zastarela (čitajte umalo proglašena "deprecated"). Koristite ili mysql_fetch_array ili još bolje ako radite sa asocijativnim nizovima (ja je uglavnom koristim) mysql_fetch_assoc. Uputstva kako se dotične koriste data su na linkovima koje sam dao.
Citat:
baja kaže:
Za drugi slučaj mislim da naziv funkcije nisi napisao kako treba.
Postoji i numrows, ali u tvom slučaju trebalo bi ovako:

$br=mysql_num_rows($result);
Samo da se nadovežem na odgovor kolege ako mogu. mysql_numrows je u stvari potpun alias za mysql_num_rows koji je ostavljen zbog kompatibilnosti sa starijim kodom. Interno ne postoje apsolutno nikakve razlike u funkcionisanju

EDIT: A sam ga ušareneo ko ciganjske untercigere

Poslednja ispravka: holodoc (12.5.2009 u 13:56)
holodoc je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku holodoc na korisnoj poruci:
dark mesiah (12.5.2009)
Stara 12.5.2009, 18:00   #4
dark mesiah
Član
 
Član od: 11.12.2006.
Lokacija: Heaven and Hell
Poruke: 157
Zahvalnice: 147
Zahvaljeno 126 puta na 45 poruka
Slanje poruke preko ICQ-a korisniku dark mesiah
Određen forumom Re: PHP MYSQL problem

100% sam siguran da je lozinka root, jer koristim Uniform Server, gde je odmah na pocetku root.
Probao sam ovo da pokrenem kod jednog poznanika, cudno je da kod njega radi sve ok. Probao sam na moj PC da instaliram PHP home, koji on koristi, ali nece da radi.
Hvala za kritike, ipak sam jos uvek newb .
dark mesiah je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Manji problem oko podešavanja D-Link DI-524 wireless routera ikiM Komunikacioni uređaji i umrežavanje 2 25.6.2009 0:50
HP DeskJet f4180 - problem sa instalacijom vanila Ostale komponente 3 12.3.2009 19:22
Dvd-rw problem Bbandit Nosači podataka 17 11.2.2009 22:21
Problem sa memory_limit u php Kasper_Dobri_Duh Web razvoj 4 11.11.2007 4:49
Veliki problem sa RAM memorijom leka Kvarovi 10 27.7.2006 10:17


Sva vremena su po Griniču +2 h. Sada je 12:06.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com