Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\PO3\verwijderen.php on line 13
Naast dit heb ik de vraag of dit ook anders kan. Dit verwijder script wordt opgevraagd als ik op verwijder klik naast een row in een tabel met een heleboel results. Er is telkens maar 1 'resultaat' dus. Waarom dan die foreach loop als er maar 1 is? (dit heb ik uit mijn boek namelijk).
En ja dat met de SESSIONS kan vast makkelijker of beter maar ik ben een beginner dus dat laat ik nu even zo.
Heeft iemand een oplossing? :)
//nu kun je je tabellen ophalen en bijv vergelijken met
$_SESSION['Tid'] = $verzamel['tsk_ID'];
$_SESSION['Tvak'] = $verzamel['tsk_subj'];
$_SESSION['Ttitel'] = $verzamel['tsk_title'];
$_SESSION['Ttxt'] = $verzamel['tsk_txt'];
$_SESSION['TsD'] = $verzamel['tsk_start_date'];// dag,maand,jaar etc wordt gekozen in index.php
$_SESSION['TeD'] = $verzamel['tsk_end_date'];
$_SESSION['Tdone'] = $verzamel['tsk_done'];
?>
Karl ik ga niet uitleggen waarom ik het niet handig vind. Ik vind het gewoon veel ingewikkelder en omslachtiger dan normale directe mysql functies.
?
Onbekende gebruiker
17-12-2010 23:15
gewijzigd op 17-12-2010 23:15
- Controleren of een form gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
- Selecteer altijd wat je wilt hebben, gebruik geen *. SQL is self documenting, dat wil dus zeggen dat je aan de query kunt zien wat je wilt. Verder is * een wildcard wat betekend dat je niet per se iets terug hoeft te krijgen.
- Foutafhandeling ontbreekt overal.
- [google]SQL injections[/google] mogelijk, gebruik [php]mysql_real_escape_string[/php].
- Regel 8 tot en met regel 15 zijn geen vergelijkingen, maar zijn toewijzingen.
- Sla je data en tijd op in je database? Gebruik dan het veld van het juiste type, namelijk DATETIME.
Die quotes maken echt geen verschil, heb ik al getest. En misschien ben jij wel dom want je leest geeneens de eerste post waarin ik vermeld dat ik een beginner ben en dus niks af weet van sql-injections.
Karl Karl op 17/12/2010 23:15:03
- Controleren of een form gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
- Selecteer altijd wat je wilt hebben, gebruik geen *. SQL is self documenting, dat wil dus zeggen dat je aan de query kunt zien wat je wilt. Verder is * een wildcard wat betekend dat je niet per se iets terug hoeft te krijgen.
- Foutafhandeling ontbreekt overal.
- [google]SQL injections[/google] mogelijk, gebruik [php]mysql_real_escape_string[/php].
- Regel 8 tot en met regel 15 zijn geen vergelijkingen, maar zijn toewijzingen.
- Sla je data en tijd op in je database? Gebruik dan het veld van het juiste type, namelijk DATETIME.
- Dat wist ik niet, ik heb het nu gedaan met een hidden veld.
- Dat * is omdat ik alle velden van die tabel nodig heb WHERE tsk_ID = ....
- Foutafhandeling heb ik nog niet geleerd, ik zal die tutorial die je poste binnenkort is lezen.
- Ook dit weet ik nog niet, en aangezien deze pagina niet op internet komt maar puur voor eigen gebruik is en een opdracht voor school maakt het niet heel veel uit.
- 8 tm 15 moeten ook toewijzingen zijn. Ik haal die row's op en zet ze in sessies die ik op een andere pagina weer opvraag :).
- Alleen datum, dan is DATE toch goed genoeg?
[size=xsmall]Toevoeging op 18/12/2010 12:04:28:[/size]
Ik probeer nu alle rows te laten zien in een tabel met alle waarden, maar krijg 7 keer dezelfde row te zien omdat hij voor elke waarde opnieuw de foreach loop doet. Dit is wat ik heb:
<?php
$con = mysql_connect("localhost","...","...");
if (!$con) die('Could not connect: '.mysql_error());
mysql_select_db("planner", $con);
$sql = "SELECT * FROM tasks ORDER BY tsk_end_date ASC";
if (!mysql_query($sql,$con)) {
die('Error: '.mysql_error());
}
$resultaat = mysql_query($sql);
Hij moet voor elke row 1 rij laten zien met 7 kolommen (7 verschillende waarden). Nu laat hij dus voor elke waarde een nieuwe rij aanmaken. Dat is ook wel logisch, maar ik weet niet hoe ik dit moet oplossen :P
1. het heeft totaal geen zin om binnen de while een foreach te doen in deze situatie
2. het heeft geen zin om voor dat je de while in gaat 1x te fetchen
3. het heeft geen zin om overbodige variabelen aan te maken
4. het heeft ook geen zin om zovele echo's in je code te hebben
5. je dient attribuutwaarden ook te qouten
6. zal het niet handiger zijn om bepaalde zaken (te tonen datum format) ook alsdanig in de query te steken
7. het heeft geen zin om dood te gaan, en dat slaat op de die(), pas fatsoenlijke foutafhandeling toe op een zodanige manier dat de rest van je code gewoon doorlopen kan worden