Hieronder heb ik een simpel insert query, wat helaas maar niet wil werken.
Ik heb alle mogelijk foutmeldingen eruit gehaald, maar ik kom er nog steeds niet uit...
Zou iemand naar willen kijken en mij voorzien van waardevolle feedback?
Echo eens $medicinequery, klopt die query die je krijgt?
En waar komt die code ^ vandaan?
Het tekentje ^ zie ik het niet.
Op welk regel zie je het?
Bij het echoën van de query verschijnt het volgende:
En, vreemd genoeg zijn alle waardes goed, behalve dat huidige time niet wordt weergegeven en dus enkel het commando now() wordt weergegeven. En misschien maakt de volgorde van vakjes niet uit, maar hiermee heb ik wel rekening gehouden en de volgorde klopt het op form niveau, invoer niveau en database niveau..
het is een pijltje die verwijst naar je posting in deze thread. ;-)
Waar komt die code vandaan? Want als je query niet werkt zou die trigger_error moeten worden aangeroepen.
Kan je die query uit je echo eens in phpMyAdmin (of een andere mySQL-client) gooien?
Die eerste 4 values zijn niet-numeriek en moeten dus tussen single quotes.
Ik gok dat Ariën wat verwarring heeft veroorzaakt met zijn opmerking dat variabelen buiten quotes horen. Waar ik het overigens niet per se mee eens ben. ;-)
Wellicht is het handig om ook nog
<?php
error_reporting(E_ALL);
?>
aan het begin van je script op te nemen. Het zou kunnen dat die nu zo staat ingesteld dat trigger_error() niets laat zien.
Indien één van de variabelen zelf een single quote bevat en niet op de goede manier ge-escaped worden gaat het sowieso niet werken. Mijn eerste vraag zou dus zijn: welke waarden zitten er in $medicinename, $genericname et cetera en worden deze ge-escaped met een real_escape_string() functie?
Het komt de leesbaarheid van je query ook ten goede als je deze over meerdere regels uitschrijft, en deze hoef je niet in een aparte variabele te stoppen, te meer omdat je deze variabele verder toch niet lijkt te gebruiken (waar komt overigens $q vandaan?):
Dit heeft weliswaar iets meer lucht, maar is zoveel beter leesbaar. Vooral als je hier nog escaping overheen moet gooien.
Foutafhandeling zou ik ook op een andere manier doen dan trigger_error() en als deze query onderdeel is van een reeks queries zou ik sterk overwegen om transacties te gebruiken.
Onder de bovenstaande query had ik staan andere queries, maar die moest ik eerst nog oplossen.
Iig ik kan nu data invoeren via het invoerformulier, mits de volgende voorwaarden waar zijn:
1. Als er reeds een medicijnbedrijf bestaat/ingevoerd
2. Als er reeds een medicijnland bestaat/ingevoerd
3. Als er reeds een medicijnleverancier bestaat/ingevoerd
Eerst even wat achtergrond info:
Voorheen gebruikte ik een dropdown-menu om een van de drie bovenstaande punten te laten kiezen. En, wanneer deze punten niet bestonden, dan moest de gebruiker deze drie punten eerst invoeren in db, alvorens een medicijn te kunnen voeren.
En om met de tijd om te gaan en het invoerformulier gebruikersvriendelijk te maken, gebruik ik nu autocomplete feature. En, zoals jullie weten, checkt autocomplete of er reeds een waarde bestaat in de DB en de gebruiker hoeft enkel een letter in te voeren en de gematcht woord komt te verschijn.
Maar het probleem wat ik nu tegen aan loop, is dat ik 3 koppeltabellen heb voor medicijnland, medicijnleverancier en medicijnbedrijf. En om deze koppeltabellen te kunnen invoeren, moet ik het id hebben van de item van de origineel tabel.
Maar jullie raden het al; op het moment dat ik een medicijn invoer, dan zijn de originele tabellen van medicijnland, medicijnleverancier en medicijnbedrijf nog leeg...
En dus mijn vraag is; hoe kan ik ervoor zorgen dat wanneer een gebruiker data invoert in medicijnbedrijf vakje of in die twee andere vakjes, de data direct wordt opgeslagen in de origineel tabel, zodat ik het id van de item van de origineel tabel kan gebruiken voor het invoerformulier
Als je het wil testen, wat ik bedoel, bezoek dan:
hawarco.co
gebruikersnaam: [email protected]
pw: test1
Hopelijk is mijn verhaal duidelijk en alvast bedankt voor het meedenken!
Maar het probleem wat ik nu tegen aan loop, is dat ik 3 koppeltabellen heb voor medicijnland, medicijnleverancier en medicijnbedrijf. En om deze koppeltabellen te kunnen invoeren, moet ik het id hebben van de item van de origineel tabel.
Maar jullie raden het al; op het moment dat ik een medicijn invoer, dan zijn de originele tabellen van medicijnland, medicijnleverancier en medicijnbedrijf nog leeg...
Kan het medicijn dan meerdere landen van herkomst, leveranciers en bedrijven/producenten hebben? Zonee, waarom dan een koppeltabel? Ook wil je waarschijnlijk pas informatie opslaan als deze compleet is, dus alle informatie, of géén informatie anders raakt je data corrupt doordat je dingen maar half opslaat.
[quote="Mohamed nvt op 11/03/2017 15:20:14"]Maar het probleem wat ik nu tegen aan loop, is dat ik 3 koppeltabellen heb voor medicijnland, medicijnleverancier en medicijnbedrijf. En om deze koppeltabellen te kunnen invoeren, moet ik het id hebben van de item van de origineel tabel.
Maar jullie raden het al; op het moment dat ik een medicijn invoer, dan zijn de originele tabellen van medicijnland, medicijnleverancier en medicijnbedrijf nog leeg...
Kan het medicijn dan meerdere landen van herkomst, leveranciers en bedrijven/producenten hebben? Zonee, waarom dan een koppeltabel? Ook wil je waarschijnlijk pas informatie opslaan als deze compleet is, dus alle informatie, of géén informatie anders raakt je data corrupt doordat je dingen maar half opslaat.
[/quote]
Hallo Thomas van den Heuvel,
Ja, dezelfde medicijn kan afkomstig zijn uit verschillende landen, geleverd worden door verschillende leverancier en gemaakt worden door verschillende bedrijven..En daarom heb ik koppeltabellen gemaakt voor deze 3 criteria. Overigens heb ik nu gewoon dropdown-menu en geen autocomplete voor deze punten..
Tnx!