PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   bestimmte Daten in einer Tabelle ändern (http://www.selfphp.de/forum/showthread.php?t=22727)

wiedenmann 21.01.2010 11:40:11

bestimmte Daten in einer Tabelle ändern
 
Bitte hilft mir, ich weiß nicht weiter.
ich lerne php erst seit paar wochen

folgenden Fall hab ich:
ich hab 2 tabellen (auftragsdaten & status) insgesammt,
eine spalte in (auftragsdaten) entspricht vielen Spalten in (Status).
-- ich möchte jetzt eine Funktion einbauen, die mir ermöglicht eine bestimmte spalte in (Status - 2 tabelle) zu ändern --

was ich bis jetzt hab ist hier =
______________________________________________________________________
<table border="0" width="95%" cellpadding="0" cellspacing="0"

<tr>
<td class="s12bl">Vorgang</td><td class="s12bl">Wer</td><td class="s12bl">Beginn</td><td class="s12bl">Ende</td><td class="s12bl">Bemerkung</td><td class="s12bl">OK</td><td class="s12bl">Zeitaufwand Angebot</td><td class="s12bl">Zeitaufwand Werkstatt</td><td class="s12bl">Erledigt</td>
</tr>

<?php
while ($rows = mysql_fetch_array($msql))
{


?>


<tr><td colspan="8"><hr noshade size="1"></tr>
<tr class="s10">

<td><?php echo $rows['vorgang']; ?></td>
<td><?php echo $rows['wer']; ?></td>
<td><?php echo $rows['beginn']; ?></td>
<td><?php echo $rows['ende']; ?></td>
<td><?php echo $rows['bemerkung']; ?></td>
<td><?php echo $rows['ok']; ?></td>
<td><?php echo $rows['zeitaufwandag']; ?></td>
<td><?php echo $rows['zeitaufwandwk']; ?></td>
<td><?php echo $rows['erledigt']; ?></td>

<?php

echo "<td align='center'><a href='aendern2_status.php?auftragsdaten_id=$row[auftragsdaten_id]'>Status ändern</a></td>";

?>

</tr>
<!-- Ende innere Tabelle -->
<?php

}
?>


</table>


<table border="0" cellpadding="0" cellspacing="10" align="center">

<tr>
<td><?php echo "<p class=s10 align=center><a href='neu_status.php?auftragsdaten_id=$row[auftragsdaten_id]'>Status anlegen</a></p>"?>
</td></tr>
</table>
______________________________________________________________________ ____
mit dieser fuktion lass ich mir bestimmte Daten aus der tabelle Status anzeigen und die ich dann mit einer weiteren funktion verwende, nähmlich update - und das funktioniert nicht- es übernimmt mir dann meine änderung gleich für alle spalten die mit Spalte aus der Auftragsdaten in verbindung steht!

in der tabelle auftragsdaten funktioniert dieser befehl wunderbar, aber jetzt hab ich wahrscheinlich etwas übersehen und meine suche anders gestalten muss!!

?????????????????????????????????????????????????????????????????????? ????????????????
______________________________________________________________________ ____
abfrage 1
---------------
<?php

function suchstring($text)
{
return strtr(strtolower(trim($text))," äöüß","%%%%%");
}

//Umwandlung der Eingabedaten in Kleinschrift, so das es egal ist
//ob man Groß- oder Kleinbuchstaben eingibt.
$lower_vorgang = suchstring($_POST[vorgang]) ;
$lower_wer = suchstring($_POST[wer]);
$lower_beginn = suchstring($_POST[beginn]);
$lower_ende = suchstring($_POST[ende]);
$lower_bemerkung = suchstring($_POST[bemerkung]);
$lower_ok = suchstring($_POST[ok]);
$lower_erledigt = suchstring($_POST[erledigt]);
$lower_zeitaufwandag = suchstring($_POST[zeitaufwandag]);
$lower_zeitaufwandwk = suchstring($_POST[zeitaufwandwk]);
$lower_aufwtragsdaten_id = suchstring($_POST[aufwtragsdaten_id]);


$msql = mysql_query(
"select status_id, vorgang, wer, beginn, ende, bemerkung, ok, erledigt, zeitaufwandag, zeitaufwandwk, auftragsdaten_id
from status
where lower(vorgang) like '%$lower_vorgang%'
and lower(wer) like '%$lower_wer%'
and lower(beginn) like '%$lower_beginn%'
and lower(ende) like '%$lower_ende%'
and lower(bemerkung) like '%$lower_bemerkung%'
and lower(ok) like '%$lower_ok%'
and lower(erledigt) like '%$lower_erledigt%'
and lower(zeitaufwandag) like '%$lower_zeitaufwandag%'
and lower(zeitaufwandwk) like '%$lower_zeitaufwandwk%'
and lower(auftragsdaten_id) like '%$lower_auftragsdaten_id%'



order by vorgang, wer, beginn
limit 300"
);
?>
______________________________________________________________________ ____
Abfrage 2
------------------------
<?php

include ('db_open.php');

$msql = mysql_query(
"select *
from status
where auftragsdaten_id like $_GET[auftragsdaten_id]");


include ('db_close.php');
$rows = mysql_fetch_array($msql);

?>

Indyk 21.01.2010 16:18:46

AW: bestimmte Daten in einer Tabelle ändern
 
Hallo wiedenmann und willkommen im Forum,

das sind schlechte Karten mit denen du hier im Hilfe bittest, bitte verwenden die entsprechenden Forentags für deinen Quellcode um die potenziellen Helfer nicht abzuschrecken.

[CODE ] .. [/CODE]
[PHP ] .. [/PHP]

urvater 21.01.2010 16:32:04

AW: bestimmte Daten in einer Tabelle ändern
 
Nebenbei bemerkt fehlt dein Update, welches nicht funktioniert.

wiedenmann 22.01.2010 07:17:28

AW: bestimmte Daten in einer Tabelle ändern
 
Mein views nocht mal, so wie es hier sein sollte
______________________________________________________________________ _____
HTML-Code:

</table>
<br>
<br>
<p class="s24" align="center" style="color:green">Statusverlauf</p>

<!--Statusabfrage sucht alles was mit dem aktuel ausgeählten Vorgang angelegt wurde-->
<?PHP

include ('../model/db_open.php');
include ('../model/abfrage1_status.php');
include ('../model/db_close.php');

include ('../model/abfrage2_status.php');

?>


<!-- Beginn innere Tabelle -->
<table border="0" width="95%" cellpadding="0" cellspacing="0"

<tr>

<td class="s12bl">Vorgang</td><td class="s12bl">Wer</td><td class="s12bl">Beginn</td><td class="s12bl">Ende</td><td class="s12bl">Bemerkung</td><td class="s12bl">Zeitaufwand Angebot</td><td class="s12bl">Zeitaufwand Werkstatt</td><td class="s12bl">Erledigt</td>
</tr>

<?php
while ($rows = mysql_fetch_array($msql))
{


 ?>



<tr><td colspan="8"><hr noshade size="1"></tr>
 <tr class="s10">

<td><?php echo $rows['vorgang'];  ?></td>
<td><?php echo $rows['wer'];  ?></td>
<td><?php echo $rows['beginn'];  ?></td>
<td><?php echo $rows['ende'];  ?></td>
<td><?php echo $rows['bemerkung'];  ?></td>
<td><?php echo $rows['zeitaufwandag'];  ?></td>
<td><?php echo $rows['zeitaufwandwk'];  ?></td>
<td><?php echo $rows['erledigt'];  ?></td>
               
<?php

echo "<td align='center'><a href='aendern2_status.php'>Status ändern</a></td>";

?>


</tr>
<!-- Ende innere Tabelle -->
<?php

}
?>



</table>

               
<table border="0" cellpadding="0" cellspacing="10" align="center">

<tr>
<td><?php echo "<p class=s10 align=center><a href='neu_status.php?auftragsdaten_id=$row[auftragsdaten_id]'>Status anlegen</a></p>"?>
</td></tr>
</table>



wiedenmann 22.01.2010 07:24:03

AW: bestimmte Daten in einer Tabelle ändern
 
Und mein Abfrage Code noch mal
Abfrage 1
PHP-Code:

<?php

function suchstring($text)
{
   return 
strtr(strtolower(trim($text))," äöüß","%%%%%");
}

//Umwandlung der Eingabedaten in Kleinschrift, so das es egal ist
//ob man Groß- oder Kleinbuchstaben eingibt.
$lower_vorgang suchstring($_POST[vorgang]) ;
$lower_wer suchstring($_POST[wer]);
$lower_beginn suchstring($_POST[beginn]);
$lower_ende suchstring($_POST[ende]);
$lower_bemerkung suchstring($_POST[bemerkung]);
$lower_ok suchstring($_POST[ok]);
$lower_erledigt suchstring($_POST[erledigt]);
$lower_zeitaufwandag suchstring($_POST[zeitaufwandag]);
$lower_zeitaufwandwk suchstring($_POST[zeitaufwandwk]);
$lower_aufwtragsdaten_id suchstring($_POST[aufwtragsdaten_id]);
$lower_status_id suchstring($_POST[status_id]);


$msql mysql_query(
"select status_id, vorgang, wer, beginn, ende, bemerkung, erledigt, zeitaufwandag, zeitaufwandwk, auftragsdaten_id
from status
      where lower(status_id) like '%$lower_status_id%'
        and lower(vorgang) like '%$lower_vorgang%'
        and lower(wer) like '%$lower_wer%'
        and lower(beginn) like '%$lower_beginn%'
        and lower(ende) like '%$lower_ende%'
        and lower(bemerkung) like '%$lower_bemerkung%'
        and lower(erledigt) like '%$lower_erledigt%'
        and lower(zeitaufwandag) like '%$lower_zeitaufwandag%'
        and lower(zeitaufwandwk) like '%$lower_zeitaufwandwk%'
        and lower(auftragsdaten_id) like '%$lower_auftragsdaten_id%'
        ORDER BY status_id



order by vorgang, wer, beginn
limit 300"
);
?>

______________________________________________________________________ _
Abfrage 2
PHP-Code:

<?php

include ('db_open.php');

$msql mysql_query(
"select *
from status
where auftragsdaten_id like $_GET[auftragsdaten_id]"
);


include (
'db_close.php');
$rows mysql_fetch_array($msql);

?>

______________________________________________________________________ _
Mein UPDATE
PHP-Code:

<?php

include ('db_open.php');


mysql_query("
UPDATE status
SET
vorgang = '"
.$_POST['vorgang']."',
wer = '"
.$_POST['wer']."',
beginn = '"
.$_POST['beginn']."',
ende = '"
.$_POST['ende']."',
bemerkung = '"
.$_POST['bemerkung']."',
ok = '"
.$_POST['ok']."',
erledigt = '"
.$_POST['erledigt']."',
zeitaufwandag = '"
.$_POST['zeitaufwandag']."',
zeitaufwandwk = '"
.$_POST['zeitaufwandwk']."',
auftragsdaten_id = '"
.$_POST['auftragsdaten_id']."'
WHERE status_id = '"
.$_POST['status_id']."'");

include (
'db_close.php');


?>

es liegt wahrscheinlich an dem, dass ich zuerst in der abfrage 2 nach auftragsdaten_id suche und beim update mich auf status_id beziehe, ich will von den rausgesuchten daten aus der ersten tabelle - in der zweiten nur eine spalte ändern aus vielen!

Ckaos 22.01.2010 09:55:58

AW: bestimmte Daten in einer Tabelle ändern
 
hi

wenn du nur eine spalte updaten willst wieso schreibst du ein update auf so viele?
PHP-Code:

<?php
//Bsp
if(isset($_POST['vorgang'])){
  
$updateext.="vorgang = '".$_POST['vorgang']."',";
}
/*alle anderen */
if(isset($updateext) && isset($_POST['status_id'])){
include (
'db_open.php');
mysql_query("
UPDATE status
SET
"
.substr($updateext,0,-1)."
WHERE status_id = '"
.$_POST['status_id']."'");
include (
'db_close.php');
}else{
  
/*ausgabe wenn kein feld gesetzt*/
}
?>

mfg

Ckaos

wiedenmann 22.01.2010 11:26:57

AW: bestimmte Daten in einer Tabelle ändern
 
hi,

ich hock zurzeit an einer kleinen webanwendung in der ich in der ersten Tabelle (auftragsdaten) eingeben kann. das wird eine 1 Zeile für einen Auftrag. und dann
möchte ich noch information zum auftrag eingeben in Tabelle (status) das sind ca. 4 Zeilen aus der Tabelle
Bsp.
(Auftragsdaten_id)=1 (Status_id)=1
(Status_id)=2
(Status_id)=3

(Auftragsdaten_id)=2 (Status_id)=4
(Status_id)=5
(Status_id)=6

und wenn ich jetzt (auftragsdaten_id)=2 (status_id)=6 ändern möchte, wird es bei den restlichen zeilen auch mit geändert

am besten setzte ich komplett alles schritte nach einander hier ein damit man sehen kann was ich da mach

wiedenmann 22.01.2010 12:02:54

AW: bestimmte Daten in einer Tabelle ändern
 
mein problem beginnt schon beim aufrufen von daten.
ich kann nur immer den selben datensatz aufmachen zum ändern, und wenn ich den abspeicher dann übernimmt es gleich für alle anderen mit!

urvater 22.01.2010 16:20:57

AW: bestimmte Daten in einer Tabelle ändern
 
Zum Update hast du ja schon eine Antwort bekommen, die eigentlich funktionieren sollte. Was mich etwas verwirrt ist folgender Select:
PHP-Code:

$msql mysql_query(
"select status_id, vorgang, wer, beginn, ende, bemerkung, erledigt, zeitaufwandag, zeitaufwandwk, auftragsdaten_id
from status
      where lower(status_id) like '%$lower_status_id%'
        and lower(vorgang) like '%$lower_vorgang%'
        and lower(wer) like '%$lower_wer%'
        and lower(beginn) like '%$lower_beginn%'
        and lower(ende) like '%$lower_ende%'
        and lower(bemerkung) like '%$lower_bemerkung%'
        and lower(erledigt) like '%$lower_erledigt%'
        and lower(zeitaufwandag) like '%$lower_zeitaufwandag%'
        and lower(zeitaufwandwk) like '%$lower_zeitaufwandwk%'
        and lower(auftragsdaten_id) like '%$lower_auftragsdaten_id%'
        ORDER BY status_id



order by vorgang, wer, beginn
limit 300"
); 

Alle Werte werden bei dir zuvor mit function suchstring behandelt und zusätzlich gibst du im Select noch LOWER() an. Ich gehe doch einmal davon aus, daß hier viele Daten auf Zahlen basieren. Die IDs, Beginn und Ende und der Zeitaufwand basieren doch bestimmt auf Zahlen, Datumseingaben und Zeitangaben. Diese Umwandeln bringt eigentlich schon mal nix.
Zusätzlich suchst du per LIKE wo statusid und auftrags_id vorhanden sein muß.
Was willst du mit diesem Select eigentlich erreichen?

wiedenmann 27.01.2010 11:55:51

AW: bestimmte Daten in einer Tabelle ändern
 
ich hab ein kleines Formular erstellt, mit dem ich all die sachen dann aufrufen kann, das ist alles.
mit umwandeln hast du recht, es ist nur einfacher für mich gewesen, diese funktion aus einer früheren arbeit zu kopieren.
mittlerweile hab ich soweit fast alles gemacht. ich dank euch für die hilfe


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:02:31 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.