Wat is er fout? :s

Status
Niet open voor verdere reacties.

JohnnyGroningen

Gebruiker
Lid geworden
16 mrt 2009
Berichten
50
Beste lezer,

Ik ben erg slecht in MySQL maar helaas valt het ook in het schoolprogramma dus:o

De opdracht is dat je de prijs van een artikel moet kunnen veranderen. Nou heb ik dit verdeeld in 2 PHP bestanden.

PHP:
<?php 
$mysql = mysql_connect("localhost","Johnny T","") or die("Fout: Er is geen verbinding met de MySQL-server tot stand gebracht!");
mysql_select_db("Johnny",$mysql) or die("Fout: Het openen van de database is mislukt!");
$resultaat = mysql_query("SELECT DISTINCT Omschrijving FROM artikel",$mysql) or die("De query op de database is mislukt!");
mysql_close($mysql) or die("Het verbreken van de verbinding met de MySQL-server is mislukt!");
?>
<form action="bevestiging.php" method="post">
Kies een categorie:<br />
<select name="categorie">
<?php
while(list($categorie) = mysql_fetch_row($resultaat))
{
print("<option value='$categorie'>$categorie</option>");
}
?> 
</select><br />
</form>

<form action="bevestiging.php" method="post">
Kies je nieuwe prijs:<br />
<input type="text" name="nieuwe_prijs" /><br />
<input type="submit" value="Verzend" />
</form>

PHP:
<?php
$nieuwe_prijs = $_POST[nieuwe_prijs];
$categorie = $_POST[categorie];

$mysql = mysql_connect("localhost","Johnny T","") or die("Fout: Er is geen verbinding met de MySQL-server tot stand gebracht!");
mysql_select_db("Johnny",$mysql) or die("Fout: Het openen van de database is mislukt!");
mysql_query("INSERT INTO Verkoopprijs FROM artikel VALUES ('$nieuwe_prijs')",$mysql) or die("De toevoegquery op de database is mislukt!"); 
mysql_close($mysql) or die("Het verbreken van de verbinding met de MySQL-server is mislukt!");

print("$categorie is veranderd naar $nieuwe_prijs");
?>

Nou krijg ik deze error:

De toevoegquery op de database is mislukt!

dus er is iets mis met deze zin:
PHP:
mysql_query("INSERT INTO Verkoopprijs FROM artikel VALUES ('$nieuwe_prijs')",$mysql) or die("De toevoegquery op de database is mislukt!");

De MySQL ziet er zo uit:
15dxgrt.jpg


(dus Verkoopprijs zit in artikel).

Wie o wie kan mij helpen:thumb:

mvg

Johnny:)
 
Nou heb ik geen verstand van MySQL maar:
Code:
"INSERT INTO Verkoopprijs FROM artikel VALUES ('$nieuwe_prijs')"
klopt in ieder geval niet!
Het zou iets moeten zijn als:
Code:
"INSERT INTO artikel(Verkoopprijs) VALUES(('$nieuwe_prijs')"
 
Je kunt checken waar de fout zit in je queries door ze in phpMyAdmin uit te voeren tot ze werken, en dan te zorgen dat PHP dezelfde queries creeert :)
 
:confused:


Uhm, ok. Een 'query' is een commando dat uitgevoerd wordt door je database. De queries kun je gebruiken om data op te halen (ie: SELECT queries), te wijzigen (UPDATE queries), invoegen (INSERT queries) of verwijderen (DELETE queries)

Als je naar PHPmyAdmin gaat (je hebt er een screenshot van gepost) dan zit links boven de tabelnamen een knopje waar 'sql' op staat. Als je daar op drukt krijg je een venster waar je queries in kunt tikken. Die queries worden dan rechtstreeks uitgevoerd.

Wat je dus doet is een query maken die doet wat jij wil (ie: een rij inserten) en als die werkt, pas je je PHP code zo aan, dat die hetzelfde resultaat oplevert als de query die je op de database uitvoerde.

Als je een fout maakt, dan geeft phpMyAdmin aan wat precies de fout is die optrad, of iig vanaf welke stuk van de ingegeven query hij het niet meer begrijpt.

Mocht je er niet uitkomen, dan kun je ook proberen om de opties van phpMyAdmin te gebruiken om te simuleren wat je wilt doen (als je bijv. een rij wil inserten, kun je de ´invoegen´ optie gebruiken) en dan zie je na iedere opdracht een blokje 'SQL query:' waar in staat welke opdracht hij uitgevoerd heeft.

In je screenshot staat er nu: "SELECT * FROM `artikel` LIMIT 0, 30", dat is de query die de resultaten heeft die nu op je scherm staan.
Nadat je 'invoegen' hebt gedaan, zal daar dus de Insert query staan om een rij in te voegen.

Mocht je nog meer info zoeken over SQL, dan kun je hier kijken:
http://w3schools.com/sql/default.asp

Good luck..
 
Hallo,

Als MySQL in het schoolprogramma zit heb je vast ook wat schoolboeken met elementaire begrippen, ik raad je eerst aan dat eens door te nemen.

Kijk ook naar de opmerking van ReneDirks, want die geeft terecht aan dat jouw syntax van het SQL-statement nu niet klopt (niet voldoet aan de SQL-grammatica).

Uit je tekst maak ik trouwens op dat je de prijs van een al bestaand artikel wil veranderen. Dat klinkt mij toch veel meer naar dat je een bestaand record wil aanpassen, in plaats van een nieuw record wil toevoegen, oftewel een UPDATE ipv een INSERT. Mocht je het onderscheid niet kennen, dan verwijs ik je toch echt weer naar je schoolboeken.

Met je INSERT-statement probeer je nu een record toe te voegen. Wat jij denk ik wil is een UPDATE-statement uitvoeren. In het algemeen voer je hiermee een update uit op al bestaande records die voldoen aan bepaalde criteria. Meer specifiek in jouw geval wil je volgens mij de Verkoopprijs van een al bestaand record met een bepaald Artikelnr aanpassen. Dit betekent dat je update er ongeveer zo uit moet zien:
[SQL]UPDATE artikel SET Verkoopprijs = $nieuwe_prijs
WHERE artikelnr = $artikelnummer[/SQL]

Succes!
 
Hij werkt idd dankzij die UPDATE:). Mijn boek voor Informatica is een (school)website en daar staat niets over UPDATE:confused: (mijn docent wist ook niet hoe het moest zonder UPDATE:thumb:)
 
Ik moet eerlijk zeggen dat ik de tekst maar half bekeken heb, vandaar dat alleen de syntax fout me opviel. De enige andere oplossing zonder Update zou zijn om een nieuwe entry te maken en dan de oude te verwijderen. Maar da's natuurlijk niet erg handig he? Als ik jou was zou ik maar eens online zoeken naar wat info. SQL zelf is al oud, ergens jaren 70 als ik me goed herinner, maar de meeste databases werken nog steeds met SQL, wel met een toevoeging van commando's. Even googlen op 'gratis sql cursus' of 'sql online cursus' zal wel wat opleveren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan