Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-07-2011, 17:12   #1 (permalink)
Style Freak
 
Registriert seit: Nov 2004
Ort: Radolfzell
Beiträge: 615
array in mysql speichern.

ich wollte nur kurz fragen wie ich am besten mehrere zeilen, die ich schon via for schleife erstellt habe in die datenbank bekomme.

ich würde das ganze jetzt so machen,
PHP-Code:
$songs=@$_REQUEST['songs'];
for(
$s=1;$s<=$songs;$s++){
       
mysql_query("insert into cd_id (id, cd_id, artist, song, laenge, liste) values ('', '$cdcode', '$artist.$s', '$song.$s', 'laenge.$s', '$s')");

oder gibt es da eine bessere alternative?
__________________
Mit dieser Signatur hast du eben mal so unnötige 4Kb herrunter geladen!
ciberjoerg ist offline   Mit Zitat antworten
Alt 27-07-2011, 19:28   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Was ist $_REQUEST['songs'] und wo kommt das her?
Bitte mal print_r oder var_ dump davon hier reinposten.

Die Schleife wird so nicht funktionieren, das ist dir klar,oder..?

Was sind das andere für Variablen, also cdcode, artist etc. und warum hängst du da teilweise deine Zählvariable s an..?
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 27-07-2011, 19:46   #3 (permalink)
Style Freak
 
Registriert seit: Nov 2004
Ort: Radolfzell
Beiträge: 615
$_reguest['songs'] ist ein zahlenwert der anzeigt wie viele songs in die datenbank gespeichert werden sollen,
die anderen variablen sind variablen aus einem formular. dieses formular sieht wie folgt aus bei 18 songs: artist1 - artist18, song1 - song18 und laenge1- laenge18 diese sollen einfach alle in die datenbank nacheinander eingespeichert werden.

am ende soll es in der db so aussehen:

cdcode | artist1 | song1 | laenge1
cdcode | artist2 | song2 | laenge2
... usw bis 18

der zähler soll in meinem fall eben alle daten in die db speichern da die insert into funktion in einer for schleife liegt.
__________________
Mit dieser Signatur hast du eben mal so unnötige 4Kb herrunter geladen!
ciberjoerg ist offline   Mit Zitat antworten
Alt 27-07-2011, 19:47   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
$_REQUEST ist böse. das geht in die selbe Richtung wie register_globals
$_REQUEST enthält alle einträge aus $_GET, $_POST und $_COOKIE, und kein schwein weiss, wie sich die Einträge da gegenseitig überschreiben.
Zitat:
und warum hängst du da teilweise deine Zählvariable s an..?
ich befürchte das soll das PHP-Pendent zu this['feld'+i] sein.
wenn dem so ist, jörg, stell dringend auf Arrays um!

zu deiner Frage ciberjoerg: schau mal hier rein: MySQLi - Prepared Statements
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 27-07-2011, 19:53   #5 (permalink)
Style Freak
 
Registriert seit: Nov 2004
Ort: Radolfzell
Beiträge: 615
ahh jetzt weis ich was du meinst ja das war mein fehler war nur kurz hingestellt als beispiel der code. natürlich sollen da dann die variablen eingetragen werden.
__________________
Mit dieser Signatur hast du eben mal so unnötige 4Kb herrunter geladen!

Geändert von ciberjoerg (27-07-2011 um 19:54 Uhr)
ciberjoerg ist offline   Mit Zitat antworten
Alt 27-07-2011, 20:25   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ich versteh's nicht ganz – was kann man in das Formular eingeben..?
Verschiedene Titel oder nur einen und dafür dann die Zahl oder was..?

Und übrigens, deine Signatur:
Kb --> kB
herrunter geladen --> heruntergeladen

PS
Thomas hat (natürlich) recht mit $_REQUEST & Co.
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 27-07-2011, 20:27   #7 (permalink)
Style Freak
 
Registriert seit: Nov 2004
Ort: Radolfzell
Beiträge: 615
es sind mehrere titel und so weiter. ich habs inzwischen hinbekommen. mit der variante die ich benutzt habe nur eben zusätzlich eben variablen gesetzt um nicht den insert mit den $sp zu vermüllen
__________________
Mit dieser Signatur hast du eben mal so unnötige 4Kb herrunter geladen!
ciberjoerg ist offline   Mit Zitat antworten
Alt 27-07-2011, 20:41   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ah ja …
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 27-07-2011, 21:01   #9 (permalink)
Style Freak
 
Registriert seit: Nov 2004
Ort: Radolfzell
Beiträge: 615
PHP-Code:
if(isset($_POST['savesong'])){ //2
    
include"../config.php";
        for(
$sp=1;$sp<=$songs;$sp++){    //3    
    
$artist=$_REQUEST['artist'.$sp];
$song=$_REQUEST['song'.$sp];
$laenge=$_REQUEST['laenge'.$sp];

       
mysql_query("insert into songs (id, cd_id, artist, song, laenge, liste) values ('', '$cdcode', '$artist', '$song', '$laenge', '$sp')");

        
    }
    echo 
"Songs wurden Gespeichert!<br>Neue <a href='savecode.php'>CD erstellen</a>?";//3

So mein code zum speichern.


Formular:

PHP-Code:
<form action="savecode.php" method="post">
    <input name="songs" type="hidden" value="<?=$songs?>" />
    <input name="data" type="hidden" value="<?=$cdcode?>" />
    <input name="cdname" type="hidden" value="<?=@$_POST['cdname']?>"/>
    <input name="genre" type="hidden" value="<?=@$_POST['genre']?>"/>
    
<table width="600" border="0">
  <tr>
    <td></td>
    <td>Artist:</td>
    <td>Song:</td>
    <td>Länge:</td>
  </tr>
    <?
for($s=1;$s<=$songs;$s++){ //5
    
?>
    <tr>
    <td><?=$s?></td>
    <td><input name="artist<?=$s?>" type="text" value="<?=@$_POST['artist'.$s]?>" /></td>
    <td><input name="song<?=$s?>" type="text" value="<?=@$_POST['song'.$s]?>" /></td>
    <td><input name="laenge<?=$s?>" type="text" value="<?=@$_POST['laenge'.$s]?>" /></td>
  </tr>

</table>
<input type="submit" name="savesong" value="Speichern">
</form>
__________________
Mit dieser Signatur hast du eben mal so unnötige 4Kb herrunter geladen!
ciberjoerg ist offline   Mit Zitat antworten
Alt 27-07-2011, 21:57   #10 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
sowas hier:
PHP-Code:
    <input name="songs" type="hidden" value="<?=$songs?>" />
    <input name="data" type="hidden" value="<?=$cdcode?>" />
    <input name="cdname" type="hidden" value="<?=@$_POST['cdname']?>"/>
    <input name="genre" type="hidden" value="<?=@$_POST['genre']?>"/>
gehört in die Session, und sollte nicht dauernd hin und hergeschickt werden

PHP-Code:
$artist=$_REQUEST['artist'.$sp];
$song=$_REQUEST['song'.$sp];
$laenge=$_REQUEST['laenge'.$sp];
       
mysql_query("insert into songs (id, cd_id, artist, song, laenge, liste) values ('', '$cdcode', '$artist', '$song', '$laenge', '$sp')"); 
$_REQUEST ist immer noch mist, zumal du sonst überall mit $_POST arbeitest. wieso hier nicht?
und nichts was vom Benutzer kommt ungeprüft in die Session oder DB schicken. nie nie nie!!!
An der Stelle kommt dir mysqli_stmt::bind_param sehr entgegen, weil es u.a. Sonderzeichen automatisch maskiert. Oder google mal nach "SQL injection".

<? und <?= wird nicht von jedem Server verstanden/unterstützt. Das kommt u.a. auf die Serverkonfiguration an.

wieso zählst du die id überhaupt in deinem INSERT-Query auf, wenn du sie eh leer lässt und auf auto_increment setzt (was ja auch richtig ist)?

du weisst, dass du an ein insert-query eine beliebeige Anzahl an Values anhängen kannst? lediglich mit etwas String-Verketten. so musst du nicht x Anfragen an die DB senden.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 27-07-2011, 22:09   #11 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
mysql_query() in eine Schleife zu packen ist eine schlechte Idee wenn es denn nicht unbedingt sein muss. Mehrere Zeilen können per Kommata getrennt in die Datenbank geschrieben werden!

PHP-Code:
//Test-Array
$test_array = array(
     array( 
'key1' => 'val1''key2' => 'val2''key3' => 'val3''key4' => 'val4''key5' => 'val5' ),
     array( 
'key1' => 'val1''key2' => 'val2''key3' => 'val3''key4' => 'val4''key5' => 'val5' ),
     array( 
'key1' => 'val1''key2' => 'val2''key3' => 'val3''key4' => 'val4''key5' => 'val5' ),
     array( 
'key1' => 'val1''key2' => 'val2''key3' => 'val3''key4' => 'val4''key5' => 'val5' ),
     array( 
'key1' => 'val1''key2' => 'val2''key3' => 'val3''key4' => 'val4''key5' => 'val5' )
);

$query_str = array();
//Hier die Schlaufe zum erstellen des Query-Strings

foreach( $test_array AS $test ){

     
$query_str[] = "( '".$val1."', '".$val2."', '".$val3."', '".$val4."', '".$val5."' )";

}

//Und nun die Query mit den Werten zum EIntragen mittels implode():

mysql_query"INSERT INTO `test` ( `key1`, `key2`, `key3`, `key4`, `key5`) VALUES ".implode$query_str"," )." " ) or die( mysql_error() ); 
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array in MySQL Datenbank speichern FaTaL-eRoR PHP und MySQL 3 29-04-2007 11:16
Flash-Array in mysQl-DB speichern .:lay-z-cow:. Flash und Datenbanken 4 11-01-2007 21:13
[MYSQL] array in Feld speichern alexpetri PHP und MySQL 6 15-09-2004 22:22
Ganze mySQL-Zeilen in Array speichern Nightflyer PHP und MySQL 4 05-08-2004 01:09
Array an mysql senden und speichern komashooter PHP und MySQL 1 28-12-2003 12:45


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele