[PHP] Meerdere rijen tegelijk invoegen.

Pagina: 1
Acties:

  • dreambofh
  • Registratie: November 2000
  • Laatst online: 21-07 20:08
Hallo,

Ik ben bezig met een script en ik loop tegen een probleem aan.
Ik haal met de volgende code verschillende records op...
<code>
while ($record = mysql_fetch_object($resultaat))
{
echo "<tr>
<td width=\"100\">$record->id</td>
<td width=\"300\"><a href=\"$record->baclient_url\" target=\"_blank\"><b>$record->schedulename</b></a></td>
<td width=\"200\">

<select name=\"status\">
<option value=\"Completed\" selected>Completed</option>
<option value=\"Faild\">Failed</option>
<option value=\"Missed\">Missed</option>
</select>

</td>
</tr>";
}
</code>

Dan komt er een tabel met alle records er in en maakt hij bij iedere rij een pulldown menutje met daarin 3 waardes (de status).

Nu wil ik dit wegschijven in de MySQL database maar hij maakt alles het zelfde.
Dit komt natuurlijk door die $status.

Ik heb veel dingen geprobeerd maar ben er niet uitgekomen...

<code>
while ($record = mysql_fetch_object($resultaat))
{
$sqlQuery = "INSERT INTO $backupstatus_tabel SET id = '', ";
$sqlQuery .= "scheduleid = '$record->id', ";
$sqlQuery .= "dag = '$dag', ";
$sqlQuery .= "maand = '$maand', ";
$sqlQuery .= "jaar = '$jaar', ";
$sqlQuery .= "status = '$status' ";
$result = @mysql_query($sqlQuery, $mysql_connection) or
die("SQL Connectie Mislukt");
echo "Backupstatus van $record->schedulename is ingevoerd...<br>";
}
</code>

Pleaze help me!

Groetjes,
Sebastian

  • _.Luke._
  • Registratie: September 2001
  • Laatst online: 26-07-2021
zet een teller in je while...

Trying is the first step towards faillure...


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Wat ik altijd doe bij het inserten van meerdere rijën in 1 query, is een array maken van alle inserts:
code:
1
2
3
$insert[0] = "('bla', 'dinges', 'nogiets')";
$insert[1] = "('dus', 'want', 'enof')";
$insert[2] = "('bier', 'eehm', 'mooizo')";

Dit kun je prima in een while-lusje doen.
Daarna:
PHP:
1
<?$query = "INSERT INTO tabel ('kolom', 'kolom2', 'kolom3') VALUES ";$query .= implode(", ", $insert);?>

Dan heb je ineens de goeie query in $query zitten: VUUR op de database! :)

  • _.Luke._
  • Registratie: September 2001
  • Laatst online: 26-07-2021
precies!!!

zo zou ik het ook doen...

Trying is the first step towards faillure...


Verwijderd

Ik zet altijd het record ID achter de fieldname
PHP:
1
<?echo "<tr><td width=\"100\">$record->id</td><td width=\"300\"><a href=\"$record->baclient_url\" target=\"_blank\"><b>$record->schedulename</b></a></td><td width=\"200\"><select name=\"status$id\"><option value=\"Completed\" selected>Completed</option><option value=\"Faild\">Failed</option><option value=\"Missed\">Missed</option></select></td></tr>"; ?>

Dan gebruikt ik het volgende om alle variabelen op te pikken.

foreach($HTTP_POST_VARS AS $key => $value) {

}


Dan zet ik daarin een if statement met substr() erin om te checken of ik de goede variabele heb en dan weet je ook diret om welke record het gaat.

Misschien kan het makkelijker maar het werkt in ieder geval wel.

Vervolgens voeg je de vars toe in je DB met insert.


Edit
Ik gebruik het overigens niet om te inserten maar om te updaten.
Dan werkt het perfect.

Verwijderd

je noemt je status veld:

status[] (dus gewoon <select name="status[]">)

dan wordt het bij een post automagisch een array en kun je hem uitlezen (en in de db zetten) door bijvoorbeeld:
PHP:
1
<?for($i = 0; $i < count($_POST["status"]); $i++){//insert}?>

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:21

Creepy

Tactical Espionage Splatterer

Op woensdag 26 juni 2002 11:10 schreef _.Luke._ het volgende:
zet een teller in je while...
Dat is dus niet nodig.. zie de while voorwaarde..
Op woensdag 26 juni 2002 11:17 schreef _.Luke._ het volgende:
precies!!!

zo zou ik het ook doen...
Lekker nuttige post, terwijl je de post ervoor niet echt goed zat... NOFI hoor, maar ik gok dat je techposts probeert te posten (aangezien je er nog geen 150 hebt).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • dreambofh
  • Registratie: November 2000
  • Laatst online: 21-07 20:08
Hmm... dus als ik dit onderstaande gebruik dan is het iets als:
[code]<?for($i = 0; $i < count($_POST["status"]); $i++){//insert}?>
[code]


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while ($record = mysql_fetch_object($resultaat)) 
{
echo "<tr>
<td width=\"100\">$record->id</td>
<td width=\"300\"><a href=\"$record->baclient_url\" target=\"_blank\"><b>$record->schedulename</b></a></td>
<td width=\"200\">

<select name=\"status[]\">
<option value=\"Completed\" selected>Completed</option>
<option value=\"Faild\">Failed</option>
<option value=\"Missed\">Missed</option>
</select>

</td>
</tr>"; 
}


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while ($record = mysql_fetch_object($resultaat))
{ 
for($i = 0; $i < count($_POST["status"]); $i++)
{//insert
$status1 = $_POST["status"];
}
$sqlQuery = "INSERT INTO $backupstatus_tabel SET id = '', ";
$sqlQuery .= "scheduleid = '$record->id', ";
$sqlQuery .= "dag = '$dag', ";
$sqlQuery .= "maand = '$maand', ";
$sqlQuery .= "jaar = '$jaar', ";
$sqlQuery .= "status = '$status1' ";
$result = @mysql_query($sqlQuery, $mysql_connection) or
die("SQL Connectie Mislukt");
echo "Backupstatus van $record->schedulename is ingevoerd...<br>"; 
}

Ik heb um niet helemal door :?

Het werkt niet echt.
Pagina: 1