Avatar billede torstein Novice
19. juni 2003 - 15:28 Der er 23 kommentarer og
1 løsning

Opdater flere rækker på en gang.

Flg. script opdaterer kun den sidste række af alle som den skriver ud. Der skal (vel nok/måske) indsættes en array for at alle felter opdateres. Hjælp ønskes.

<?// Sætter den nye rækkefølge.
if ($action=="opdater"){
$resultat = mysql_query("update create_db set sortering='$ny_sortering' where id_create='$id_create'" )or die (mysql_error());
echo "Opdateret";}

// Henter alle øvelser i create DB
$find = mysql_query("SELECT * FROM create_db WHERE id_bruger ='$_SESSION[husk_id]' ORDER BY sortering asc") or die(mysql_error());
$count = mysql_num_rows($find);
if ($count){?>
<h3>Nuværende træningsprogram:</h3>
<p>
<form action="<? echo $php_self; ?>" method="post">
<?
while ($row = mysql_fetch_array($find)) {?>
<a href=java script:void(0) onClick="window.open('vis_ovl.php?id_ovl=<?=$row[id_ovl];?>','','width=580,height=550,left = 200, top = 100,menubar=no,scrollbars=yes')">
<?
// Finder kategorien ud fra id_ovl
$navn = mysql_query("SELECT * FROM ovelse_db WHERE id_ovl ='$row[id_ovl]'") or die(mysql_error());
$navn2 = mysql_num_rows($navn);
while ($row2 = mysql_fetch_array($navn)) {
print $row2[ovl_navn];?></A> - <?=$row2[kat];if ($row2[subkat]){?>/<?=$row2[subkat];}?> - <a href="index.php?slet=<?=$row2[id_ovl];}?>&list=slet.php">Slet</A> -
<input type="text" name="ny_sortering" value="<?=$row[sortering];?>">
<input type="hidden" name="id_create" value="<?=$row[id_create];?>">
<br><?}?><br>
<input type="submit" name="action" size=10 value="opdater"></form>
<br></p>
<?}?>
Avatar billede jakoba Nybegynder
19. juni 2003 - 15:46 #1
Prøv at stille koden overskueligt op og med gode indrykninger.
Avatar billede torstein Novice
19. juni 2003 - 17:05 #2
<?// Sætter den nye rækkefølge.

if ($action=="opdater"){
$resultat = mysql_query("update create_db set sortering='$ny_sortering' where id_create='$id_create'" )or die (mysql_error());
include  ("opdateret.php");
}

// Henter alle øvelser i create DB

$find = mysql_query("SELECT * FROM create_db WHERE id_bruger ='$_SESSION[husk_id]' ORDER BY sortering asc") or die(mysql_error());
$count = mysql_num_rows($find);
if ($count){?>

<h3>Nuværende træningsprogram:</h3>
<p>
<form action="<? echo $php_self; ?>" method="post">

<?
while ($row = mysql_fetch_array($find)) {?>

<a href=java script:void(0) onClick="window.open('vis_ovl.php?id_ovl=<?=$row[id_ovl];?>','','width=580,height=550,left = 200, top = 100,menubar=no,scrollbars=yes')">

<?
// Finder kategorien ud fra id_ovl

$navn = mysql_query("SELECT * FROM ovelse_db WHERE id_ovl ='$row[id_ovl]'") or die(mysql_error());
$navn2 = mysql_num_rows($navn);

while ($row2 = mysql_fetch_array($navn)) {

print $row2[ovl_navn];?></A> - <?=$row2[kat];if ($row2[subkat]){?>/<?=$row2[subkat];}?> - <a href="index.php?slet=<?=$row2[id_ovl];}?>&list=slet.php">Slet</A> -
<input type="text" name="ny_sortering" value="<?=$row[sortering];?>">
<input type="hidden" name="id_create" value="<?=$row[id_create];?>">
<br>
<?}?>
<br>
<input type="submit" name="action" size=10 value="opdater"></form>
<br></p>
<?}?>
Avatar billede torstein Novice
19. juni 2003 - 23:45 #3
HJÆLP SØGES STADIG!!!

Håber dette er mere overskueligt:

<?// Sætter den nye rækkefølge.
if ($action=="opdater"){
$resultat = mysql_query("update create_db set sortering='$ny_sortering' where id_create='$id_create'" )or die (mysql_error());
include  ("opdateret.php");
}

if (!$action){
// Henter alle øvelser i create DB

$find = mysql_query("SELECT * FROM create_db WHERE id_bruger ='$_SESSION[husk_id]' ORDER BY sortering asc") or die(mysql_error());
$count = mysql_num_rows($find);
if ($count){?>

<h3>Nuværende træningsprogram:</h3>
<p>Sæt rækkefølgen på de enkelte øvelser ved hjælp af menuen til højre.<br>
<form action="<? echo $php_self; ?>" method="post">

<?
while ($row = mysql_fetch_array($find)) {
?>

<table cellspacing="0" cellpadding="0" border="0">
<?
// Finder kategorien ud fra id_ovl

$kategori = mysql_query("SELECT * FROM ovelse_db WHERE id_ovl ='$row[id_ovl]'") or die(mysql_error());
$navn2 = mysql_num_rows($kategori);
while ($r = mysql_fetch_array($kategori)) {?>
    <tr>
        <td width="200 px"><?print $r[ovl_navn];?></td>
        <td width="200 px"><?=$r[kat];if ($r[subkat]){?>/<?=$r[subkat];}?></td>
        <td width="30 px"><a href="index.php?slet=<?=$r[id_ovl];}?>&list=slet.php">Slet</A></td>
        <td width="20 px">
        <select name="ny_sortering">
        <option value="<?=$row[sortering];?>" SELECTED><?if ($row[sortering]>0){echo $row[sortering];} else {}?></option>
        <?for($n=1; $n < $count+1; $n++) {?>
        <option value="<?=$n;?>"><?=$n;?></option><?}?>
        </select>
        <input type="hidden" name="id_create" value="<?=$row[id_create];?>"></td>
            </tr>
<?}?>            </table>
<br>
<input type="submit" name="action" size=10 value="opdater"></form>
</p>
<?}}?>
Avatar billede avminarm Juniormester
20. juni 2003 - 08:57 #4
er der et sted man kan se scriptet køre?
Avatar billede torstein Novice
20. juni 2003 - 11:07 #5
www.totte.dk/test

bruger: test
pwd: test

Vælg:

Lav træningsprogram i menuen til venstre.
Sæt et par øvelser ind.

I boxen til højre (nederst) skal du vælge 'klik her for at færdiggøre træningen'

Så kommer siden.
Avatar billede jakoba Nybegynder
20. juni 2003 - 11:32 #6
Jeg tror mere det er et (d)HTML-problem end et php-problem du har her. Der er mange ting der går grueligt galt i Netscape7 og jeg får samtlige øvelser med hver gang til at vælge rækkefølge på.

men en god del af det KAN gøres i php, og det vil da også være det bedste for det du laver i php er ikke så afhængigt af hvilken browser du bruger.

På siden før (hvor du vælger øvelser) bør du gemme en mysql_record eller sessiondata der fortæller hvad der blev valgt. det kan du så finde frem igen på næste side ved hjælp af sessionid.

Og så kun udskrive rækkefølge linier for de øvelser.

Du antyder i oplægget at det skal være muligt at tilføje øvelser på side 2, det vil jeg fraråde. Mon ikke den situation du ønsker at håndtere er der hvor samme øvelse skal gentages iløbet af en træningssession, det ville jeg snarere gøre ved at lade brugeren vælge det samme 2 eller flere gange på første side, og så holde rede i hvor mange gange det er valgt.

mvh JakobA
Avatar billede torstein Novice
20. juni 2003 - 11:54 #7
JakobA:

Du skriver du får samtlige øvelser med, når der skal vælges række følge. Er det alle 14 eller alle som er i vinduet til højre?

På siden, hvor jeg vælger øvelser, gemmes id på øvelsen og id på brugeren, ikke mere.

Det er ikke muligt at tilføje nye øvelser på side 2. Det skal være muligt, som nu, at få listet sine valgte øvelser, og give dem et nummer alt efter hvilken øvelse, som skal udføres først.

Når denne bug er på plads, skal de gemte $sorteringer hives ud i en ny rækkefølge, som så printer træningsprogrammet ud i den rækkefølge som brugeren ønsker det og ikke bare den tilfældige rækkefølge, som det pt. står i.

Jeg håber du forstår min hensigt. Jeg har ikke testet siden i Netscape (og gør det nok heller ikke før jeg får klager fra brugerne)

Det som jeg søger er ved en løkke, som heletiden henter $sortering og opdaterer tabellen så længe der er øvelser som har en værdi i $sortering.
Avatar billede jakoba Nybegynder
20. juni 2003 - 11:55 #8
men mestendels vile jeg nok stille det anderles op på kun een enkelt side. som fx i retning af:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp366806.html

Det kan så udvides med finesser som en sammentælling af den samlede træningstid,  outputfelter der fortæller hvormeget tid der ialt er afsat til fingerslag, ol. Alt ialt tror jeg det vil være en mere overskuelig formular at udfylde for diverse trænere.
Avatar billede jakoba Nybegynder
20. juni 2003 - 12:01 #9
ikke 14, kun 9 på den side jeg kikker på.

på siden før er der alle de samme, men også nogle andre, såsom 'nedvarmning' og 'diagonalspil', men ikke flere end at de alle kunne ligge bekvemt i en select.
Avatar billede torstein Novice
20. juni 2003 - 12:06 #10
Forstår godt din hensigt (og eksemplet) men der skulle gerne komme mange øvelser efterhånden som der kommer flere brugere. Derfor er jeg nødt til at dele dem op i disse kategorier. Jeg mener det vil give et bedre overblik og undgå selectboxene, samt mulighed for at få beskrivelserne på de enkelte øvelser ved at klikke på den.
Avatar billede jakoba Nybegynder
20. juni 2003 - 12:23 #11
De der beskrivelser af øvelserne var jeg også ked af at smide væk, forestillede mig at de kunne ligge som seperate links ved siden af formularen.

Men din kategoriopdeling har jeg ikke noget imod at skrotte, såvidt jeg kan se er din kategoriopdeling ikke en der bestemmer at i hele den træningssession vil der kun forekomme øvelser i den kategori, så der er ikke rigtig nogen klar viden der overføres til side2. hvis der var kunne man lade php udfylde selectboksene på basis a hvilken kategori der blev valgt på en tidligere side.

eller man kunne erstatte hver selectboks med 2 hvor indholdet i den anden skifter alt efter hvad der er valgt i den første.
    minutter. [text}  kategori: [ select ]  øvelse: [ afledt select ]

i hver linie. men du skal op omkring 30-50 øvelser før sådan en opdeling er mere tidsbesparende end den er irriterende fordi der skal vælges 2 gange.

mvh JakobA
Avatar billede torstein Novice
20. juni 2003 - 12:37 #12
Kategoriopdelingen skal blive der. Der kan være flere øvelser i forskellige kategorier, som kommer til at hedde det samme, ligeldes er det nemmere når der skal vælges øvelser at man kun søger blandt dem som har interesse og ikke alle øvelser.

Din løsning vil løse mit problem mht. til at indexere øvelserne, men problemet er at det vil være uoverskueligt med alle de forskellige når de ikke er kategoriseret.

Ex. Selv om man starter med opvarmning kan det godt ske at opvarmningsøvelse nummer 10 skal ind før nummer 4.
For de nyeste øvelser, efter som de bliver oprettet af forskellige brugere, vil få fortløbende numre (id_ovl)
Ligeledes kan man jo godt lave en kompetetiv øvelse inden man laver lidt småspil, men øvelser med småspil vil være logisk at have først set fra en træners synspunkt.

Mht. minutforbrug, er det et tekstfelt, hvor man også kan indtaste 2 ture, 4 omgange etc. så det er ikke kun tid der snakkes om.
Avatar billede torstein Novice
22. juni 2003 - 21:42 #13
Jeg afsætter lidt flere point, i håb om at der kommer en løsning eller et løsningsforslag.
/Torstein
Avatar billede avminarm Juniormester
23. juni 2003 - 11:12 #14
thorstein>> Jeg er måske lidt tung ;o), men hvad er det helt præcist der ikke bliver opdateret - jeg har prøvet at logge mig ind med test/test og leget lidt med øvelserne, men jeg kommer hele tiden retur til selectbokse-siden - kan man ikke se det man har indtastet noget sted?
Avatar billede torstein Novice
23. juni 2003 - 11:59 #15
Netop....

Når du er på siden med selectboxene ude til højr, hvor rækkefølgen skal vælges, opdateres kun den sidste box. Den skal opdatere rækkefølgen på alle boxe/øvelser.

Der skal sættes en form for array/løkke ind, som kører en opdatering indtil den har gennemgået alle de valgte øvelser.
Avatar billede avminarm Juniormester
23. juni 2003 - 13:36 #16
har du prøvet med if(isset($_POST['var']....  eller noget

foreach($_POST as $key => $value) {
  gør noget her hvis variablen er sat
}
Avatar billede torstein Novice
23. juni 2003 - 15:51 #17
Som sagt jeg er åben for alle forslag. Denne kommando er dog ukendt for mig endnu (som så mange andre). Kan du give mig et forslag, som passer sammen med mine variabler??
Avatar billede torstein Novice
23. juni 2003 - 17:32 #18
Har fundet flg andetsteds. Kan jeg få en til at skrive det om:

<form action="./salgupdate.php" method="GET">
Opdatering af salgstal:<br />
<?
include ("sql.php");
$tabel = "saelgere";
$saelgerequery = "SELECT * FROM " . $tabel;
// echo $squery;
$squery = mysql_query($saelgerequery);
$saelger = mysql_num_rows($squery);
// echo $saelger;
if($saelger)
{
while($saelgere = mysql_fetch_row($squery))
{
echo "Sælger " . $saelgere[1] . "<input type='text' name='saelger[" . $saelgere[1] . "][0]'><br />";
}
}
?>
<input type="submit" name="send" Value="Send">
</form>


<?
// forbind til din database her //
include ("sql.php");
$tabel = "saelgere";
if($_GET['send'] == "Send") {
foreach($_GET['saelger'] as $key => $value) {
$qry_update = "UPDATE $tabel SET salg1=$value[0]  WHERE sælgernr=$key";
mysql_query($qry_update) or die(mysql_error());
echo "Salgstal er opdateret for sælger nr. " . $key;
}
}
?>
Tilhørende tabel:

CREATE TABLE saelgere (
  id int(11) NOT NULL auto_increment,
  sælgernr tinyint(3) NOT NULL default '0',
  salg1 float NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;


Min tabel:
CREATE TABLE create_db (
  id_create tinyint(4) NOT NULL auto_increment,
  id_bruger tinyint(4) NOT NULL default '0',
  id_ovl tinyint(4) NOT NULL default '0',
  sortering tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (id_create)
) TYPE=MyISAM COMMENT='Træningsprogram DB til Øvl coach.dk';


SÅ skal opdateringen bare rette sorteringen hvor $key = id_create......

Og ligeledes skal min selectbox sættes ind i stedet for input text feltet.

Jeg er rimelig tabt bag en vogn lige pt- måske hjælper det når puteren har været slukket et døgns tid. :o(
Avatar billede avminarm Juniormester
24. juni 2003 - 09:21 #19
det du har fundet der opdaterer så vidt jeg kan se kun én bestemt sælger. dvs kun en opdatering af et felt - det du vil er at opdatere alle øvelserne på én gang ik?

Jeg har tænkt lidt:
1) hvis jeg har forstået det korrekt  - skal alle felter opdateres og gemmes i DB - ik?

2) De gemmes lige efter hinanden med fortløbende id_create ik?

3) Der ligger så et problem i at man ikke ved hviklen øvelse de hører til - eller baseres dette på id_bruger

Hvis ikke der er nogen entydig markering af hvilken øvelse de hører til, skalder måske laves et felt mere i DB der indeholde en slags ID for den øvelses række der er ved at blive oprettet.
Avatar billede torstein Novice
24. juni 2003 - 10:09 #20
Hej igen,

1) Der er kun et felt, som skal opdateres. Det er $sortering.

2) Og for at det bliver den rigtige $sortering, som opdateres, skal den vælges ud fra id_create, som dannes allerede når en øvelse vælges. Dette sker ikke i dette script, men i et tidligere, hvor også id_ovl og id_bruger gemmes.

3) Ud fra at sorteringen gemmes efter id_create, vil man også vide hvilken øvelse sorteringen vil tilhøre..

