Problem beim auslesen + updaten bestimmter Zeilen ;-/

splat

Erfahrenes Mitglied
Hallo,

Ich habe eine Tabelle (events) mit 4 Spalten names "id", "userid", "datum" und "details". Der Wert in userid kann mehrmals vorkommen und id ist eine fortlaufende Nummer. Jetzt möchte ich folgendes machen: Es sollen nur die Spalten ausgelesen werden die mit einer bestimmten userid versehen sind.
angenommen das sind 3 Zeilen die irgendwo in der Tabelle stehen, wie schaffe ich es genau diese 3 Zeilen auszulesen, per Formular zu ändern und wieder an der richtigen stelle upzudaten? Ich habe mir gedacht, ich suche zuerst nach Zeilen mit der userid und lasse diese dann ausgeben.. dann habe ich nur das Problem das das ganze durch eine Schleife geschieht und ich danach die richtigen Felder nicht mehr definieren kann. Hat vielleicht jemand eine Idee wie man das ganze realisieren kann?


So sieht das ganze bei mir aus:
tabelle.jpg


bin für jede Hilfe dankbar!
- Marc
 
Zuletzt bearbeitet:
PHP:
SELECT `alleswasdubrauchst` FROM `events` WHERE `userid`=3;
naja, dann gibst du einfach die IDs mit ins Formularfeld und schon weist du, welche Zeilen du bearbeiten musst.

Ps. Die 3 in der WHERE-Klausel muss deswegen nicht in Singlequotes, weil es ein Integer ist. Wenn du mit PHP oder irgendeiner anderen Sprache arbeitest, in der diese Zahl aus z.B. einem Formular kommt, musst du entweder Singlewuotes darumsetzten, oder, noch eleganter, die Übergabe zu einem Integer casten.
 
Danke für deine schnelle Hilfe!
habe jetzt soweit alles ausgelesen was nur eine userid betrifft. das klappt auch alles wunderbar, und sortiert ist es auch.

PHP:
<html>
<head>
</head>
<div align="center">
<center>
<table border="0" width="600">
<form action="update.php" method="post">

<?
mysql_connect(localhost, user, pass)or die ("keine Verbindung möglich:" .mysql_error());
mysql_select_db("db38867");

$result = mysql_query("SELECT id, datum, details FROM events WHERE userid='3' ORDER by datum");

while ($row=mysql_fetch_array($result)) {           
      echo "<tr>";
      echo "<td width='100'><input type='text' NAME='datum' VALUE ='$row[datum]' size='10'></td>";
      echo "<td width='500'><input type='text' NAME='details' VALUE ='$row[details]' size='80'></td>";
      echo "</tr>";
  }
?>

<tr>
<td width='600'><input type="submit" value="update"></td>
</tr>

</form>
</div>
</center>
</table>
</html>

Jetzt weiss ich nur nicht weiter was das updaten angeht. Den Befehl dazu kenne ich zwar, jedoch wüsste ich in dem Fall nicht wie ich das mit den Variablen machen soll.
Woher weiss meine update.php jetzt welches Feld welches ist? Du hast was erwähnt mit IDs mit ins Formular zu geben? Wie meinst du das?
 
Zuletzt bearbeitet:
das mit der id ist so gemeint:

PHP:
while ($row=mysql_fetch_array($result)) {           

      echo "<tr>";

      echo "<td width='100'><input type='text' NAME='datum[]' VALUE ='$row[datum]' size='10'></td>";

      echo "<td width='500'><input type=hidden name=ID[] value = '$row[id]'>";
      echo "<input type='text' NAME='details[]' VALUE ='$row[details]' size='80'></td>";

      echo "</tr>";

  }

Ich habe auch aus deinen inputfeldern arrays gemacht da sicher verschiedene Werte upgedatet werden sollen :)

und dein update.php sollte sowas haben:

PHP:
$details = $_GET['details'];
$id = $_GET['id'];
$datum = $_GET['datum'];

for ($lo=0;$lo<sizeof($id);$lo++) {
 $erg = mysql_query("update events set datum = '$datum[$lo]', details = '$details[$lo]' where id = '$id[$lo]'");
}
 
Hallo habe ne Frage an Euch

Hallo

habe die Scripte von Euch nachgebaut (abgeändert) abfragen meiner Datenbank funktioniert aber das Update nicht ich verstehs nett ich geb Euch mal meine zwei Dateien,

Das ist die Abfrage:

<html>
<head>
</head>
<div align="center">
<center>
<table border="0" width="600">
<form action="update.php" method="post">

<?
$link = mysql_connect ("localhost", "user", "passwort")
or die ("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("cdcol");

$result = mysql_query("SELECT rang, name, punkte FROM formel1 ORDER by rang");

while ($row=mysql_fetch_array($result)) {
echo "<tr>";
echo "<td width='100'><input type='text' NAME='rang[]' VALUE ='$row[rang]' size='10'></td>";
echo "<td width='500'><input type='text' NAME='name[]' VALUE ='$row[name]' size='80'></td>";
echo "<td width='500'><input type='text' NAME='punkte[]' VALUE ='$row[punkte]' size='80'></td>";
echo "</tr>";
}
?>



<tr>
<td width='600'><input type="submit" value="update"></td>
</tr>

</form>
</div>
</center>
</table>
</html>

und das Update:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?
$link = mysql_connect ("localhost", "user", "passwort")
or die ("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("cdcol");
$rang = $_GET['rang'];
$name = $_GET['name'];
$punkte = $_GET['punkte'];

for ($lo=0;$lo<sizeof($rang);$lo++) {
$erg = mysql_query("update formel1 set punkte = '$punkte[$lo]', name = '$name[$lo]' where rang = '$rang[$lo]'");
}echo $erg
?>
Alles erledigt
</body>
</html>

Abfrage funktioniert aber das Update nicht.

Wäre schön wenn ihr mir helfen würdet.

Besten dank im voraus
 
Wenn das Formular per POST die Daten übergibt
sollte man sie auch im Updatescript mit $_POST abholen :)

sprich $_GET ersetzen durch $_POST

ansonsten hinter dein Update Query so verändern:

$erg = mysql_query("update formel1 set punkte = '$punkte[$lo]', name = '$name[$lo]' where rang = '$rang[$lo]'") or die(mysql_error());

und Fehlermeldung posten :)
 
Original geschrieben von melmager
Wenn das Formular per POST die Daten übergibt
sollte man sie auch im Updatescript mit $_POST abholen :)

sprich $_GET ersetzen durch $_POST

ansonsten hinter dein Update Query so verändern:

$erg = mysql_query("update formel1 set punkte = '$punkte[$lo]', name = '$name[$lo]' where rang = '$rang[$lo]'") or die(mysql_error());

und Fehlermeldung posten :)

Hallo und vielen Dank,

es funktioniert jetzt, habe das $_GET gegen $_POST ausgetauscht und es hat funktioniert. Denn selbst nach einfügen von or die(mysql_error()); kam keine Fehlermeldung. Ich schreibe mal meinen Code dazu der Funktioniert.

Die Abfrage:

PHP:
<html> 
<head> 
</head> 
<div align="center"> 
<center> 
<table border="0" width="300"> 
<form action="teamsup.php" method="post"> 

<? 
$link = mysql_connect ("localhost", "user", "passwort")
or die ("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("DB_Name"); 

$result = mysql_query("SELECT rang, name, punkte FROM tabelle ORDER by rang"); 

while ($row=mysql_fetch_array($result)) { 
echo "<tr>"; 
echo "<td width='10'><input type='text' NAME='rang[]' VALUE ='$row[rang]' size='10'></td>"; 
echo "<td width='30'><input type='text' NAME='name[]' VALUE ='$row[name]' size='80'></td>";
echo "<td width='10'><input type='text' NAME='punkte[]' VALUE ='$row[punkte]' size='80'></td>"; 
echo "</tr>"; 
} 
?> 



<tr> 
<td width='300'><input type="submit" value="update"></td> 
</tr> 

</form> 
</div> 
</center> 
</table> 
</html>

Das Update:

PHP:
<?
$link = mysql_connect ("localhost", "user", "passwort")
or die ("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("DB_Name"); 
$rang = $_POST['rang']; 
$name = $_POST['name'];
$punkte = $_POST['punkte']; 

for ($lo=0;$lo<sizeof($rang);$lo++) { 
$erg = mysql_query("update tabelle set punkte = '$punkte[$lo]', name = '$name[$lo]' where rang = '$rang[$lo]'") or die(mysql_error()); 
}
echo "Das Update der Punkte von den Daten hat funktioniert "
?>

Aber kannst du mir mal erklären was der Unterschied zwischen get und post ist ?

Vielen Dank nochmal für deine Hilfe
:)

melmager
 
Aber kannst du mir mal erklären was der Unterschied zwischen get und post ist ?

GET = Formulardaten werden sichtbar hinter dem Filenamen übergeben.

update.php?info=30&eingabe=test

die Richtung

POST = Formulardaten werden im Hintergrund für den User unsichtbar übertragen,
zusätzlich können hier mehr Daten wie mit GET übermittelt werden
 
Zurück