Een vraagje over de foreach loop:

Ik leer op school de PDO methode om verbinden met mysql te maken maar gebruik liever mysql_connect...

Nu heb ik met PDO de volgende (werkende) foreach loop gemaakt:

<?php
session_start();
try {
$db = new PDO('mysql:host=localhost;dbname=planner','admin','hoi');
}
catch(PDOException $e) {
echo $e->getMessage();
}

$sql = "SELECT * FROM tasks WHERE tsk_ID = $_POST[verstopt]";
$resultaat = $db->query($sql);

foreach($resultaat as $row) {
$_SESSION['Tid'] = $row[tsk_ID];
$_SESSION['Tvak'] = $row[tsk_subj];
$_SESSION['Ttitel'] = $row[tsk_title];
$_SESSION['Ttxt'] = $row[tsk_txt];
$_SESSION['TsJ'] = $row[tsk_start_date];
$_SESSION['TsM'] = $row[tsk_start_date];// dag,maand,jaar etc wordt gekozen in index.php
$_SESSION['TsD'] = $row[tsk_start_date];
$_SESSION['TeJ'] = $row[tsk_end_date];
$_SESSION['TeM'] = $row[tsk_end_date];
$_SESSION['TeD'] = $row[tsk_end_date];
$_SESSION['Tdone'] = $row[tsk_done];
}
$db = NULL;
?>

Dit werkt. Nu wil ik dit omzetten naar mysql_connect ipv dat PDO en heb het volgende:

<?php
session_start();

$con = mysql_connect("localhost","admin","hoi");
if (!$con) die('Could not connect: '.mysql_error());
mysql_select_db("planner", $con);

$sql = "SELECT * FROM tasks WHERE tsk_ID = $_POST[verstopt]";
$resultaat = mysql_query($sql,$con);

foreach($resultaat as $row) {
$_SESSION['Tid'] = $row[tsk_ID];
$_SESSION['Tvak'] = $row[tsk_subj];
$_SESSION['Ttitel'] = $row[tsk_title];
$_SESSION['Ttxt'] = $row[tsk_txt];
$_SESSION['TsJ'] = $row[tsk_start_date];
$_SESSION['TsM'] = $row[tsk_start_date];// dag,maand,jaar etc wordt gekozen in index.php
$_SESSION['TsD'] = $row[tsk_start_date];
$_SESSION['TeJ'] = $row[tsk_end_date];
$_SESSION['TeM'] = $row[tsk_end_date];
$_SESSION['TeD'] = $row[tsk_end_date];
$_SESSION['Tdone'] = $row[tsk_done];
}
?>

Dit geeft echter de volgende error:

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? :)
$resultaat is het $resultaat van de query. Je moet mysql_fetch_(array/assoc/object) gebruiken om je data op te halen.

Misschien dat je iets aan dit hebt.
Mysql_fetch_assoc mowt je gebruiken

En gebruik geen wildcards met het select geef aan wat je wilt

Antwoord: je maakt van die error een array en van die array maak je een variabel die je op een bepaalde plek laat weergeven
Hoe bedoel je met select? Want ik heb nu dit en krijg telkens de laatste tabelwaarde inderdaad:

<?php
while($row = mysql_fetch_assoc($resultaat)){
foreach($row as $sleutel => $waarde){
$_SESSION['Tid'] = $sleutel.$waarde;
$_SESSION['Tvak'] = $sleutel.$waarde;
$_SESSION['Ttitel'] = $sleutel.$waarde;
$_SESSION['Ttxt'] = $sleutel.$waarde;
$_SESSION['TsD'] = $sleutel.$waarde;// dag,maand,jaar etc wordt gekozen in index.php
$_SESSION['TeD'] = $sleutel.$waarde;
$_SESSION['Tdone'] = $sleutel.$waarde;
}
}
?>
Wat ik bedoel is je roept nu alle tabellen op terwijl je er maar een paar nodig hebt
Roep alleen degene op die je nodig hebt
Ja dat doe ik ook met dat tsk_ID in de mysql query. Ik krijg met dit script alleen een formulier met allemaal

tsk_done1

waardes, waarbij tsk_done de laatste row in mijn tabel is en 1 de waarde ervan. Ik moet per row die sleuten en waarde kunnen instellen :/
Stel dat er meerder records worden gevonden dan zal de foreach() de session-vars steeds overschrijven. De query is niet correct bij de post-var => de quotes missen in het post-array(). En de query is lek => sql-injection.
<?php

$query = "select tb1, tb2 FROM tabelnaam tb1 = eenwaarde";
$get = mysql_query(query);
$aantal = mysql_num_rows($get);
$verzamel = Mysql_fetch_assoc($get);

//nu kun je je tabellen ophalen en bijv vergelijken met
$verzamel['tb2'];


?>
I see.. dus je zegt dat ik eigenlijk helemaal geen loops en dingen nodig heb? Ik zal het eens proberen, thanks :)

[size=xsmall]Toevoeging op 16/12/2010 22:35:52:[/size]

Top! Het werkt. Heel erg bedankt allemaal :D
Hoe heb je het uiteindelijk gedaan ?
Waarom stap je af van PDO? Als je al PDO gebruikt zie ik geen reden om terug te gaan naar mysql (omgekeerd wel).

Reageren