Database
mod edit:
SLECHTE TOPICTITEL
Een goede topictitel is kort en toch beschrijvend. Slechte titels zijn: "help, werkt niet, probleem, error", enzovoort.
Een goede topictitel is kort en toch beschrijvend. Slechte titels zijn: "help, werkt niet, probleem, error", enzovoort.
Hey, ik heb dit net in mijn database opgeslagen, hoe kan ik dit opgeslagen text weer terug halen op een ander pagina, dit is de script waarmee ik het opsla:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php if ( isset($_COOKIE['login'])){ ?>
<?php
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_4 = date("d-m-Y H:i:s");
$datum_5 = time();
$sql = "UPDATE leden SET html='$html',datum_3='$datum_3',datum_4='$datum_4',datum_5='$datum_5' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
<font face=verdana size=2>De profieltekst is succesvol aangepast.
<?php
} else {
?>
<font face=verdana size=2>Je kunt deze pagina niet bekijken omdat je niet ingelogd bent!
<?php
}
?>
<?php
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_4 = date("d-m-Y H:i:s");
$datum_5 = time();
$sql = "UPDATE leden SET html='$html',datum_3='$datum_3',datum_4='$datum_4',datum_5='$datum_5' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
<font face=verdana size=2>De profieltekst is succesvol aangepast.
<?php
} else {
?>
<font face=verdana size=2>Je kunt deze pagina niet bekijken omdat je niet ingelogd bent!
<?php
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Erkan
Overigens is het UPDATE statement voor het wijzigen van records, niet voor het opslaan van data, want dat doe je met INSERT.
daarnaast is het beter als je je variabelen buiten de quotes haalt.
en al die datum variabelen die je daar aanmaakt hoeft ook allemaal niet aangezien je dit ook met MySQL kan doen. (en die kan dat sneller en beter)
advies: attributen in quotes, maar font kan je eignelijk beter niet meer gebruiken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_4 = date("d-m-Y H:i:s");
$datum_5 = time();
$sql = "GET leden SET html='$html',datum_3='$datum_3',datum_4='$datum_4',datum_5='$datum_5' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_4 = date("d-m-Y H:i:s");
$datum_5 = time();
$sql = "GET leden SET html='$html',datum_3='$datum_3',datum_4='$datum_4',datum_5='$datum_5' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_5 = time();
$sql = "GET leden SET html='$html',datum_3='$datum_3',datum_4=NOW(),datum_5='$datum_5' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_5 = time();
$sql = "GET leden SET html='$html',datum_3='$datum_3',datum_4=NOW(),datum_5='$datum_5' WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GET leden SET html='',datum_3='13-12 23:50',datum_4=NOW(),datum
Het lijkt me dat je hier een INSERT of UPDATE query wilt gebruiken. De syntax met SET in een INSERT query wordt door mysql wel geaccepteerd, maar is niet de standaard. Zo hoort het:
Daarnaast kan er geen WHERE clause voorkomen in een INSERT query. Haal ten slotte ook je variabele buiten quotes. Het is een variabele, geen string.
Nee, ik wil niet insert of update doen, ik wil het uit mijn database halen, en showen op een andere pagina, met bijvoorbeeld de bovenstaande code van mij.
of met een voorwaarde:
Wil je alle kolommen uit je tabel dan dan doe je:
Alleen gebruiken al je echt alle kolommen nodig hebt.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_5 = time();
$sql = "SELECT $html',datum_3='$datum_3',datum_4=NOW(),datum_5='$datum_5 FROM leden WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
$html = $_POST['html'];
$datum_3 = date("d-m H:i");
$datum_5 = time();
$sql = "SELECT $html',datum_3='$datum_3',datum_4=NOW(),datum_5='$datum_5 FROM leden WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
je hebt nu een select, maar de aanduiding van de kolommen klopt gewoon voor geen meter. jij probeert volgens mij in het noemen van de kolommen gelijk te zoeken op overeenkomstige waarden, maar dat kan daar helemaal niet in. Daar moet je de where clause voor gebruiken zoals je nu ook al doet voor de gebruikersnaam.
Kijk eens wat tutorials door.
Wat dacht je van deze?
http://www.phphulp.nl/php/tutorials/3/2/
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
$datum_3 = date("d-m H:i");
$datum_4 = date("d-m-Y H:i:s");
leuk en aardig, maar wat ben je hiermee van plan? Dit zijn in elk geval géén datums of tijden, ondanks dat jij denkt van wel.
Een datum sla je op in een DATE en een tijd in een TIME. Samen kun je deze opslaan in een DATETIME.
Deze datatypes eisen de volgende formaten:
DATE: yyyy-mm-dd
TIME: hh:mm:ss
DATETIME: yyyy-mm-dd hh:mm:ss
Ieder ander formaat om een datum of tijd op te slaan, is gewoon fout.
En voor de wijsneuzen die roepen dat je nog TIMESTAMP hebt, de volgende vraag:
Wie is er geinteresseerd in het aantal seconden dat is verstreken sinds 1-1-1970 wanneer je veel handiger met normale datums en tijden kunt werken?
Antwoord: Geen hond...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$html = $_POST['html'];
mysql_connect("localhost","site","password")
ordie(mysql_error());
mysql_select_db("database")ordie(mysql_error());
$sql = "SELECT $html FROM leden WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
$html = $_POST['html'];
mysql_connect("localhost","site","password")
ordie(mysql_error());
mysql_select_db("database")ordie(mysql_error());
$sql = "SELECT $html FROM leden WHERE gebruikersnaam='$login'";
if(!$result = mysql_query($sql)) die(mysql_error());
?>
Volgens mij wil jij er gelijk een variabele van maken, maar dat is niet de bedoeling.
`id` smallint(3) NOT NULL auto_increment,
`gebruikersnaam` varchar(50) NOT NULL default '',
`wachtwoord` varchar(255) NOT NULL default '',
`naam` varchar(50) NOT NULL default '',
`foto` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`woonplaats` varchar(50) NOT NULL default '',
`provincie` varchar(50) NOT NULL default '',
`gb_dag` varchar(50) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`geslacht` varchar(50) NOT NULL default '',
`geaardheid` varchar(50) NOT NULL default '',
`status` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`html` longtext NOT NULL,
`ip` varchar(255) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
`bezoekers` mediumint(9) NOT NULL default '0',
`bevestigen` varchar(150) NOT NULL default '0',
`activatiecode` varchar(250) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `gebruikersnaam` (`gebruikersnaam`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Maar ik las dat je de gegevens juist wilt ophalen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
// aan jouw code verander ik niks, maar even een toevoegsel
$aantal_regels = mysql_num_rows($result);
if($aantal_regels > 0)
{
while($rij = mysql_fetch_array($result)) // we zetten alles in een array
{
echo $rij['gebruikersnaam']; // om de gebruikersnaam op te halen
echo $rij['woonplaats']; // om de woonplaats op te halen
// etc. etc.
}
}else{
echo "<span style='color: red;'>Er konden geen gegevens gevonden worden.";
}
?>
// aan jouw code verander ik niks, maar even een toevoegsel
$aantal_regels = mysql_num_rows($result);
if($aantal_regels > 0)
{
while($rij = mysql_fetch_array($result)) // we zetten alles in een array
{
echo $rij['gebruikersnaam']; // om de gebruikersnaam op te halen
echo $rij['woonplaats']; // om de woonplaats op te halen
// etc. etc.
}
}else{
echo "<span style='color: red;'>Er konden geen gegevens gevonden worden.";
}
?>
dus wordt het zoals volgt:
Ik heb er heel veel commentaar bijgezet, maar dat is wel zo makkelijk denk ik op dit moment. Dan snap je wat de code doet. (let ook op de foutafhandeling)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// je query
$sql = "SELECT
html
FROM
leden
WHERE
gebruikersnaam = '".$login."'";
$result = mysql_query($sql) or die (mysql_error()); //uitvoeren van de query + foutafhandeling
// en dan zijn er 2 manieren om de variabele aan te maken
//manier 1 (te gebruiken bij een of meerdere variabelen)
$row = mysql_fetch_array($result); //gegevens in een array zetten
$html = $row['html']; //aanmaken van variabele
//manier 2 (te gebruiken bij ophalen van 1 kolom)
$html = mysql_result($result,'html'); //aanmaken van variabele
?>
// je query
$sql = "SELECT
html
FROM
leden
WHERE
gebruikersnaam = '".$login."'";
$result = mysql_query($sql) or die (mysql_error()); //uitvoeren van de query + foutafhandeling
// en dan zijn er 2 manieren om de variabele aan te maken
//manier 1 (te gebruiken bij een of meerdere variabelen)
$row = mysql_fetch_array($result); //gegevens in een array zetten
$html = $row['html']; //aanmaken van variabele
//manier 2 (te gebruiken bij ophalen van 1 kolom)
$html = mysql_result($result,'html'); //aanmaken van variabele
?>
Zoals je ziet heb ik je variabele $login buiten de quotes gehaald, dit is eigenlijk zo'n beetje standaard omdat dat het overzicht ten goede komt, als je namelijk een editor met kleuren gebruikt (en dat is aan te bevelen) zie je sneller waar je variabelen staan en waar je iets fout doet.
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
Quote:
Zie mijn reactie van 14.12.2006 14:22, geen van bovenstaande kolommen is correct, ze zijn gewoon hardstrikke fout omdat het geen datums zijn. Gezien de namen van deze kolommen, heb ik echter het idee dat je er wel datums in probeert te zetten. Dit loopt vroeg of laat uit op een enorm probleem, die garantie heb je.`gb_dag` varchar(50) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
`gb_maand` varchar(50) NOT NULL default '',
`gb_jaar` varchar(50) NOT NULL default '',
`datum_1` varchar(50) NOT NULL default '',
`datum_2` varchar(50) NOT NULL default '',
`datum_3` varchar(50) NOT NULL default '',
`datum_4` varchar(50) NOT NULL default '',
`datum_5` varchar(255) NOT NULL default '',
Oplossing: Gebruik DATE of DATETIME om datums op te slaan.
Genummerde kolomnamen als datum_1, datum_2, etc. duiden in 99 van de 100 gevallen op een fout in het datamodel. Waarschijnlijk hoort deze data in een andere tabel te staan. Ga je eens verdiepen in database-normalisatie.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/members/free/tripod/nl/t/u/r/site/htdocs/lid.php on line 614
Er konden geen gegevens gevonden worden.
En bij Stefan krijg ik niks, gewoon leeg, hij kan geen verbinding maken met Leden/html denk ik.
bump :)