Jump to content
php.lv forumi

DB salīdzināšana.


NBS

Recommended Posts

Ko es gribu panākt: Ievadot texfield'ā piem., "5486531459" skaitļus, kurus pārbauda ar manu DB, kur atrodas šie skaitļu virknes. Ja db šāds skaitlis pastāv izvada "OK", ja nav "Meiģiniet vēlreiz".

 

Izveidoju kodu, bet nesaprotu kāpēc viņš nestrādā:

 

...

 

<form name="form1" method="post" action="index.php">

Ievadiet savu kodu: <input name="code" type="text" align="center" valign="center"><br>

<input type="submit" class="submit" name="Submit" value="Submit">

</form>

 

<?

$code=$_POST['code'];

$username = "username";

$password = "password";

$database = "db";

 

if(!empty($_POST['code'])) {

 

@mysql_connect(localhost,$username,$password);

 

@mysql_select_db("$database") or die("Unable to select database");

 

$result=mysql_query("SELECT * FROM `table` where `table` = $code");

 

if (mysql_num_rows($result) == 1) {

 

echo 'Veiksmigi esat pievienojushies.';

 

} else {

 

echo "Nepareiz kods.";

 

}

}

 

?>

 

...

 

Datu bāzei veiksmīgi pieslēdzas, vismaz erroru nemet ārā. Ievadot kādus neeksistējošus datus, kas nav db izmet paziņojumu "Nepareiz kods.", bet kad ievada eksistējošus datus, kas atrodas db, viņš izmet tieši šo pašu paziņojumu "Nepareiz kods."

 

P.S. Lūdzu palīdziet.

Link to comment
Share on other sites

Lai drošāk un, ja tikai skaitļi, tad vajadzētu: $code=(int)$_POST['code'];

un pēc tam attiecīgi: if(!empty($code)) {

vēl arī varētu pārrakstīt šo daļu:

$results=mysql_query('SELECT null FROM `table` where `table` = '.$code.' LIMIT 1');
$row = mysql_fetch_row($results);
if (!empty($row)){

Edited by Aleksandrs
Link to comment
Share on other sites

Uzliku E_ALL izmeta:

 

Notice: Undefined index: code in ...

Tā kā tas ir Notice tas nav tik svarīgi.

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...

 

Šis errors man jau nepatīk :(

 

Vēl es neesmu pārliecināts par savu tabla izveidi. Kods:

# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# Host: localhost
# Generation Time: Jul 08, 2006 at 04:30 PM
# Server version: 4.0.15
# PHP Version: 4.3.3
# 
# Database : `code`
# 

# --------------------------------------------------------

#
# Table structure for table `codes`
#
# Creation: Jul 08, 2006 at 12:40 PM
# Last update: Jul 08, 2006 at 12:40 PM
#

CREATE TABLE `codes` (
 `7568914563` varchar(10) NOT NULL default '',
 `8649256813` varchar(10) NOT NULL default '',
 `6548925413` varchar(10) NOT NULL default '',
 `4589657123` varchar(10) NOT NULL default '',
 `3547854902` varchar(10) NOT NULL default '',
 `1240689301` varchar(10) NOT NULL default '',
 `7451068901` varchar(10) NOT NULL default '',
 `6475932147` varchar(10) NOT NULL default '',
 `2598632457` varchar(10) NOT NULL default '',
 `0124578692` varchar(10) NOT NULL default ''
) TYPE=MyISAM;

#
# Dumping data for table `codes`
#

 

Vismaz man šķiet, ka ir pareizi, bet tā kā errors izmetās saistībā ar argumentiem, es vairs tik pārliecināts neesmu.

 

P.S. Diemžēl Aleksandrs veids nepalīdzēja.

Edited by bubu
Link to comment
Share on other sites

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...

Redzot šo vajag vienmēr pēc mysql_query izsaukuma izsaukt mysql_error. Tad tiks pateikts, kas īsti ir nepareizs tavā kverijā.

 

Šoreiz pateikšu priekšā (nākamreiz domā pats): Tev nav tabulas ar nosaukumu `table`, kurā jābūt laukam ar nosaukumu `table`.

Link to comment
Share on other sites

CREATE TABLE `codes` (

`7568914563` varchar(10) NOT NULL default '',

`8649256813` varchar(10) NOT NULL default '',

...

vispār jau datus glabā ierakstos(rinda, record), bet ne lauku (kolonu, field) nosaukumos..

kaut kādus mežonīgus lauku nosaukumus ar cipariem sataisīt varētu ja tiek kaut kas automātiski ģenerēts, bet man šķiet ka šis nav tas gadījums.

 

p.s. domāts ar '?' bija ka vai tu pats zini ko tas kverijs dara.

Edited by v3rb0
Link to comment
Share on other sites

Notice: Undefined index: code in ...

Tā kā tas ir Notice tas nav tik svarīgi.

 

Kā tad, nav svarīgi... tā kā tu to izmanto iekš SQL, tad Notice pārvēršās par SQL-Fatal erroru

Imho, ja gribi lai strādā viss korekti, tā kā iecerēts, vēlams no visām Noticēm tikt vaļā ar atticīgo koda pielabošanu, nevis vienkāršu @-pielikšanu f-jas izsaukšanas priekšā...

Link to comment
Share on other sites

×
×
  • Create New...