Toon posts:

[PHP+MYSQL] Probleem toevoegen variable in database

Pagina: 1
Acties:

Verwijderd

Topicstarter
Search al gebruikt, ben er heel wat wijzer van geworden maar nog steeds geen antwoord gevonden voor mijn probleem. Ben sinds kort druk aan het php'en geslagen.. Ik waag nu een poging een simpele shoppingcart in elkaar te zetten in PHP. Tot nu toe heb ik de MySQL database al in orde.

Nu ben ik bezig met het 1e gedeelte van mijn 'Admin console', namelijk het toevoegen van een Categorie.

Tot nu toe bestaat mijn shoppingcart uit 3 php bestanden, namelijk:

- config.php
- addcategory.php
- addcategoryresponse.php

In mijn config.php staan mijn MySQL database gegevens. (niet van toepassing om daar de source van te laten zien).

Mijn addcategory.php
PHP:
1
2
3
4
5
6
7
8
<?php
require("config.php");
?>

<form action="addcategoryresponse.php">
<input type="text" name="Categorie">
<input type="submit" value="submit">
</form>


Mijn addcategoryresponse.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
require("config.php");

$Categorie= ("$HTTP_GET_VARS['Categorie']");

mysql_connect("$DBHost","$DBUser","$DBPass");
mysql_select_db("$DBName");

mysql_query("INSERT INTO Categories VALUES ('$Categorie','')") or die(mysql_error());
mysql_close();
?>


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

Bij het uitvoeren van het script wordt netjes een CategorieID aangemaakt in mijn MySQL table, maar de naam die bij addcategory.php wordt ingevoerd is niet terug te vinden (veld blijft gewoon leeg)..

Wat doe ik verkeerd?
Alvast vriendelijk bedankt..

  • Vae Victis
  • Registratie: April 2001
  • Laatst online: 18-08 16:52

Vae Victis

Dark Lord of the Sith

INSERT INTO Categories VALUES ('$Categorie','')
kan me vergissen maar je stopt er ook niets in ;)

Verwijderd

Topicstarter
Toch wel..

$Categorie= ("$HTTP_GET_VARS['Categorie']");

Verwijderd

als je een editor met syntax highlighting had gebruikt, had je gezien dat je ("$HTTP_GET_VARS['Categorie']"); moet veranderen in $HTTP_GET_VARS['Categorie'];

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 15 april 2003 @ 13:29:
Toch wel..

$Categorie= ("$HTTP_GET_VARS['Categorie']");
En hoe ziet je query er uit? Maw: als je je query op het scherm zet, hoe ziet deze er dan uit?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Werkt dit wel:

mysql_query("INSERT INTO Categories VALUES ('".$Categorie."','')) or die(mysql_error());

[ Voor 193% gewijzigd door Spider.007 op 15-04-2003 13:33 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

nogmaals: $Categorie= ("$HTTP_GET_VARS['Categorie']");
let op de aanhalingstekens

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 15 April 2003 @ 13:34:
nogmaals: $Categorie= ("$HTTP_GET_VARS['Categorie']");
let op de aanhalingstekens
Is dit niet mooier? Of bedoel je dat juist? Spreek je nu je eerdere post tegen of benadruk je die juist? :P
PHP:
1
$Categorie= $HTTP_GET_VARS['Categorie'];

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Vae Victis
  • Registratie: April 2001
  • Laatst online: 18-08 16:52

Vae Victis

Dark Lord of the Sith

Verwijderd schreef op 15 april 2003 @ 13:29:
Toch wel..

$Categorie= ("$HTTP_GET_VARS['Categorie']");
Ik doelde meer op dat er geen waarde mee gegeven word.

PHP:
1
2
3
4
...
$sql = "INSERT INTO Categories VALUES (\"".$Categorie."\")";
mysql_query($sql) or die(mysql_error()); 
...


als je dit probeert en als het niet werkt kun je eerst echo $sql doen.
Dan kun je zien of je sql string wel goed opgebouwd word.
eventueel kopieer je hem dan in bv phpmyadmin zie je ook meteen wat er fout gaat.

Moet er btw tussen Categories en VALUES niet nog een veldnaam?
zoals:
PHP:
1
$sql = "INSERT INTO Categories (categorie) VALUES (\"".$Categorie."\")";

[ Voor 30% gewijzigd door Vae Victis op 15-04-2003 13:43 ]


Verwijderd

Topicstarter
Ik gebruik een editor met highlighted syntax. Zag geen verschil met of zonder quote's... Heb de quote's weggelaten, nog steeds zelfde probleem.

Print_r result van $HTTP_GET_VARS is..
Array ( [Categorie] => mwha )

(mwha is dus de waarde die ik meegaf in addcategory.php)

[ Voor 16% gewijzigd door Verwijderd op 15-04-2003 13:43 ]


Verwijderd

Topicstarter
Vae Victis schreef op 15 April 2003 @ 13:38:
[...]

Moet er btw tussen Categories en VALUES niet nog een veldnaam?
zoals:

[...]
Geprobeerd, en niets..

Verwijderd

Topicstarter
Spider.007 schreef op 15 April 2003 @ 13:30:
Werkt dit wel:

mysql_query("INSERT INTO Categories VALUES ('".$Categorie."','')) or die(mysql_error());
Helaas niet, wordt er zelfs slechter op :| krijg dan als melding:

code:
1
Parse error: parse error, unexpected $ in /www/addcategoryresponse.php on line 11

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Uhm...misschien zeg ik nu iets heel doms, maar je zegt volgens mij:

PHP:
1
mysql_query("INSERT INTO Categories VALUES ('$Categorie','')") or die(mysql_error());


oftewel, stop iets in kolom categorie, maar je zegt niet waar de $Categorie in moet...niet in welk onderdeel...volgens mij moet et meer zo:

PHP:
1
$new = "INSERT INTO `articles` (`timestamp`) VALUES ('$timestamp')";


geen tijd om em voor je uit te typen, maar dat kan je zelf wel ;)

Research is what I'm doing when I don't know what I'm doing.


  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 21-08 09:45
laat anders even de structuur van die tabel zien ?

ervan uitgaande dat inderdaad het veld 'categorie' heet moet dat stukje van Vae Victis werken.

Je gebruikt trouwens een form zonder method, probeer eens:
PHP:
1
2
3
4
<form method="GET" action="addcategoryresponse.php"> 
<input type="text" name="Categorie"> 
<input type="submit" value="submit"> 
</form>


misschien komt die GET helemaal niet aan en is het standaard een POST?

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 21-08 09:45
Roa schreef op 15 April 2003 @ 14:01:
[..]
PHP:
1
$new = "INSERT INTO `articles` (`timestamp`) VALUES ('$timestamp')";

[..]
dit werkt niet, gebruik:

PHP:
1
$new = "INSERT INTO `articles` (timestamp) VALUES ('".$timestamp."')";

het gaat hier om de qoutes die je om `timestamp` had gezet vlak na articles. de extra ". ." constructie vind ik zelf prettig maar is niet vereist.

Verwijderd

Ik dacht altijd dat het zo was:
PHP:
1
2
mysql_query("INSERT INTO Categories(naam_attribuut, naam_attribuut) VALUES('".$Categorie."','')")
or die(mysql_error());

[ Voor 16% gewijzigd door Verwijderd op 15-04-2003 14:08 ]


  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 21-08 09:45
Spider.007 schreef op 15 April 2003 @ 13:30:
Werkt dit wel:

mysql_query("INSERT INTO Categories VALUES ('".$Categorie."','')") or die(mysql_error());
mist een qoute :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 vraagt zich af waarom de topicstarter niet zijn query op het scherm zet en kijkt wat daar de uitkomst van is.... Dan weten we of de query fout is of de queryopbouw...

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Structuur van mijn Tabel:

Categories
Veld Type Null Standaardwaarde
Categorie varchar(100) Nee
Categorienr bigint(20) Nee


Indices : Sleutelnaam Type Kardinaliteit Veld
PRIMARY PRIMARY 43 Categorienr
Categorienr INDEX Geen Categorienr

Verwijderd

Topicstarter
gorgi_19 schreef op 15 April 2003 @ 14:09:
* gorgi_19 vraagt zich af waarom de topicstarter niet zijn query op het scherm zet en kijkt wat daar de uitkomst van is.... Dan weten we of de query fout is of de queryopbouw...
Al niet meer nodig :D nadat ik die regel van spider.007 had gebruikt (en denk het aanpassingkje betreffende die quote's bij het zetten van die $Categorie variable).

Mensen, nogmaals vriendelijk bedankt voor jullie zeer snelle en behulpzame reactie.

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 21-08 09:45
Als dit werkelijk de enige verandering is is dat best vreemd, officieel ondersteund PHP beide voor zover ik weet (Alhoewel ik er ook al eens last van heb gehad, daarom gebruik ik nu ook optie 2).
PHP:
1
2
3
4
//optie 1:
mysql_query("INSERT INTO Categories VALUES ('$Categorie','')")
//optie 2:
mysql_query("INSERT INTO Categories VALUES ('".$Categorie."','')")

beetje vreemd, maar wel lek... nou in ieder geval vreemd :)

Verwijderd

_BRAINLESS schreef op 15 April 2003 @ 14:24:
Als dit werkelijk de enige verandering is is dat best vreemd, officieel ondersteund PHP beide voor zover ik weet (Alhoewel ik er ook al eens last van heb gehad, daarom gebruik ik nu ook optie 2).
PHP:
1
2
3
4
//optie 1:
mysql_query("INSERT INTO Categories VALUES ('$Categorie','')")
//optie 2:
mysql_query("INSERT INTO Categories VALUES ('".$Categorie."','')")

beetje vreemd, maar wel lek... nou in ieder geval vreemd :)
Op zich is het niet zo vreemd als de register_globals in de php.ini niet ingesteld staat. Het kan ook de register_argc_argv zijn.

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 21-08 09:45
register_globals is voor $_POST en $_GET e.d.

als register_globals aan staat en je $_GET en $_POST arrays zijn:

$_GET = Array("test" -> "1");
$_POST = Array("test2" -> "2");

dan krijg je automatisch 2 variabelen in het begin van je script genaamd:
$test en $test2 met de waardes uit $_GET en _POST.

$test = 1;
$test2 = 2;

register_argc_argv is ervoor om dat alleen met $_GET te doen als ik het goed begrepen heb, dus dan zou je alleen een variabele genaamd $test krijgen met waarde 1.


Heeft iemand hier opheldering over? (met name over die string die dus wel werkt MET qoutes, maar niet zonder) :?

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

_BRAINLESS schreef op 15 April 2003 @ 14:06:
[...]


dit werkt niet, gebruik:

PHP:
1
$new = "INSERT INTO `articles` (timestamp) VALUES ('".$timestamp."')";

het gaat hier om de qoutes die je om `timestamp` had gezet vlak na articles. de extra ". ." constructie vind ik zelf prettig maar is niet vereist.
Nooit problemen mee gehad anders :?

Research is what I'm doing when I don't know what I'm doing.


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
de extra ". ." constructie vind ik zelf prettig maar is niet vereist.
http://gerard.yoursite.nl/got/php-tiplist/index.spef Ik ben het er helemaal mee eens maar ik vind wel dat je er erg veel tekens voor moet typen om een query helemaal zo te krijgen zeker als je veel argumenten hebt. Ik gebruik het zelf ook omdat het handig is dat je met het highliten meteen de variablen ziet staan maar ik vind het toch jammer dat er geen handigere manier is.
Pagina: 1