mtzoumas Δημοσ. 10 Αυγούστου 2010 Δημοσ. 10 Αυγούστου 2010 Καλησπέρα, Έχω φτιάχει μία φόρμα την οποία θέλω να αποθηκεύσω σε 4 διαφορετικούς πίνακες (artists, month_year, track_names και video_links). Το μόνο που μπορώ να αποθηκεύσω είναι ο μήνας και το έτος στον αντίστοιχο πίνακα. Όλοι οι πίνακες έχουν 1 προτεύον πεδίο. Ο artists, ο track_names και ο video_links έχουν 11 πεδία ενώ ο month_year έχει 3. Που μπορεί να ωφειλέται το πρόβλημα της αποθήκευσης; Ο κώδικας της php μου: ><?php $year_top10 = $_POST['year_top10']; $month_top10 = $_POST['month_top10']; for ($i = 1; $i <= 10; $i++) { $artists[$i-1] = serialize($_POST['artist'.$i]); $tracks[$i-1] = serialize($_POST['track'.$i]); $videos[$i-1] = serialize($_POST['video'.$i]); } if(isset($month_top10)) { $con = mysql_connect($servername,$dbusername_top10,$dbpassword_top10); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db($dbname_top10, $con); $sql_art = "INSERT INTO $table_artists (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ($artists[0], $artists[1], $artists[2], $artists[3], $artists[4], $artists[5], $artists[6], $artists[7], $artists[8], $artists[9])"; $result_art = mysql_query($sql_art,$con); $sql_tra = "INSERT INTO $table_tracks (Track1, Track2, Track3, Track4, Track5, Track6, Track7, Track8, Track9, Track10) VALUES ($tracks[0], $tracks[1], $tracks[2], $tracks[3], $tracks[4], $tracks[5], $tracks[6], $tracks[7], $tracks[8], $tracks[9])"; $result_tra = mysql_query($sql_tra,$con); $sql_vi = "INSERT INTO $table_videos(Video1, Video2, Video3, Video4, Video5, Video6, Video7, Video8, Video9, Video10) VALUES ($videos[0], $videos[1], $videos[2], $videos[3], $videos[4], $videos[5], $videos[6], $videos[7], $videos[8], $videos[9])"; $result_vi = mysql_query($sql_vi,$con); mysql_close($con); echo "<b>Epityxeis kataxorisi</b><br />"; } ?>
dewn735 Δημοσ. 10 Αυγούστου 2010 Δημοσ. 10 Αυγούστου 2010 Αν οι μεταβλητές artists, track και video είναι char (και αντίστοιχα και οι στήλες στον πίνακα) θα πρέπει να το κάνεις έτσι: >$sql_art = "INSERT INTO $table_artists (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('$artists[0]', '$artists[1]', '$artists[2]', '$artists[3]', '$artists[4]', '$artists[5]', '$artists[6]', '$artists[7]', '$artists[8]', '$artists[9]')";
mtzoumas Δημοσ. 10 Αυγούστου 2010 Μέλος Δημοσ. 10 Αυγούστου 2010 Τα πεδία των πινάκων είναι char(100) και οι μεταβλητές είναι επίσης κείμενο (πχ artists[0]="sakis"). Τα πεδία του πίνακα month_year είναι tinytext αλλά τους βάζω αριθμό και λειτουργεί.
dewn735 Δημοσ. 10 Αυγούστου 2010 Δημοσ. 10 Αυγούστου 2010 Οι αριθμοί δεν έχουν πρόβλημα σε πεδία τύπου char, όταν όμως βάζεις κάποιο string πρέπει να χρησιμοποιήσεις quotes (") ή single quote ('). Δοκίμασες όπως σου είπα; Επίσης, γιατί χρησιμοποιείς την serialize; Σου δίνει τα αποτελέσματα που θες; Κάνε αυτή την αλλαγή στον κώδικά σου και γράψε το αποτέλεσμα: >for ($i = 1; $i <= 10; $i++) { $artists[$i-1] = serialize($_POST['artist'.$i]);echo "artist".($i-1).": ".$artists[$i-1]."-"; $tracks[$i-1] = serialize($_POST['track'.$i]);echo "track".($i-1).": ".$tracks[$i-1]."-"; $videos[$i-1] = serialize($_POST['video'.$i]);echo "video".($i-1).": ".$videos[$i-1]."<br>"; }
mtzoumas Δημοσ. 10 Αυγούστου 2010 Μέλος Δημοσ. 10 Αυγούστου 2010 ευχαριστώ φίλε για τη βοήθεια σου αλλά ακόμα έχω το ίδιο πρόβλημα. Έχω κάνει ότι μου έχεις πει. Το αποτέλεσμα της μιας echo είναι: artist0: s:15:"Yolanda Be Cool";- artist1: s:4:"Dido";- artist2: s:16:"Denis the Menace";- artist3: s:13:"Dennis Ferrer";- artist4: s:11:"Moonrunners";- artist5: s:5:"Nicko";- artist6: s:9:"Eddy Wata";- artist7: s:12:"Steve Forest";- artist8: s:17:"Kings of tomorrow";- artist9: s:11:"DCA Project";- ---------- Προσθήκη στις 01:57 ---------- Προηγούμενο μήνυμα στις 01:50 ---------- Όταν έβγαλα την serialize() τότε πήρα τα παρακάτω αλλά και πάλι το πρόβλημα δεν λύθηκε. >$artists[$i-1] = $_POST['artist'.$i]; echo "artist".($i-1).": ".$artists[$i-1]."<br>"; artist0: Yolanda Be Cool artist1: Dido artist2: Denis the Menace artist3: Dennis Ferrer artist4: Moonrunners artist5: Nicko artist6: Eddy Wata artist7: Steve Forest artist8: Kings of tomorrow artist9: DCA Project
dewn735 Δημοσ. 10 Αυγούστου 2010 Δημοσ. 10 Αυγούστου 2010 Εάν το δώσεις από phpmyadmin, σου βγάζει κάποιο σφάλμα; Και επίσης, δε βλέπω πουθενά να έχεις δηλώσει τη μεταβλητή $table_artists Δοκίμασε και αυτό: >$sql_art = "INSERT INTO $table_artists (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ($artists[0], $artists[1], $artists[2], $artists[3], $artists[4], $artists[5], $artists[6], $artists[7], $artists[8], $artists[9])"; echo $sql_art; και δώσε πάλι το αποτέλεσμα
mtzoumas Δημοσ. 10 Αυγούστου 2010 Μέλος Δημοσ. 10 Αυγούστου 2010 τρέχω στο phpmyadmin¨ >INSERT INTO artists_top10 (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('Yolanda Be Cool', 'Dido', 'Denis the Menace', 'Dennis Ferrer', Moonrunners', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project') και μου λέει: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')' at line 1 ---------- Προσθήκη στις 02:34 ---------- Προηγούμενο μήνυμα στις 02:31 ---------- Βρήκα το λάθος μου. Μου είχε ξεφύγει ένα '. Τώρα λειτουργεί. Ευχαριστώ για τη βοήθεια και τον χρόνο σου.
dewn735 Δημοσ. 10 Αυγούστου 2010 Δημοσ. 10 Αυγούστου 2010 τρέχω στο phpmyadmin¨ >INSERT INTO artists_top10 (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('Yolanda Be Cool', 'Dido', 'Denis the Menace', 'Dennis Ferrer', Moonrunners', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project') και μου λέει: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project')' at line 1 Αν τσεκάρεις την απάντησή σου, θα δεις ότι έχεις ξεχάσει μερικά quotes... Για τρέξε αυτό: >INSERT INTO artists_top10 (Artist1, Artist2, Artist3, Artist4, Artist5, Artist6, Artist7, Artist8, Artist9, Artist10) VALUES ('Yolanda Be Cool', 'Dido', 'Denis the Menace', 'Dennis Ferrer', 'Moonrunners', 'Nicko', 'Eddy Wata', 'Steve Forest', 'Kings of tomorrow', 'DCA Project') ---------- Προσθήκη στις 02:44 ---------- Προηγούμενο μήνυμα στις 02:36 ---------- Βρήκα το λάθος μου. Μου είχε ξεφύγει ένα '. Τώρα λειτουργεί. Ευχαριστώ για τη βοήθεια και τον χρόνο σου. 2 είναι... (είναι και ένα στο τέλος...) :-D
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.