Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL]
Forum PHP.pl > Forum > Przedszkole
InzaghiX
Witam. Mam problem taki, stworzyłem instrukcje for gdzie określam ilość jaką chce aby się wyświetlała pewnego kodu w pliku form.php. Są to pola name= adres,host,part. Obecnie w tabeli mam utworzone tylko dla jednego tego typu pól,lecz zrobiłem właśnie instrukcje for by móc wpisywac po kilka takich zestawień. Może przedstawie to graficznie.


Plik. form.php


  1. <form action="insert.php" method="POST">
  2.  <table border="0">
  3. <tr><td colspan=1><h6>Dział:</h6></td><td><select name="rodzaj">
  4. <option value="" > </option>
  5. <option value="napisy" >Napisy</option>
  6. <option value="lektor">Lektor</option>
  7. <option value="serial">Serial</option>
  8. <option value="animowane">Animowane</option>
  9. <option value="polskie">Polskie</option>
  10. <option value="xxx">XXX</option></select></td></tr>
  11.  
  12. <tr><td colspan=1><h6>Dla kogo:</h6></td><td><select name="typ">
  13. <option></option>
  14. <option><font color=white>Dla Przyjaciół</font></option>
  15. <option>Dla Wszystkich</option></td></tr>
  16. <tr><td>
  17. <h6>Tytul</h6>
  18. </td><td> 
  19. <input type="text" name="tytul" maxlenght="30" size="60">
  20. </td></tr>
  21.  <tr><td><h6>Opis:<br>Maximum<br>1000 liter </h6></td><td> <textarea name="opis" rows="8" cols="60"></textarea></td></tr></table>
  22. <table border=0 width=300px>
  23.  
  24. <tr>
  25. <tr><td colspan=4><h6>Wybierz serwer</h6></td><td colspan=1><h6>Part:</h6></td>
  26. <td colspan=1><h6>Adres</h6></td></tr>
  27.  
  28. <?
  29.  
  30. for($i = 0; $i < $_POST['link']; $i++)
  31.  
  32. { echo ' <tr><td colspan=4>
  33. <select name="host">
  34. <option value="" > </option>
  35. <option value="Filefront" >Filefront</option>
  36. <option value="Filehostia">Filehostia</option>
  37. <option value="Verzend.be">Verzend.be</option>
  38. <option value="Netload.ie">Netload.ie</option>
  39. <option value="2xUpload.to">2xUpload.to</option>
  40. <option value="UPLOADED.to">UPLOADED.to</option>
  41. <option value="FILECRUNCH.com">FILECRUNCH.com</option>
  42. <option value="SENDSPACE.pl">SENDSPACE.pl</option>
  43. <option value="UPLOADING.com">UPLOADING.com</option></select></td>
  44.  
  45. <td>
  46. <select name="part">
  47. <option value="" > </option>
  48. <option value="Part1">Part1</option>
  49. <option value="Part2">Part2</option>
  50. <option value="Part3">Part3</option>
  51. <option value="Part4">Part4</option>
  52. <option value="part5">Part5</option></select></td>
  53. <td>
  54. <input type="text" name="adres" maxlenght="30" size="30"></td></tr>';}
  55.  
  56. ?>


Gdzie teraz przy wpisaniu wartości dla zmiennej $_POST['link'] = 4 będzie powtarzany 4 krotnie taki kod. I teraz jak zrobic by po wypełnieniu tych 4 duplikatów zapisać to do bazy, w jaki sposób? Zapisuje poprzez plik insert.php gdzie później w tym pliku wywołać zależnośc do wykonaniu ALTER COLUMN (przynajmniej tak mi się wydaje , że gdy będzie więcej niż jedno zestawienie to utworzy dodatkowe kolumny) by dodac dodadkowe dane bo w tym przypadku co teraz widzimy do bazy zapisuje się tylko ostatnia pola formularza adres,host,part.

plik insert.php

  1. <?php
  2. @$tytul = $_POST['tytul'] ;
  3. @$opis = $_POST['opis'] ;
  4. @$host = $_POST['host'] ;
  5. @$adres = $_POST['adres'] ;
  6. include "inc/dblink.php" ; 
  7.  
  8. $link = @mysql_connect( $CFG->dbhost,$CFG->dbuser,$CFG->dbpass );
  9. mysql_select_db( $CFG->dbname, $link );
  10. $result=mysql_query( "INSERT INTO kino.filmy (`id`,`rodzaj`,`tytul`,`opis`,`host`,`part`,`adres`,`typ`) VALUES (NULL,'$rodzaj', '$tytul', '$opis', '$host','$part','$adres', '$typ'); " , $link);
  11. mysql_close($link);
  12.  
  13.  
  14.  
  15. $zmienna="index.php";
  16. header("Location: $zmienna"); 
  17.  ?>
gutek84
Po co chcesz w ogole dodawac jakies kolumny do tabeli w bazie, wszystko ci sie rozsypie! Z tego co sie domyslam chcesz miec u siebie link do poszczegolnych partow jakiegos pliku. Wiec polecam zrobic tabele zbiorcza tzn. w jednej tabeli masz id_pliku nazwa_pliku itd. a w tabeli zbiorczej robisz np. id_pliku, link_do_pliku. W ten sposob nie musisz dodawac kolumn do tabeli!

Moze napisz co dokladnie chcialbys osiagnac! To moze ktos Ci wtedy pomoze
arecki
Po pierwsze pozamieniaj name="host", name="part", name="adres" na name="host[]", name="part[]", name="adres[]" i zamiast ostatniej wartości dostaniesz tablice wszystkich wartości. Później zrób INSERTa dla każdej z wartości otrzymanej i powinno działać.
InzaghiX
Zrobiłem więc do pętli for zmienną $i przy name host adres i part... lecz teraz nie wczytuje mi tego do bazy...
Pierwszą część kodu wczytuje czyli rodzaj itd. ale ten z hostem itd. już nie chce.

formularz.php

  1. <form action="insert.php" method="POST">
  2.  <table class="obr1" border="0">
  3.  <tr><td colspan=1><h6>Dział:</h6></td><td><select name="rodzaj">
  4. <option value="" > </option>
  5. <option value="napisy" >Napisy</option>
  6. <option value="lektor">Lektor</option></select></td></tr>
  7.  
  8.  
  9.  <tr><td><h6>Tytul</h6></td><td><input type="text" name="tytul" maxlenght="30" size="60"></td></tr>
  10.  </table>
  11. <table border="0" >
  12.  
  13. <tr>
  14.  <tr><td colspan=4><h6>Wybierz serwer</h6></td><td colspan="1"><h6>Part:</h6></td>
  15. <td colspan="1"><h6>Adres</h6></td></tr>
  16.  
  17. <?php 
  18.  
  19.  for($i = 0; $i < $_POST['link']; $i++)
  20.  
  21.  { 
  22.  
  23.  
  24. echo ' <tr><td colspan=4>
  25.  <select name="host'.$i.'">
  26.  <option value="" > </option>
  27.  <option value="Filefront" >Filefront</option>
  28.  <option value="Filehostia">Filehostia</option>
  29.  <option value="Verzend.be">Verzend.be</option>
  30.  <option value="Netload.ie">Netload.ie</option>
  31.  <option value="2xUpload.to">2xUpload.to</option>
  32.  <option value="UPLOADED.to">UPLOADED.to</option>
  33.  <option value="FILECRUNCH.com">FILECRUNCH.com</option>
  34.  <option value="SENDSPACE.pl">SENDSPACE.pl</option>
  35.  <option value="UPLOADING.com">UPLOADING.com</option></select></td>
  36.  
  37. <td> 
  38.  <select name="part'.$i.'">
  39.  <option value="" > </option>
  40.  <option value="Part1">Part1</option>
  41.  <option value="Part2">Part2</option>
  42.  <option value="Part3">Part3</option>
  43.  <option value="Part4">Part4</option>
  44.  <option value="part5">Part5</option></select></td>
  45. <td> 
  46.  <input type="text" name="adres'.$i.'" value="'.$i.'" maxlenght="30" size="30"></td></tr>';}
  47.  
  48. ?> 
  49.  
  50.  
  51. <tr><td colspan="3"><input type="submit" value="Wczytaj do Bazy!" name="wyslij"></td></tr>
  52.  </table>
  53.  </form>



A tutaj jest ten nieszczęśliwy insert


  1. <?php
  2. @$rodzaj = $_POST['rodzaj'] ;
  3. @$tytul = $_POST['tytul'] ;
  4. @$host[$i] = $_POST['host'] ;
  5. @$adres[$i] = $_POST['adres'] ;
  6. @$part[$i] = $_POST['part'] ;
  7.  
  8. include "inc/dblink.php" ;
  9.  
  10. $link = @mysql_connect( $CFG->dbhost,$CFG->dbuser,$CFG->dbpass );
  11. mysql_select_db( $CFG->dbname, $link );
  12. $result=mysql_query( "INSERT INTO nauka.film (`id`,`rodzaj`,`tytul`) VALUES (NULL,'$rodzaj', '$tytul'); " , $link);
  13. mysql_affected_rows();
  14. mysql_close($link);
  15.  
  16.  
  17. $link = @mysql_connect( $CFG->dbhost,$CFG->dbuser,$CFG->dbpass );
  18. mysql_select_db( $CFG->dbname, $link );
  19. $result=mysql_query( "INSERT INTO nauka.linki (`id_link`,`host`,`part`,`adres`) VALUES (NULL,'$host[$i]', '$part[$i]','$adres[$i]'); " , $link);
  20. mysql_affected_rows();
  21. mysql_close($link);
  22.  
  23.  
  24.  
  25. $zmienna="index.php";
  26. header("Location: $zmienna");
  27. ?>


Probowałem i tak i tak w różne sposoby ale nie wychodzi.
arecki
Chyba nie do końca zrozumiałeś co miałem na myśli. Przeanalizuj to:
  1. <html>
  2. <head>
  3. <title>multiform test</title>
  4. </head>
  5. <body>
  6. <?
  7. if ($_POST) {
  8. foreach ($_POST['autor'] as $autor) {
  9. echo 'Przesłany autor : '.$autor.'<br/>';
  10. }
  11. } else {
  12. ?>
  13. <form action="multiform.php" method="post">
  14. <input type="text" name="autor[]" value=""/><br/>
  15. <input type="text" name="autor[]" value=""/><br/>
  16. <input type="text" name="autor[]" value=""/><br/>
  17. <input type="submit" value="send"/>
  18. </form>
  19. <?
  20. }
  21. ?>
  22. </body>
  23. </html>
InzaghiX
Aha. Czyli rozumiem, że moje wysiłki które zaprezentowałem w drugim przykładzie kodów są nadaremne, bo nie da się tego zrobić ? Może niepowiedziałem najważniejszego:) Ten linki będą do tego samego pliku tylko różne źródła , to nie jest tylko by przechować linki. One muszą później się połączyć z tym rodzajem i tytułe itd. z którym zostały wysłane... więc co robie źle w moim przykładzie że wogole się to niezapisuje do bazy ?
arecki
Szczerze powiedziawszy to nic a nic nie wyciągnąłeś wniosków z tego co Ci napisałem. Porównaj swój przykład z moim i pomyśl. Nie na darmo człowiek jest zwierzęciem rozumnym. Sprawdź co dostajesz wysyłając formularz a później dopiero przypisuj to do zmiennych i wstawiaj do bazy bo z tego co widzę to nie wpisuje Ci danych bo niby skąd ma je wziąć.... np. nie ma zmiennej $_POST['host'] smile.gif
InzaghiX
Widzę, że w teorii to jestes obkuty ... no ale jak sama nazwa działu wskasuje przedszkole:) więc pomógłbyś smile.gif jak bede chciał sama teorie to pojde na studia:) a tak pozatym to zmieniam na różne sposoby kod i nic nie idzie nawet troche. Nie będe tu wszystkich przykładów walił np.


  1. <?php
  2. PLIK formularz
  3. 1 metoda <select name="part[]">
  4. 2 metoda <select name="part[$i]"> 
  5. 3 metoda <select name="part'[$i]'">
  6. ?>



  1. <?php
  2. PLIK insert
  3. 1 metoda @$part = $_POST['part[]'];
  4. 2 metoda @$part = $_POST['part'.$i.'']; 
  5. 3 metoda @$part = $_POST['part[.$i.]'];
  6. ?>



Nic nie działa , niemam już pomysłów i nerwów , więc prosiłbym jasno i klarownie o podanie rozwiązania.
arecki
A Ja widzę że jesteś leniwy i nie chcesz wyciągnąć wniosków z podanego rozwiązania. Wystarczyło pogłówkować. Ale niech będzie. Jako że przedszkole to masz po raz pierwszy i ostatni ode mnie gotowca smile.gif

  1. <form action="insert.php" method="POST">
  2. <table class="obr1" border="0">
  3. <tr><td colspan=1><h6>Dział:</h6></td><td><select name="rodzaj">
  4. <option value="" > </option>
  5. <option value="napisy" >Napisy</option>
  6. <option value="lektor">Lektor</option></select></td></tr>
  7.  
  8.  
  9. <tr><td><h6>Tytul</h6></td><td><input type="text" name="tytul" maxlenght="30" size="60"></td></tr>
  10. </table>
  11. <table border="0" >
  12.  
  13. <tr>
  14. <tr><td colspan=4><h6>Wybierz serwer</h6></td><td colspan="1"><h6>Part:</h6></td>
  15. <td colspan="1"><h6>Adres</h6></td></tr>
  16.  
  17. <?php
  18. for($i = 0; $i < $_POST['link']; $i++) {
  19. echo ' <tr><td colspan=4>
  20. <select name="host['.$i.']">
  21. <option value="" > </option>
  22. <option value="Filefront" >Filefront</option>
  23. <option value="Filehostia">Filehostia</option>
  24. <option value="Verzend.be">Verzend.be</option>
  25. <option value="Netload.ie">Netload.ie</option>
  26. <option value="2xUpload.to">2xUpload.to</option>
  27. <option value="UPLOADED.to">UPLOADED.to</option>
  28. <option value="FILECRUNCH.com">FILECRUNCH.com</option>
  29. <option value="SENDSPACE.pl">SENDSPACE.pl</option>
  30. <option value="UPLOADING.com">UPLOADING.com</option></select></td>
  31.  
  32. <td>
  33. <select name="part['.$i.']">
  34. <option value="" > </option>
  35. <option value="Part1">Part1</option>
  36. <option value="Part2">Part2</option>
  37. <option value="Part3">Part3</option>
  38. <option value="Part4">Part4</option>
  39. <option value="part5">Part5</option></select></td>
  40. <td>
  41. <input type="text" name="adres['.$i.']" value="'.$i.'" maxlenght="30" size="30"></td></tr>';
  42. }
  43.  
  44. ?>
  45.  
  46.  
  47. <tr><td colspan="3"><input type="submit" value="Wczytaj do Bazy!" name="wyslij"></td></tr>
  48. </table>
  49. </form>


  1. <?php
  2. @$rodzaj = $_POST['rodzaj'] ;
  3. @$tytul = $_POST['tytul'] ;
  4. @$host = $_POST['host'] ;
  5. @$adres = $_POST['adres'] ;
  6. @$part = $_POST['part'] ;
  7.  
  8. include "inc/dblink.php" ;
  9.  
  10. $link = @mysql_connect( $CFG->dbhost,$CFG->dbuser,$CFG->dbpass );
  11. mysql_select_db( $CFG->dbname, $link );
  12. $result=mysql_query( "INSERT INTO nauka.film (`id`,`rodzaj`,`tytul`) VALUES (NULL,'$rodzaj', '$tytul'); " , $link);
  13.  
  14. for ($i=0; $i<count($host); $i++) {
  15. $result=mysql_query( "INSERT INTO nauka.linki (`id_link`,`host`,`part`,`adres`) VALUES (NULL,'$host[$i]', '$part[$i]','$adres[$i]'); " , $link);
  16. }
  17. mysql_close($link);
  18.  
  19.  
  20. $zmienna="index.php";
  21. header("Location: $zmienna");
  22. ?>
-InzaghiX-
Hmm dzieki za wielką pomoc:) Ja się nad tym męczyłem tydzien i nic nie zrobiłem smile.gif Lecz coś jest nie tak smile.gif

  1. <?php
  2. @$host = $_POST['host'];
  3. @$adres = $_POST['adres'];
  4. @$part = $_POST['part'];
  5.  
  6.  
  7. include "inc/dblink.php" ; 
  8.  
  9.  
  10. {
  11. $link = @mysql_connect( $CFG->dbhost,$CFG->dbuser,$CFG->dbpass );
  12. mysql_select_db( $CFG->dbname, $link );
  13.  
  14. for ($i=0; $i<count($host); $i++) {
  15. $result=mysql_query( "INSERT INTO nauka.linki (`id_link`,`host`,`part`,`adres`) VALUES (NULL,'$host[$i]', '$part[$i]','$adres[$i]'); " , $link)
  16. or die( mysql_error());
  17. mysql_close($link); 
  18. }
  19. }
  20.  
  21.  ?>


Wyskakuje błąd :

Warning: mysql_query(): 3 is not a valid MySQL-Link resource in C:\Program Files\WebServ\httpd\nauka\insert.php on line 15


Hmm.. zmieniłem na $_POST['part[$i]']; itd... ale teraz już nie wyskakuje nic smile.gif lecz nic nie zapisuje sie sad.gif
arecki
Ty chyba nie umiesz czytać ze zrozumieniem. Teraz to już musisz sobie sam poradzić. Masz źle przepisane z kodu który ci przesłałem ale nie powiem w którym miejscu. Sam musisz dojść... Takie ćwiczenie na myślenie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.