Jeg prøvede i går at indsætte 3 sælgere, og det fungerede fint. Ligeledes udskiftede jeg sælgerne og tabellen til min, og fik et udtræk med et id_bruger, som også virkede fint.

Problemet var bare at 'Sælger " . $saelgere[1] .' udskrev id_bruger og ikke id_create, som er hensigten.
Avatar billede avminarm Juniormester
24. juni 2003 - 11:56 #21
har du prøvet at ændre 1-tallet til det nr der svarer til id_create - jeg tror det er 0
Avatar billede torstein Novice
24. juni 2003 - 12:45 #22
nej, har tænkt tanken om det et-tal styrer hvilket nummer i rækkefølgen fra tabellen , som det styrer... Prøver det senere i dag.
Avatar billede avminarm Juniormester
24. juni 2003 - 12:56 #23
ok
Avatar billede torstein Novice
26. juni 2003 - 00:07 #24
Jeg lukker spørgsmålet og opretter et nyt, som ikke virker så uoverskueligt, da der er meget irrelevant her på siden.

Jeg har fået lidt mere indsigt, men kan stadig ikke overføre de rigtige variabler.

http://www.eksperten.dk/spm/369366

Jeg håber at kunne få konkrete løsningsforslag på mit script og ikke andre mulige løsningsforslag....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester