[MySQL] Hoe meerdere Record tegelijk te updaten.

Pagina: 1
Acties:
  • 50 views sinds 30-01-2008

  • bonzen
  • Registratie: Oktober 2003
  • Laatst online: 20-01 22:04
Ben bezig met een menu die ik uit een database haal.
De gebruiker kan menuitems toevoegen en aanpassen.
Het moet ook mogelijk zijn om de volgorde van de items te beïnvloeden.

Hiervoor heb ik de volgende tabel:

Menu
topic_id
topic_naam
topic_volgorde


Met een javascriptje worden de Items gewisseld in de volgende hidden fields:
<input type="hidden" name="1" id="1" value="Doelstellingen" />
<input type="hidden" name="4" id="4" value="Contact" />
<input type="hidden" name="5" id="5" value="Site Info" />

Deze woorden vanuit de database gegenereerd
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$result2 = mysql_query("select * from menu order by topic_volgorde")or
                die (mysql_error());

        while ($row2 = mysql_fetch_array($result2))
            {
                echo "<input type=\"hidden\" name=\"";
                echo $row2["topic_volgorde"];
                echo "\" id=\"";
                echo $row2["topic_volgorde"];
                echo "\" value=\"";
                echo $row2["topic_naam"];
                echo "\" />\n";
            }


Het update van één record is vrij eenvoudig echter hoe kan ik dit met alle doen?

Code tot nu toe:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?PHP
if ($_POST["cont"] ==   "volgorde")
{
  while(list($key, $value) = each($_POST))
  {
    if(intval('$key'))
    {
      $query = "update menu set topic_volgorde=$key where topic_naam=$value ";
      mysql_query($query) or
            die(mysql_error());
    }
  }
}
?>


Bottom line;
Doet niks!

Wie heeft enige suggestie.
Graag nuttige antwoorden of meedenkers, ik heb niks aan antwoorden zoals "www.google.nl"

BTO


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Doet niks!
Kom dan ook met een nuttig post ;), want nu weten we het alsnog niet.... Toen je begon te debuggen, waar liep je dan precies aan? Wat voor foutmelding krijg je bij die?

Ik zou de query eens printen ipv uitvoeren en deze handmatig op je database uitvoeren :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • bonzen
  • Registratie: Oktober 2003
  • Laatst online: 20-01 22:04
geen foutmelding, hij doorloopt de code gewoon../

De query werkt gewoon, als ik hem rechstreeks of middels PHPMyAdmin uitvoer werkt hij uitstekend.

Nog andere suggesties?

[ Voor 57% gewijzigd door bonzen op 20-04-2006 15:59 ]

BTO


  • bakkerl
  • Registratie: Augustus 2001
  • Laatst online: 20-01 20:59

bakkerl

Let there be light.

Misschien een commit() er achteraan gooien, of de database connetie op auto_commit zetten.
Hoe staat het dus met de database connectie en transacties die er bij horen?

Of misschien je code goed nakijken. De code word goed doorlopen.
Maar moet intval('$key') niet intval($key) zijn?
Je komt nooit in de IF. Je query wordt dus _nooit_ uitgevoerd. Je heb dus nooit even een echo gedaan ipv direct de mysql_query om te controlleren of die wel in de IF komt.

PHP:
1
2
3
4
5
6
7
8
9
10
<?php

$key = 12;

if (intval('$key'))
  echo "We have a number\n";
else
  echo "Sorry, You loose\n";

?>


Met als resultaat
code:
1
2
[bakkerl@angel p]$ php p.php
Sorry, You loose


Nieuwe code zonder de ''
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php

$key = 12;

if (intval($key))
  echo "We have a number\n";
else
  echo "Sorry, You loose\n";


?>


Nieuwe resultaat:
code:
1
2
[bakkerl@angel p]$ php p.php
We have a number


En dan maakt het niet uit of:
$key = 12;
$key = '12';

[ Voor 104% gewijzigd door bakkerl op 20-04-2006 16:13 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 07:13
Misschien eens een gedacht om eerst je query te echoen alvorens je 'm uitvoert.
Dan zie je wat er naar de DB gestuurd wordt.

Aangezien ik denk dat een 'topic_naam' nog altijd alfanumeriek is, zal je quotes rond je criterium moeten zetten.
Zo dus:
WHERE naam = 'bliep'
ipv
WHERE naam = bliep

https://fgheysels.github.io/


  • bonzen
  • Registratie: Oktober 2003
  • Laatst online: 20-01 22:04
PHP:
1
2
3
4
5
6
7
8
9
10
11
if ($_POST["cont"] ==  "volgorde")
{
  while(list($key, $value) = each($_POST))
  {
    if(intval($key))
    {       
      $query = "update menu set topic_volgorde=$key where topic_naam='$value'";
      echo $query;
    }
  }
}


Krijg totaal geen output?¿

Volgens mij is het iets heel erg lulligs ofzo.

BTO


  • gavro
  • Registratie: November 2000
  • Laatst online: 08:05
bonzen schreef op donderdag 20 april 2006 @ 16:22:
PHP:
1
2
3
4
5
6
7
8
9
10
11
if ($_POST["cont"] ==  "volgorde")
{
  while(list($key, $value) = each($_POST))
  {
    if(intval($key))
    {       
      $query = "update menu set topic_volgorde=$key where topic_naam='$value'";
      echo $query;
    }
  }
}


Krijg totaal geen output?¿

Volgens mij is het iets heel erg lulligs ofzo.
kom op ej... even een beetje debuggen, probeer eens:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if ($_POST["cont"] ==  "volgorde")
{
  echo "1\n";
  while(list($key, $value) = each($_POST))
  {
    echo "2\n";
    if(intval($key))
    {       
      $query = "update menu set topic_volgorde=$key where topic_naam='$value'";
      echo "3\n";
    }
  }
}


o.i.d. dan weet je iig of ie overal inkomt... Op deze manier weet je nog niet eens of ie in de eerste if komt, laatste staan de while loop en de tweede if.....

Whoo-ah.


  • bonzen
  • Registratie: Oktober 2003
  • Laatst online: 20-01 22:04
heb nu het volgende:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (isset($_POST["cont"]))
{
  while(list($key, $value) = each($_POST))
  {
    echo "Key: $key $value<br>\n";
    if(strval(intval($key)))
    {       
      $query = "update menu set topic_volgorde=$key where topic_naam='$value'";
      echo $query;
     // mysql_query($query) or
     //       die(mysql_error());
            
    }
    echo "<br>\n";
  }
}


Output is de volgende:
Key: cont Betrokken Producties

Key: 1 Doelstellingen
update menu set topic_volgorde=1 where topic_naam='Doelstellingen'
Key: 2 Betrokken Producties
update menu set topic_volgorde=2 where topic_naam='Betrokken Producties'
Key: 3 Komende producties
update menu set topic_volgorde=3 where topic_naam='Komende producties'
Key: 4 Contact
update menu set topic_volgorde=4 where topic_naam='Contact'
Key: 5 Site Info
update menu set topic_volgorde=5 where topic_naam='Site Info'

BTO


  • whoami
  • Registratie: December 2000
  • Laatst online: 07:13
Mja, en nu ga je die queries eens uitvoeren....

Debuggen is wel redelijk basic, en iets wat je zelf ook moet kunnen. GoT is nu ook niet bedoeld om mensen bij het handje te houden.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.