Diversen

Status
Niet open voor verdere reacties.
Bij het kopiëren van een rij , probeer div, tabels uit.

andere melding:

Table "xxx" has no any primary or unique key!
This error was made to prevent loss of your data. You must create primary key (the best - primary autoincrement) for this table. .



Welke SQL zou ik moeten uitvoeren, om een "ideaal "voorbeeld
te maken

Code:
CREATE TABLE CUSTOMERS(
       ID   INT              NOT NULL,
       NAME VARCHAR (20)     NOT NULL,
       AGE  INT              NOT NULL UNIQUE,
       ADDRESS  CHAR (25) ,
       SALARY   DECIMAL (18, 2),       
       PRIMARY KEY (ID)
);
 
Het is vreemd dat je die melding op deze structuur krijgt aangezien er zowel een Primary Key als een UNIQUE constraint aanwezig zijn.
Wat er waarschijnlijk mist is een AUTO_INCREMENT, die kun je het beste op het ID-veld zetten. Die hoef je dan niet meer zelf in een formulier aan te geven.

In dit voorbeeld zou ik de UNIQUE van "AGE" af halen, je mag nu bijvoorbeeld maar 1 persoon hebben die 50 jaar is ;)
 
Heb ik geen uniek veld is het niet goed

Table "test" has no any primary or unique key!
This error was made to prevent loss of your data. You must create primary key (the best - primary autoincrement) for this table


Heb ik een uniek veld is het ook weer niet goed

Duplication impossible. The table has a unique field.

Het zal nog ergens bij mij liggen....................

Overigens wil ik alleen het ID als uniek

Dit schijnt te werken :)

Code:
DROP TABLE IF EXISTS `City`;
CREATE TABLE `City` (
  `ID` int(11) NOT NULL auto_increment,
  `Name` char(35) NOT NULL default '',
  `CountryCode` char(3) NOT NULL default '',
  `District` char(20) NOT NULL default '',
  `Population` int(11) NOT NULL default '0',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `City` VALUES (1,'Kabul','AFG','Kabol',1780000);
INSERT INTO `City` VALUES (2,'Qandahar','AFG','Qandahar',237500);
INSERT INTO `City` VALUES (3,'Herat','AFG','Herat',186800);


een idee/voorbeeldje hoe ik bestaande tabel kan updaten , dus met alleen ID als uniek???

en als voorbeeld name en email
 
Laatst bewerkt:
Zoals ik al zei kun je het beste een AUTO_INCREMENT op de ID kolom zetten:
[sql]
CREATE TABLE CUSTOMERS(
ID INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);[/sql]
 
Hoi ,

Ik heb een kolom point aangemaakt in een tabel.

Het volgende scriopt maakt uit het Ip adres een latitude en longitude, (coördinaten gescheiden door een komma)
bijv 88.333333, 4.44444

PHP:
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$latitude = $geo["geoplugin_latitude"];
$longitude = $geo["geoplugin_longitude"];

Hoe krijg ik de $latitude en $longitude nou in een record, gescheiden door de komma

edit,

Denk dat ik gewoon de 2 vars combineer
 
Laatst bewerkt:
Kan op twee manieren:
PHP:
$coords = $geo['geoplugin_latitude'] .', '. $geo['geoplugin_longitude'];
// of
$coords = sprintf(
    "%F, %F",
    $geo['geoplugin_latitude'],
    $geo['geoplugin_longitude']
);
 
Bedankt,

Ik had de 2 vars al samengevoegd

Maar krijg deze melding
Cannot get geometry object from data you send to the GEOMETRY field, ook met jou oplossingen

Een echo test geeft de coördinaten juist aan gescheiden door een komma ( echo $coords; )

de spatie na de komma kan hier waarschijnlijk weg tussen de coördinaten (beiden gestest)

Code:
', '
 
Laatst bewerkt:
Waarschijnlijk moet je latitude en longitude apart opslaan in een GEOMETRY kolom.

Waar komt die melding vandaan? Na het uitvoeren van welke regel?
 
Het zal na dit moeten zijn:

PHP:
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$latitude = $geo["geoplugin_latitude"];
$longitude = $geo["geoplugin_longitude"];
$coords = $geo['geoplugin_latitude'] .''. $geo['geoplugin_longitude'];

 $query .=  "point = '" . $coords . "',";

----------------------------------------------


PHP:
 echo $coords;
levert bijv. 52.998299,5.8694 op

In database geometry, binair en point geprobeerd > melding blijft

Ik heb zelf een voorbeeld met point en dat werkt
Opslag in de kolom point ziet er dan weer bijv. zo uit
000000000101000000334600DF4B7332406u754868550C0

Misschien dat er nog een soort omzetting van data naar binair moet zijn .



Edit

Van een gekocht scrip kan ik de coördinaten gewoon invoeren , en komt ook in tabel (datatype point) terecht
ik vermoed dus dat dit script nog in iets bepaalds voorziet, de maker geeft alleen zeer langzame support


HeidiSQL laat bij point een binaire waarde zien.
In phpMy admin staat bij point bijv. de waarde 'POINT(50.998222 6.8691)',0
ik vermoed dat het meer deze manier moet worden "opgeslagen"
 
Laatst bewerkt:
Ik begrijp niet goed waar het mis gaat? Zelf sla ik latitude en longitude altijd in een FLOAT kolom op, nooit problemen mee gehad.

Desnoods sla je ze in een VARCHAR op, maar om daar nou meteen een betaald script voor te gebruiken was denk ik ook wat impulsief.
 
De code die ik van jou heb heb ik in een invulfom geplaatst , wil ik deze gegevens weer met dit script gebruiken zal ik ze ook in point moeten wegschrijven
of ik zal ook iets met lat en lon moeten gaan doen.
 
Laatst bewerkt:
Dat het script dan niet meer werkt is op zich logisch, het script zelf zal een bepaalde database-structuur verwachten dus als daar van afgeweken wordt dan zal het niet meer werken lijkt mij ;)

Een Point is niets meer dan een bepaalde notering van lat/lon data.
 
Dat heb ik hierboven ook al aangegeven :D

Ik wil dus in het invulform de lat en lon wegschrijven maar deze foutmelding dus

Cannot get geometry object from data you send to the GEOMETRY field


In principe staat dit ook los van het script , ik denk dat de manier van opslaan niet goed is.


Ik denk dat dit (wat nu als waarde in de kolom point staat in de table)
'POINT(50.998222 5.8691)',0

in dit op de juiste manier moet worden toegepast

$coords = $geo['geoplugin_latitude'] .''. $geo['geoplugin_longitude'];

PHP:
 $query .=  "point = '" . $coords . "',";
 
Laatst bewerkt:
De maker van het script gebruik volgende voor voorbeeld base_fields

Code:
--
-- Table structure for table `base_fields`
--

DROP TABLE IF EXISTS `base_fields`;
CREATE TABLE `base_fields` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` varchar(50) NOT NULL,
  `text_area` text NOT NULL,
  `text_editor` text NOT NULL,
  `integer` int(11) NOT NULL,
  `float` float(5,2) NOT NULL,
  `enum` enum('one','two','three') NOT NULL,
  `set` set('one','two','three') NOT NULL,
  `date` date NOT NULL,
  `datetime` datetime NOT NULL,
  `time` time NOT NULL,
  `bool` bit(1) NOT NULL,
  `point` point NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

--
-- Dumping data for table `base_fields`
--

INSERT INTO `base_fields` (`id`, `text`, `text_area`, `text_editor`, `integer`, `float`, `enum`, `set`, `date`, `datetime`, `time`, `bool`, `point`) VALUES
(1, 'Test test', 'Test test', '<p>Test test</p>', 0, 0.00, 'one', '', '0000-00-00', '0000-00-00 00:00:00', '02:00:00', '', 0x0000000001010000001ac05b2041d84140e2cd757522766140);

Voor in point dus:
0x0000000001010000001ac05b2041d84140e2cd757522766140



Wil ik de table aanpassen met zijn script kan ik gewoon de latitude en longitude invoeren bijv.
35.6894875,139.69170639999993


Er zal dus ergens een conversie of iets in die geest plaatsvinden, die kan ik nog niet ontdekken.

Misschien nog een stukje javascript van/voor Google maps.........
 
Laatst bewerkt:
Dit zou moeten werken

PHP:
$query.=" point = POINT({$longitude},{$latitude}) ";


Alleen krijg ik dan de foutmelding

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax ...
dus zal de query nog fouten bevatten.


Dit is een goed voorbeeld van het form waarin ik de code gebruik:
PHP:
$query .=  "ip = '" . $ip . "',";
 
Laatst bewerkt:
De error in de SQL sybtax werd veroorzaakt omdat er een komma moest achter

PHP:
,{$longitude}) ";

PHP:
,{$longitude}), ";

Ik heb het nu werkend als volgt:

PHP:
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$latitude = $geo["geoplugin_latitude"];
$longitude = $geo["geoplugin_longitude"];
$query.=" point = POINT({$latitude},{$longitude}), ";

Tha devil bedank voor je hulp !
 
Hoi,

Ik verwijder nou alle data van een bepaald weeknummer met:

$sql = "DELETE FROM reserveren WHERE week_nummer=$week_num";

Krijg ik netjes een melding dat data verwijderd is


Indien al verwijderd wil ik graag een andere melding, bijv.. data is al verwijderd.

Probeer iets met

DELETE IF EXIST .....

Krijg ik een melding You have an error in your SQL syntax

Is hier een oplossing voor?
 
Laatst bewerkt:
Je kunt na het uitvoeren van de query controleren hoeveel rijen er zijn bijgewerkt door middel van mysqli::$affected_rows.

Is dat groter dan 0 dan is er iets verwijderd, anders niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan