update multiple rows

Status
Niet open voor verdere reacties.

DutchDisturbed

Gebruiker
Lid geworden
31 mei 2004
Berichten
317
Hallo!
ik wil graag meerdere rijen in min database tegeijk updaten
ik krijg de informatie via een formulier:

PHP:
while($obj = mysql_fetch_object($resultaat)){
 echo "<br><input type='text' name='naam' size='15' value=\"$obj->naam\">
      <input type=\"text\" name=\"link\" size=\"10\" value=\"$obj->link\">
      <select name=\"position\"><option value=\"0\" SELECTED>Hoofdmenu</option><option value=\"1\">Linker menu</option><option value=\"2\">Rechter menu</option></select> \n \n";
}

en wil dit dus gaan updaten in mijn database met iets van

PHP:
  $naam = addslashes($_POST['naam']);
  $link = addslashes($_POST['link']);
  $position = addslashes($_POST['position']);
    $menu_query = "UPDATE menu_1 SET naam='$naam', link='$link', position='$position' WHERE id='$id'";
    mysql_query($menu_query);
maarja dit werkt niet en ik krijg er geen functie bijgeplakt die ervoor zorgt dat alle items worden geupdate....
bvd!
 
ik krijg geen foutmelding
hij doet het gewoon niet
alle informatie in mn database wordt weggehaald en overal wordt de link veranderd in index.php....
 
Een goede manier om te achterhalen wat (en waar) het fout gaat is om je query even te echo-en.
Zo zie je alle variabelen etc erin; ook degenen die dus leeg zijn.
 
Lees nou eens goed dames. Hij krijgt geen error, hij wilt gewoon een duwtje in de goeie richting.

Wat ik d'r uit opmaak: Je hebt een aantal rijen in je database die je output met een formpje. De aanpassingen aan dat formulier moet geupdate worden in de respectievelijke rijen.

Right?

PHP:
while($obj = mysql_fetch_object($resultaat)){
 echo "<br><input type='text' name='naam' size='15' value=\"$obj->naam\">
      <input type=\"text\" name=\"link\" size=\"10\" value=\"$obj->link\">
      <select name=\"position\"><option value=\"0\" SELECTED>Hoofdmenu</option><option value=\"1\">Linker menu</option><option value=\"2\">Rechter menu</option></select> \n \n";
}

Probleem hiermee. Als je 4 rijen hebt, krijg je 4x een input veld met name 'naam'. Je zal dus een ID moeten defineren.

Nu heb je 2 opties. Array's in HTML of met normale names.

HTML array voorbeeld:

Code:
<form method="post">

<input type="text" name="test[]" value="koe" />
<input type="text" name="test[]" value="gras" />

<input type="text" name="geel[]" value="kleur" />
<input type="text" name="geel[]" value="banaan" />

</form>

Als je dit form submit naar een php file, en daarna
PHP:
<?php print_r ( $_POST );
doet, kun je zien hoe je dan aan je waardes in PHP kunt komen. Daarna kun je met simpele query's je database updaten.

Je kunt ook een beetje meer PHP code gebruiken en met namen gaan werken als naam-1 waar 1 het ID is. Ik weet niet of je een ID hebt, maar het is wel makkelijk om daarmee te werken.

Tenzij je van plan bent natuurlijk om elke keer ALLE rijen aan te passen. Dan haal je eerst je tabel leeg, en voer je daarna de nieuwe informatie in :)
 
yes precies! ik heb die id dus dan kan ik er best iets als naam_1 ofzo van maken toch?
ik ben nl niet zo sterk met die array's :D
en dan die query in een while loop zetten...
maar hoe krijg ik nu die id in die while loop? hij wordt keurig netjes opgevraagd
die while loop moet dus steeds opnieuw met de volgende id aan de slag
 
PHP:
// PHP voorbeeld

while ( $_POST AS $k => $v )
{
  if ( substr ( $k, 0, 5 ) == 'naam-' )
  {
    $id = substr ( $k, 5 );
    
    // Hier ga je verder
    // bv: echo $_POST['adres-' . $id] . '<br />';
  }
}

// HTML voorbeeld

<input type="text" name="naam-2" value="test" />
<input type="text" name="adres-2" value="fay away" />
<input type="text" name="land-2" value="nl" />

<input type="text" name="naam-3" value="test" />
<input type="text" name="adres-3" value="most far away" />
<input type="text" name="land-3" value="uk" />

<input type="text" name="naam-15" value="test" />
<input type="text" name="adres-15" value="fay away" />
<input type="text" name="land-15" value="almost closer" />

Dit is maar 'n voorbeeldje. Zelf even de goeie namen verzinnen en een validatie maken (om te kijken of het formulier wel verzonden is)

Suces ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan