Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP ja MYSQL märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 06.04.2016 16:54:59 PHP ja MYSQL vasta tsitaadiga

Ma ei taha et keegi mulle kohe õige koodi ette annaks -
Aga mul on vaja teha nö input form, kus asjad pannakse baasi.
Asi on mul valmis.
Probleem 1. tühja välja saab sisestada, ja läheb ka DBsse kirja. DB on struktuurilt Id ja name. Kui ma teen ühe välja tühjana names, ja määran name veeru uniqueks kas sest on tolku? Ning kui on, kas siis ma pean kuidagi nö process.phps seda errorit kuidagi handlima ka?
Ma ei tea php error handlimisest midagi, ehk saab keegi suunata probleemi lahenduse poole?

Tänud, sir.
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 06.04.2016 17:09:10 vasta tsitaadiga

SirShark, kas sa ise korra proovisid juba, mis juhtub, kui teed nii, nagu välja pakkusid?
_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 06.04.2016 18:29:53 vasta tsitaadiga

Ei, veel ei proovinud, ma ei kipu uskuma, et lahendus oleks nii lihtne. icon_biggrin.gif


Edit töötab.
Aga kas sellisena, tekkiv SQL error, ei anna võimalust sql injectioniks? Kui nüüd arendushügieenist rääkida?
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 06.04.2016 20:49:21 vasta tsitaadiga

SirShark, sql errorit tuleb sul händlida, kui tahad seda kontrolli läbi andmebaasi schema teha.

SQL injection on hoopis teine asi. Google aitab taas. Kui aga väga konkreetselt midagi segaseks jääb, siis küsi.

_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 06.04.2016 23:45:14 vasta tsitaadiga

Nii, kuna mul on HTML lehed tehtud - siis mul on küll rumal küsimus, mul on tehtud hetkel HTML leht kus on siis lisatud input form , mille actioniks on siis process.php - mis sisaldab siis SQLi ühendumist, ja andmete sisestamist- OOPi vaatenurgast peaks vist olema eraldi- connect.php näiteks ja siis insert.php ?
Aga mul on küsimus, mis on võtmesõnaks, et see kinnitus, et andmete sisestus õnnestus - hetkel peale submit buttonit muljudes, suunabki lehe process.phple, ja kogu lugu...aga mul oleks tarvis et ta kuvaks seda samal lehel.

<?php
<?php
// Tegutse siis kui post pole tühi
if ( ! empty( $_POST ) ) {
 
  // ühendumine SQLi
  $mysqli = new mysqli( '****', '*****', '*****', '****' );
 
  // Kontroll, et ühendus toimib
  if ( $mysqli->connect_error ) {
    die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
  }
 
  // Andmete sisestus
  $sql = "INSERT INTO osalejad ( kasutajatunnus ) VALUES ( '{$mysqli->real_escape_string($_POST['kasutajatunnus'])}' )";
  $insert = $mysqli->query($sql);
 
  // Vastuse kuvamine SQList
  if ( $insert ) {
    echo "Registreeritud!";
  } else {
    die("Registreerumine ebaõnnestus");
  }
 
  // Ühenduse sulgemine
  $mysqli->close();
}
?>




HTMLis ongi lihtsalt post form actioniga sellele failile.
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
sakinaga
HV Guru

liitunud: 30.08.2006




sõnum 06.04.2016 23:52:48 vasta tsitaadiga

mysql andmebaasi info pane eraldi php faili, millel on piiratud õigused ja mille included vajadusel. Kui registreerimine ebaõnnestus, siis ühendust ei suleta.
Kommentaarid: 159 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 151
tagasi üles
vaata kasutaja infot saada privaatsõnum
s0wh4t?
HV vaatleja

liitunud: 18.02.2013




sõnum 07.04.2016 22:44:04 vasta tsitaadiga

Tegin veits ümber. Nii on õigem teha.
db.php lisa $db = mysqli_connect
<?php
include ("db.php");

if(isset($_POST["submit"])) {
   
      $nimi = $_POST["nimi"];
   
   $dbn = mysqli_real_escape_string($db, $nimi);
   $dbc = mysqli_query($db, "SELECT * FROM kasutajad WHERE kasutajanimi='".$nimi."'");

   
   if (mysqli_num_rows($dbc) > 0) {
      echo 'Viga: Kasutajanimi juba kasutuses/Viga registeerimisel';
   } else {
      $query = mysqli_query($db, "INSERT INTO kasutajad (kasutajanimi) VALUES ('$dbn')");
      echo 'Olete registeeritud.';
   }
}
?>
<form method="post" action="">
Nimi
<input name="nimi" type="text" class="nimi"/>
  <input type="submit" name="submit" value="Registreeru" />
</form>
tagasi üles
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 08.04.2016 12:11:18 vasta tsitaadiga

mysqli_real_escape_string() välkundit võiks siiski SELECT puhul ju ka kasutada
_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 10.04.2016 14:00:33 vasta tsitaadiga

Nii, sellega ma sain hakkama.
Aga icon_biggrin.gif

Mul on tabel osalejad siis, ja lan_brackets nimeline tabel, mille struktuuriks on id ja võiks öelda et tekst.
Mul oleks vaja võtta siis andmebaasist kõik nimed, ja segada need sellisele kujule
{"teams":[["Nimi1","Nimi2"],["nimi3","nimi4"]]} ja niimoodi neid paare tehtaks, kuniks on nimed kõik kasutusel.
Ma saan oma andmed loetud arraysse, ega ma jään hätta seal, et saaksin sellise tsükli tehtud, et tulemuseks oleks:

$stm='{"teams":[["row[0]","row[1]"],["row[2]","row[3]"]]}'

Ideaalis oleks nad veel kuidagi randomina sinna statementi pandud.

Asja eesmärk oleks siis saada lõpuks teha selline päring:

INSERT INTO `lan_brackets`('text') VALUES ($stm)

Sai vist nüüd maru segane kamarajura:D



edit: Array emplode, ja mingi regex üritada välja mõelda?
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
s0wh4t?
HV vaatleja

liitunud: 18.02.2013




sõnum 11.04.2016 17:14:14 vasta tsitaadiga

Renka kirjutas:
mysqli_real_escape_string() välkundit võiks siiski SELECT puhul ju ka kasutada


Nõustun sinuga. Kerge näpukas, ei kontrollinud üle.

SirShark kirjutas:
Nii, sellega ma sain hakkama.
Aga icon_biggrin.gif

Mul on tabel osalejad siis, ja lan_brackets nimeline tabel, mille struktuuriks on id ja võiks öelda et tekst.
Mul oleks vaja võtta siis andmebaasist kõik nimed, ja segada need sellisele kujule
{"teams":[["Nimi1","Nimi2"],["nimi3","nimi4"]]} ja niimoodi neid paare tehtaks, kuniks on nimed kõik kasutusel.
Ma saan oma andmed loetud arraysse, ega ma jään hätta seal, et saaksin sellise tsükli tehtud, et tulemuseks oleks:

$stm='{"teams":[["row[0]","row[1]"],["row[2]","row[3]"]]}'

Ideaalis oleks nad veel kuidagi randomina sinna statementi pandud.

Asja eesmärk oleks siis saada lõpuks teha selline päring:

INSERT INTO `lan_brackets`('text') VALUES ($stm)

Sai vist nüüd maru segane kamarajura:D



edit: Array emplode, ja mingi regex üritada välja mõelda?


Eem... Saad natuke paremini lahti seletada? Ma ei saa päris täpselt aru. Võid näidata mis sul tehtud on.
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 12.04.2016 12:54:06 vasta tsitaadiga

Proovin seletada.
Teen baasist päringu Select name from osalejad;
Loen selle arraysse. nimetagem seda row[] 'ks
ja nüüd tahan moodustada stringi
$stm='{"teams":[["row[0]","row[1]"],["row[2]","row[3]"]]}'
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 12.04.2016 12:54:52 vasta tsitaadiga

Tahad array'st JSON'it teha?
http://php.net/manual/en/function.json-encode.php

_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 12.04.2016 12:57:07 vasta tsitaadiga

http://php.net/manual/en/function.json-encode.php
http://php.net/manual/en/function.serialize.php
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 12.04.2016 13:38:47 vasta tsitaadiga

jnt, põhimõtteliselt küll. ainus häda on selles, json encode ei tee seda selliseks nagu mul vaja on icon_biggrin.gif

mikk36, ma ei saa kahjuks neist näidetest vähemalt esmapilgul aru, serialize puhul siis. aga ma proovin süveneda.
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 12.04.2016 13:53:26 vasta tsitaadiga

SirShark, kui ei tee selliseks nagu vaja, siis pead ise kirjutama sobiva funktsiooni.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 12.04.2016 13:59:19 vasta tsitaadiga

SirShark, ilmselt ei sööda sa talle ise sisse sellist array'd, nagu vaja.
_________________
Progemisest: https://byteaether.github.io/
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 110 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 102
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 12.04.2016 14:03:40 vasta tsitaadiga

Array struktuur peab muidugi õige olema enne json_encode'i. Selle osas aga ei ole nendel stringi kujule lahkamised kuidagi seotud sellega.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Rauno266
Kreisi kasutaja

liitunud: 03.07.2009



Autoriseeritud ID-kaardiga

sõnum 12.04.2016 14:15:33 vasta tsitaadiga

Ma näiteks loopiksin üle selle $row.
Midagi sellist:
$teams = '{"teams":[';
for ($i = 0; $i < count($row); $i++){
if ($i != 0){
  $teams .= ',';
}
$teams .= '["' . $row[$i] . '","' . $row[++$i] . '"]';
}
$teams .= ' ]}'.
Kommentaarid: 45 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 41
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 12.04.2016 15:39:12 vasta tsitaadiga

jnt kirjutas:
SirShark, ilmselt ei sööda sa talle ise sisse sellist array'd, nagu vaja.



Kurat, sinna see koer ongi maetud.

Viimane loll küsimus
Spoiler Spoiler Spoiler


Ülalolevas koodis, tahaks ma nii teha, et ma saaks kutsuda kui tava bracketi kuvamist funktsioonina, ja samas ka adminni funktsioonina? On selline asi teostatav, või mitte?
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
sakinaga
HV Guru

liitunud: 30.08.2006




sõnum 12.04.2016 15:44:05 vasta tsitaadiga

Palun selgita enda probleemi arusaadavamalt, absoluutselt ei saa aru, mida teha soovitakse.
_________________
Tsensuur HinnaVaatluse foorumis
Kommentaarid: 159 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 151
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 12.04.2016 22:16:11 vasta tsitaadiga

Rauno266 kirjutas:
Ma näiteks loopiksin üle selle $row.
Midagi sellist:
$teams = '{"teams":[';
for ($i = 0; $i < count($row); $i++){
if ($i != 0){
  $teams .= ',';
}
$teams .= '["' . $row[$i] . '","' . $row[++$i] . '"]';
}
$teams .= ' ]}'.



Selline loop vähemalt ei tööta - ma kahtlen et saab niimoodi massiivist PHPs stringi luua.


Mikk, hetkeseseisuga tahaks nii, et kui keegi tuleb minudomeen.com, näeb ta bracketsit, aga tahaks teha kuidagi nii, et get_bracket() ja get_bracketAdmin() ina, ja need lihtsalt kutsuda koodis ette.
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 12.04.2016 22:57:10 vasta tsitaadiga

SirShark, siis unusta ära see vaheteema, mõtle välja mis kujule sul info saada vaja on. Kas sul liigub info algformaadis üldse PHP'st väljapoole? Kui kõik piirdub PHP'ga ja see annab kohe lõppformaadi HTML-kujul välja, siis pole neid Arraysid ju üldse millekski muuks vaja keerata.
Ühes funktsioonis/meetodis väljastad array, teises võtad vastu ja asud töötlema. Pole vaja stringiks vahepeal keerata.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
SirShark
HV kasutaja

liitunud: 23.03.2007




sõnum 16.04.2016 16:05:30 vasta tsitaadiga

sain siis oma JSONi nii lahendatud
Spoiler Spoiler Spoiler

Aga ma tahaks teha , et enne kui ma tiimid tabelisse kannan, et siis oleks mul kontrollitud, et tableis on vähemalt kaheksa inimest, ja kui pole, siis tuleb tsükkel, mis sisestab suvaliselt stiilis vaba mingi number. hetkel ma ei saa aru mis siin invalid query on.

Spoiler Spoiler Spoiler



EDIT:
Sain asjad tabelisse tsükliga insertima, aga imelik on see, et asi asi ei lõpeta oma loopi ära, kui paikamääratud tingimus peaks paigas olema
Spoiler Spoiler Spoiler
Kommentaarid: 35 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 29
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP ja MYSQL
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.