|
| opdatere database med 2 variabler? Fra : Kasper Nordal Lund |
Dato : 25-07-06 10:54 |
|
Hej.
Ved ikke om min overskrift beskriver mit problem, men her prøver jeg igen.
Jeg har lavet en side med en masse navne hvor folk kan melde sig til et
arrangement.
Nanvene kan de ikke gøre noget ved, men de kan melde sig til ved at
sætte hak i en checkbox samt vælge om de kommer 1,2,3 eller 4 personer
fra en select box (eller hvad den nu hedder).
mit problem er nu at få opdateret begge værdier i databasen, her er min
kode:
<?php
$result = dbQuery("SELECT * FROM indbydelse WHERE tilmeldt='0' ORDER BY Navn");
echo "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n";
if (isset($_POST['chkbx'])){
-----------------Her er problemet-----------------------------
foreach ($_POST['chkbx'] as $svar){
$antal = $_POST['selbx'];
dbQuery("UPDATE indbydelse SET tilmeldt='1',antal='$antal' WHERE ID = $svar");
}
}
---------------------------------------------------------------
echo "<table><tr><td>";
echo "Navn:";
echo " \n";
echo "<br /><br /></td><td>";
echo "Tilmeldt:";
echo " \n";
echo "<br /><br /></td><td>";
echo "Antal:";
echo " \n";
echo "<br /><br /></td><td>";
echo "Tilmeld:";
echo " \n";
echo "<br /><br /></td><td>";
echo "Antal:";
echo "<br /><br /></td></tr>";
while($row = mysql_fetch_assoc($result)){
$ID = $row['ID'];
echo "<tr><td>";
echo $row['Navn'];
echo " \n";
echo "</td><td>";
if ($row['tilmeldt'] == 0){
echo "Nej";}
else{
echo "Ja";}
echo " \n";
echo "</td><td>";
echo $row['antal'];
echo " \n";
echo "</td><td>";
echo "<input type=\"checkbox\" name=\"chkbx[]\" id=\"chkbx[]\" value=\"$ID\">";
echo " \n";
echo "</td><td>";
echo "<select name=\"selbx[]\" id=\"selbx[]\">";
echo "<option value=\"0\">0";
echo "<option value=\"1\">1";
echo "<option value=\"2\">2";
echo "<option value=\"3\">3";
echo "<option value=\"4\">4";
echo "</select>";
echo "</td></tr>";
}
$ialt = dbQuery("SELECT SUM(antal) FROM indbydelse");
echo "<tr><td>";
echo "<br /><br />";
echo "Antal tilmeldte ialt: ";
echo "$ialt";
echo "<br /><br />";
echo "<input type=\"submit\" value=\"Opdater\" name=\"submit\"></form>";
echo "</td></tr>";
echo "</table>";
?>
Som det er nu virker det ikke, jeg har forsøgt mig med 2 foreach løkker,
men uden held, og med antal ='$_POST[selbx]'
Men jeg kan altså ikke lige gennemskue hvordan det skal laves.
Desuden har jeg probemer med den nederste $ialt som ikke virker fordi der
laves mere end en samtidig forbindelse til databasen (tror jeg nok)
hvordan kommer jeg uden om dette?
Håber i kan hjælpe.
/Kasper
| |
Martin (26-07-2006)
| Kommentar Fra : Martin |
Dato : 26-07-06 12:24 |
|
Kasper Nordal Lund wrote:
> Hej.
Hejsa
Når man leger med POST, SESSION osv. variabler - så hvis man får en
fejl, eller rettere den ikke sætter det rigtige ind i databasen - Så er
det en god idé at starte med at fejlsøge ved at udskrive diverse værdier
hvor fejlene kunne ligge. Der bruger man funktionerne print_r() og
var_dump()
>
> mit problem er nu at få opdateret begge værdier i databasen, her er min
> kode:
>
> <?php
> $result = dbQuery("SELECT * FROM indbydelse WHERE tilmeldt='0' ORDER BY Navn");
>
> echo "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n";
>
> if (isset($_POST['chkbx'])){
Prøv at lave en
echo var_dump($_POST['chkbx']);
lige før if'en
Er den nu også sat?
>
> -----------------Her er problemet-----------------------------
>
> foreach ($_POST['chkbx'] as $svar){
Lige før din foreach, så tjekker du lige om chkbx er et array, ellers
fejler din foreach.
Det gøres også med
echo var_dump($_POST['chkbx']);
> $antal = $_POST['selbx'];
> dbQuery("UPDATE indbydelse SET tilmeldt='1',antal='$antal' WHERE ID = $svar");
> }
> }
>
> Håber i kan hjælpe.
Svært når du ikke fortæller om der kommer en PHP fejl, eller om det
simpelthen bare er dig der har lavet en stavefejl i en variablerne eller
noget ala lign :)
| |
Kasper Nordal Lund (26-07-2006)
| Kommentar Fra : Kasper Nordal Lund |
Dato : 26-07-06 16:04 |
|
> Svært når du ikke fortæller om der kommer en PHP fejl, eller om det
> simpelthen bare er dig der har lavet en stavefejl i en variablerne eller
> noget ala lign :)
Jeg må have udtrykt mig uklart.
Mit problem er at få variablen $_POST['selbx'] (som virker ok) med ind i
sql sætningen jeg kan jo ikke skrive:
dbQuery("UPDATE indbydelse SET tilmeldt='1', antal='$_POST[selbx]' WHERE
ID = $svar");
Heller ikke:
dbQuery("UPDATE indbydelse SET tilmeldt='1', antal='$_POST[\"selbx\"]'
WHERE ID = $svar");
dbQuery("UPDATE indbydelse SET tilmeldt='1', antal=$_POST['selbx'] WHERE
ID = $svar");
Går heller ikke.
dbQuery("UPDATE indbydelse SET tilmeldt='1'WHERE ID = $svar");
Virker fint, men så får jeg jo ikke antal med.
| |
René Lønstrup (26-07-2006)
| Kommentar Fra : René Lønstrup |
Dato : 26-07-06 16:28 |
|
Kasper Nordal Lund wrote:
> Mit problem er at få variablen $_POST['selbx'] (som virker ok) med
> ind i sql sætningen jeg kan jo ikke skrive:
>
> dbQuery("UPDATE indbydelse SET tilmeldt='1', antal='$_POST[selbx]'
> WHERE ID = $svar");
dbQuery("UPDATE indbydelse SET tilmeldt='1', antal='" . $_POST['selbx'] . "'
WHERE ID = $svar");
--
Mvh René Lønstrup
web: http://rene.loenstrup.net?r=usenet
email: se om du kan regne den ud..
| |
Kasper Nordal Lund (26-07-2006)
| Kommentar Fra : Kasper Nordal Lund |
Dato : 26-07-06 17:00 |
|
On Wed, 26 Jul 2006 17:28:13 +0200, René Lønstrup wrote:
> Kasper Nordal Lund wrote:
>> Mit problem er at få variablen $_POST['selbx'] (som virker ok) med
>> ind i sql sætningen jeg kan jo ikke skrive:
>>
>> dbQuery("UPDATE indbydelse SET tilmeldt='1', antal='$_POST[selbx]'
>> WHERE ID = $svar");
>
> dbQuery("UPDATE indbydelse SET tilmeldt='1', antal='" . $_POST['selbx'] . "'
> WHERE ID = $svar");
Takker, det virker.
Nu er problemet bare at jeg får hele arrayet og ikke den ene værdi ind
på denne måde, hvordan får jeg værdierne ud.
Jeg kan ikke lave en foreach i en foreach vel?
| |
Jesper Brunholm (26-07-2006)
| Kommentar Fra : Jesper Brunholm |
Dato : 26-07-06 22:56 |
|
Kasper Nordal Lund skrev:
> Nu er problemet bare at jeg får hele arrayet og ikke den ene værdi ind
> på denne måde, hvordan får jeg værdierne ud.
>
> Jeg kan ikke lave en foreach i en foreach vel?
Det kan du nu godt (lige såvel som man kan lave flere for() eller
while() løkker inden i hinanden), men det lyder som om du er ved at lave
en StormP-programmering. Prøv at tænke det igennem så du kommer uden om
problemet.
mvh
Jesper Brunholm
| |
Kasper Nordal Lund (27-07-2006)
| Kommentar Fra : Kasper Nordal Lund |
Dato : 27-07-06 06:00 |
|
On Wed, 26 Jul 2006 23:55:51 +0200, Jesper Brunholm wrote:
> en StormP-programmering. Prøv at tænke det igennem så du kommer uden om
> problemet.
Jeg lavede radio knapper istedet så man kun kan vælge en ad gangen, nu
virker det.
| |
|
|