Stringname aus String-Werte erstellen

pippolino

Angesehenes Mitglied
Hallo

Ich sollte aus einem Wert "lastname" den Stringname "$lastname" erstellen, in dem bereits Daten abgelegt sind:

Ich erstelle dynamisch ein Formular in dem der Name dynamisch eines INPUT dynamisch erstellt wird:

$fieldsattributes[3] = array ("lastname","Last Name","0","INPUT");
....
for ($j = 0; $j<mysql_num_rows($qry); $j++) {
for ($k = 0; $k<mysql_num_fields($qry); $k++) {
//figures out if its the ROWID
if($fieldsattributes[$k][2]=="1"){
$rid=mysql_result($qry,$j, $k);
}


<INPUT type=TEXT name='" . $fieldsattributes[$k][0] . "' ...

Will ich den eingegebenen Wert in die Column lastname abspeichern, so muss ich den Wert (also in unserem Falle $lastname) im SQL-Statment erwähnen:

$sql = 'UPDATE `'.$table.'` SET ';

for ($k = 0; $k<mysql_num_fields($qry); $k++) {
//figures out if its the ROWID
if($fieldsattributes[$k][2]=="1"){
$rid=mysql_result($qry,$j, $k);
}



$sql .= ' `'.$fieldsattributes[$k][0].' = \''.??????.'\',';
}
$sql .= ' WHERE `user_id` = \''.$rid.'\' LIMIT 1 ;';


bei ????? müsste ich den String in "$".$fieldsattributes[$k][0] abspeichern.

Ich weiss, das klingt vielleicht nicht so verständlich, aber ich versuchs trotzdem hier zu posten. Weiss da jemand Rat?

Grüsse

P
 
Hoi Pipolino,

Kannst du dein ganzes script posten?

Wenn ich dich richtig verstanden habe, willst du die wert von column lastname in dein table durch $lastname aktualisieren, oder?

falls es so ist, kannst du so probieren.

$sql .= ".$fieldsattributes[$k][0]." = '".$lastname."';

übrigens ist $lastname = $_POST['lastname']; ???

Gruss
- Steven
 
wenn du die string "$lastname" so wie es ist hinzufügen möchtest dann...

wenn $lastname = liechti dann wird "$liechti" gespeichert

$sql .= ".$fieldsattributes[$k][0]." = '$".$lastname."';

oder

$sql .= ".$fieldsattributes[$k][0]." = '$".$fieldsattributes[$k][0]."';

"$lastname" ???
 
Hallo,

Untenstehend das Scripts:


<?php
//----------------------------------------------------------INDIVIDUAL DATA - do edit -
$View_Name="All Users";//Name der View im Titel Bar
$Detail_View_Address="user_detail_view.php";//Name der View, die aufgerufen werden soll, wenn man auf Edit klickt
$table = "XXXXXXXX";//Tabellenname
$sql_restr=" WHERE id=$id";//wenn die Suche eingegrenzt werden soll, dann muss „ WHERE...“ eingegeben werden
$sql_sort="";//Wenn sortiert werden soll, kann hier die Sortierkriterien eingegeben werden „ ORDER ...“

//Hier werden alle Felder angegeben, die in der Liste angezeigt werden
//[x][0]=Zelle in der Tabelle | x][1]=Titel, der anzgezeigt werden soll | x][2]=Ob es sich um die ROW_ID handelt (nur einer darf 1 haben, rest alle 0) | x][3]=Gibt an, wie das Feld angezeigt werden soll
$fieldsattributes[0] = array ("id","No","1","INPUT");
$fieldsattributes[1] = array ("login","Login","0","INPUT");
$fieldsattributes[2] = array ("first_name","First Name","0","INPUT");
$fieldsattributes[3] = array ("last_name","Last Name","0","INPUT");
$fieldsattributes[4] = array ("email","Email","0","INPUT");


//----------------------------------------------------------INDIVIDUAL DATA - stop edit -

include"./includes/detail_applet.inc";//Aufruf des Applets, wo die Anzeigefunktion drin ist. (table_applet.inc und demnächst detail_applet.inc)

?>



D E T A I L A P P L E T . I N C

<?
//----------------------------------------------------------CREATE THE SELECT STATEMENT

//$test= array_count_values ($fieldsattributes);


for($no_of_values = 0; $no_of_values < count($fieldsattributes); $no_of_values++) {
$detail = explode("|", $fieldsattributes[$no_of_values]);

}


for ($i = 0; $i<$no_of_values; $i++) {
$fields.=$fieldsattributes[$i][0].", ";
}
$fields=substr($fields, 0, -2);
$qry = mysql_query("SELECT ".$fields." FROM ".$table." ".$sql_restr." ".$sql_sort, $link);


//---------------------------------------------------------RESET
if ($Reset){
$webadmin_activity_notes='<p><font color=\'#0000FF\'>Der Datensatz wurde zurückgesetzt!</font>';
}
//---------------------------------------------------------SAVE
if ($Save){
$sql = 'UPDATE `'.$table.'` SET ';

for ($k = 1; $k<mysql_num_fields($qry); $k++) {
//figures out if its the ROWID
if($fieldsattributes[$k][2]=="1"){
$rid=mysql_result($qry,$j, $k);
}
//HIER SEIN PROBLEM:
// $sql .= " `".$fieldsattributes[$k][0]."` = '".$fieldsattributes[$k][0]."', ";
$sql .= " `".$fieldsattributes[$k][0]."` = '$".$fieldsattributes[$k][0]."', ";

}
$sql=substr($sql, 0, -2);
$sql .= ' WHERE `user_id` = \''.$rid.'\' LIMIT 1 ;';


$resultat =mysql_db_query($db,$sql);

if (!$resultat) {
$webadmin_activity_notes='<p><font color=\'#FF0000\'>ACHTUNG: Der Datensatz wurde NICHT gespeichert!</font>'.$sql;
}
if ($resultat) {
$webadmin_activity_notes='<p><font color=\'#008000\'>Der Datensatz wurde erfolgreich gespeichert!</font>';
}
}



//---------------------------------------------------------CREATE FORM
echo"<form name='contact_detail' method='POST'>";
//---------------------------------------------------------TOOLBAR
echo"<table border=0 cellspacing='0' width='100%'>";
echo" <tr>";
echo" <td class=list_applet_td_title>";
echo" <p><b>$View_Name</b></p>";
echo" </td>";
echo" <tr>";
echo"</table>";

//----------------------------------------------------------DETAIL
echo"<table border='0' width='100%'>";
echo" <tr>";
//----------------------------------------------------------LEFT COLUMN
echo" <td width='48%' valign='top' align='left'>";

// NOTES
echo" <table border='0' width='100%' style='border: 1 solid #B5B5B5; padding-top: 0'>";


for ($j = 0; $j<mysql_num_rows($qry); $j++) {
for ($k = 0; $k<mysql_num_fields($qry); $k++) {
//figures out if its the ROWID
if($fieldsattributes[$k][2]=="1"){
$rid=mysql_result($qry,$j, $k);
}
echo" <tr>";

echo" <td>";
echo" <p><b>" . $fieldsattributes[$k][1] . "<br> </b></p>";
echo" </td>";



echo" <td>";
echo" <p><INPUT type=TEXT name='" . $fieldsattributes[$k][0] . "' value='" . mysql_result($qry,$j, $k) . "' size=30 ></p>";
echo" </td>";


}
echo" </tr>";


}


echo" </table>";


echo" </td>";

//----------------------------------------------------------CENTER COLUMN SPACER
echo" <td width='4%' valign='top' align='left'> </td>";

echo" <td width='48%' valign='top' align='left'>";
//----------------------------------------------------------RIGHT COLUMN
echo" </td>";
echo" </tr>";

//----------------------------------------------------------SPACER
echo" <tr>";
echo" <td width='100%' colspan='3'> </td>";
echo" </tr>";
//----------------------------------------------------------BUTTON BAR
echo" <tr>";
echo" <td colspan=3 align='right'";
echo"<p>$webadmin_activity_notes      ";
echo"<input class='button' type='submit' name='Save' value='save' size='40'>";
echo"  <input class='button' type='submit' name='Reset' value='reset' size='40'></p>";
echo" </td>";
echo" </tr>";
echo"</table>";

echo"</form>";
?>
 
Betreffend

QUOTE $sql .= ".$fieldsattributes[$k][0]." = '$".$last_name."';


-> das wäre ja dann nicht mehr dynamisch, wenn ich $lastname einfügen will
-> ich will zwar für "fieldsattributes[3][0]" $last_name, für "fieldsattributes[2][0]" aber $first_name.


=> Es also darum, wie ich "$first_name", "$last_name",... dynamisch erstellen kann und als String-Name mit String-Wert ($first_name="Pippolino"), nicht aber als String-Wert ("$first_name").



QUOTE $sql .= ".$fieldsattributes[$k][0]." = '$".$fieldsattributes[$k][0]."';


-> Dann speichert er mir in der DB einfach "$last_name"


Trotzdem vielen Dank für die Bemühungen
smile.gif
 
Ich hab die Lösung gefunden:

habe folgenden Teil ersetzt:

//HIER SEIN PROBLEM:
// $sql .= " `".$fieldsattributes[$k][0]."` = '".$fieldsattributes[$k][0]."', ";
$sql .= " `".$fieldsattributes[$k][0]."` = '$".$fieldsattributes[$k][0]."', ";



mit:


$variable=$fieldsattributes[$k][0];
$sql .= " `".$fieldsattributes[$k][0]."` = '".$$variable."', ";



VIELEN DANK :-]
 
QUOTE
$variable=$fieldsattributes[$k][0];
$sql .= " `".$fieldsattributes[$k][0]."` = '".$$variable."', ";


Habe ich bis jetzt noch nie gesehen oder gebraucht
smile.gif


Ist das nicht gleich als:

$sql .= " `".$fieldsattributes[$k][0]."` = '".$$fieldsattributes[$k][0]."' ??

Gruss
- Steven
 
Klar, Du hast natürlich recht... bin auch selber drauf gekommen... wollte nur so rasch wie möglich diesen Threat schliessen. Wäre doch dumm, wenn ich die Lösung hätte und jemand da weiter für mich sucht... und ich dann sagen müsste, sorry, aber ich hab die Lösung schon vor ner Stunde gefunde... egal.... Danke

if ($Save){
$sql = 'UPDATE `'.$table.'` SET ';

for ($k = 0; $k<mysql_num_fields($qry); $k++) {
//figures out if it is the ROWID and store it for further purposes
if($fieldsattributes[$k][2]=="1"){
$rid=mysql_result($qry,$j, $k);
}
if($fieldsattributes[$k][2]<>"1"){
$sql .= " `".$fieldsattributes[$k][0]."` = '".$$fieldsattributes[$k][0]."' , ";
}
}


---
$fieldsattributes[$k][2] = 1 -> Primary Key
$fieldsattributes[$k][2] = 0 -> Not a Primary Key



 
Zurück
Oben