» »

PHP datoteka, povezava na bazo

PHP datoteka, povezava na bazo

racunalnicar ::

Pozdravljeni,

imam PHP datoteko, ki generira določene kode, vpisovati pa bi jih morala v MySQL bazo. Ubadam se že cel vikend, pa nikakor ne pridem do rešitve.
Nekomu, ki pozna povezavo php datotek na podatkovno bazo, bi stvar vzela kakšno minuto.
Zanima me, če se najde kdo, ki mi je pripravljen pomagati na to "sončno" nedeljo? Hvala!

Marino88 ::

Kako se to sliši je tvoj method=post nepravilen.

Najprej preglej .php dokument kateri se povezuje in pošilja podatke v bazo, potem preveri bazo in ne pozabi, da uporabnik kateri upravlja bazo mora imeti tudi nastavljene določene privilegije, da lahko potem pridejo s method=post in ustvarjenim uporabnikom, podatki v bazo, odvisno zakaj rabiš.
Načeloma mora koda tako izgledat:
<?php
$host="localhost"; // ime gostitelja 
$username="uporabnik_uporabnik"; // Mysql uporabnik 
$password="GESLO11"; // Mysql geslo
$db_name="uporabnik_baza1"; // Ime podatkovne baze
$tbl_name="tabelca"; // Ime tabele 

// povezava do strežnika in določanje podatkovne baze.
$link = mysql_connect("localhost", "uporabnik_uporabnik", "GESLO11")or die; 
mysql_select_db('uporabnik_baza1', $link) or die("Povezave ni bilo mogoče vspostavit - spremeniti dovoljenja na bazi.");

...

// Vstavljanje podatkov v mysql 
$sql="INSERT INTO tabelca...
?>

Zgodovina sprememb…

  • spremenilo: Marino88 ()

racunalnicar ::

Te parametre imam nastavljene, vendar se zapisi v bazi kar ne pojavijo...

msjr ::

Zgoraj manjka en ukazek (glej spodaj), če še vedno ne bo delalo pokaži INSERT stavek, da vidimo, mogoče je tam napaka

// Vstavljanje podatkov v mysql 
$sql="INSERT INTO tabelca..
//tole je marino pozabil dodati na koncu, moraš klicat query :)
mysql_query($sql); 

Zgodovina sprememb…

  • spremenil: msjr ()

racunalnicar ::

Takole izgleda moja koda:
<?php 
  
/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */
  
function random_string($length = 12) { 
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
    $randstring = ''; 
    for ($i = 0; $i < 12; $i++) { 
        $randstring .= $characters[rand(0, strlen($characters))]; 
    } 
    return $randstring; 
} 
  
$coupons = array(); 
for ($i = 1; $i <= 500; $i++) { 
  
    while (TRUE) { 
        $new_coupons = random_string(); 
  
        if (!in_array($new_coupons, $coupons)) { 
            array_push($coupons, $new_coupons); 
            break; 
        } 
    } 
} 
include 'settings.php'; 
  
  
//generate connection 
$conn = new mysqli('localhost', username, password, database); 
  
// check connection 
if (mysqli_connect_errno()) { 
    exit('Connect failed: ' . mysqli_connect_error()); 
} 
  
//insert into database 
foreach ($coupons as $coupon) 
    $conn->query("INSERT INTO kuponi (kupon) VALUES( '$coupon' )"); 
  
  
$conn->close(); 
?> 


Tole pa je še settings file:
<?php 
  
/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */
  
    //database 
    define( 'database', 'IME_BAZE' ); 
    define( 'username', 'UPORABNISKO' ); 
    define( 'password', 'GESLO' ); 
      
    //email 
    define( 'email', 'email@email.si' ); 
  
?> 

Zgodovina sprememb…

hellboy123 ::

Naprej na začetku fajla vklopi errorje:
error_reporting(E_ALL);
ini_set('display_errors', 1);


Pol pa spodaj pri foreach:
foreach ($coupons as $coupon)
{ 
    if ( ! $conn->query("INSERT INTO kuponi (kupon) VALUES( '$coupon' )") )
        echo 'Error:' . $conn->error . '<br />';
}

Zgodovina sprememb…

racunalnicar ::

Aha, sedaj se mi izpišejo pa tudi errorji: klik. :|

hellboy123 ::

Prvih xx notice-ov je zaradi tega: Notice: Uninitialized string offset in PHP
Torej pri random_string funkciji zamenjaj:
$randstring .= $characters[rand(0, strlen($characters))]; 

z
$randstring .= $characters[rand(0, strlen($characters) - 1)]; 


Za drugi, glavni error, pa boš moral ponovno postat najnovejšo kodo, ker je error v liniji 67, tale tvoja zadnja koda pa ma samo 46 vrstic, tak da si moral še nekaj dodajat.

Zgodovina sprememb…

racunalnicar ::

Prvo napako sem popravil, pripenjam pa zdajšnjo kodo.

<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// die();
print ("test");

$services = getenv("VCAP_SERVICES");
$services_json = json_decode($services,true);
$mysql_config = $services_json["mysql-5.5"][0]["credentials"];
$db = $mysql_config["name"];
$host = $mysql_config["host"];
$port = $mysql_config["port"];
$username = $mysql_config["user"];
$password = $mysql_config["password"];

$conn = mysql_connect($host . ':' . $port, $username, $password);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
mysql_select_db($db);

function random_string($length = 12) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randstring = '';
    for ($i = 0; $i < 12; $i++) {
        $randstring .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randstring;
}

$coupons = array();
for ($i = 1; $i <= 500; $i++) {

    while (TRUE) {
        $new_coupons = random_string();

        if (!in_array($new_coupons, $coupons)) {
            array_push($coupons, $new_coupons);
            break;
        }
    }
}
include 'settings.php';


//generate connection
//$conn = new mysql(host . ':' . port, username, password, database);
//$conn = mysql_connect($host . ':' . $port, $username, $password);

// check connection
/*
if (mysqli_connect_errno()) {
    exit('Connect failed: ' . mysqli_connect_error());
}
*/
//insert into database
foreach ($coupons as $coupon)
{ 
    if ( ! $conn->query("INSERT INTO kuponi (kupon) VALUES( '$coupon' )") )
        echo 'Error:' . $conn->error . '<br />';
}


//$conn->close();
mysql_close($conn);
?>

hellboy123 ::

Aja, tukaj zdaj uporablaš mysql kot funkcijo... ne objekt.
Pol pa bo foreach zgledal nekak tak:

foreach ($coupons as $coupon)
{ 
    if ( ! mysql_query("INSERT INTO kuponi (kupon) VALUES( '$coupon' )") )
        echo 'Error:' . mysql_error() . '<br />';
}

racunalnicar ::

hellboy123 najlepša hvala, ta del sedaj deluje!
V bistvu je cilj aplikacije, da v bazi preveri, če si vnesel pravi kupon in na podlagi tega ti prikaže formo za prijavo na potovanje.
V datoteko settings.php sem vnesel podatke za povezavo, datoteka check_coupon.php mi preverja veljavnost kupona, check_seats.php zasedenost sedeža, book.php pa vrši rezervacijo.
Tole mi ni popolnoma jasno, glede funkcije in objekta... Verjetno sem tudi tukaj kaj pomešal, pa mi samo zaradi tega ne deluje... Hvala, ker si vzameš čas!

Edit: Želim reči, ko kliknem na gumb Preveri kupon v aplikaciji, se ne zgodi nič...

Zgodovina sprememb…

hellboy123 ::

Tukaj imaš recimo eno temo na objektno vs. procedualno programiranje.

Recimo v check_coupon.php tak na hitro pogedano vidim že napako:
$conn = mysql_connect($host . ':' . $port, $username, $password); 


Spodaj pa maš potem:
$val = $conn->real_escape_string($coupon); 
...
if ($result = $conn->query($query)) { 
itd.


"mysql_connect" funkcija ti vrne link / resource, ti pa, če hočeš uporabljati metode (->real_escape_string, ->query, ...) moraš dobiti / narediti "$conn" spremenljivko v objekt.
Glede mysqli objekta, si lahko več prebereš tukaj.

Najboljše pa je, da kar uporabiš PDO. Več o PDO: tukaj.

Še nekaj, če delaš aplikacijo, ki ima "malo več" funkcionalnosti, se vsekakor splača pogledat kak mikro-framework.

Zgodovina sprememb…

racunalnicar ::

Najlepša hvala za odgovor in pomoč. Škoda, da sem ravno med izpitnim obdobjem, zato bom za kake 14 dni pozabil na tole, potem pa podrobno naštudiral zadeve z linkov.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Branje slik jpg iz MySQL z PHP

Oddelek: Izdelava spletišč
152418 (2036) a-ptuj1
»

PHP povezava z Mysql

Oddelek: Izdelava spletišč
16932 (777) snooze77
»

php & mysql iskanje po podatkovni bazi

Oddelek: Programiranje
141146 (856) MisterR
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
153224 (2989) overlord_tm
»

[php] Knjiga gostov

Oddelek: Izdelava spletišč
293167 (2370) darix

Več podobnih tem