Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Wstawianie pol do tabeli
skowron-line
post
Post #1





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Witam.
Mam w bazie tabele w ktorej pola nazwy pol to:
Kod
1_0_0
1_2_1
2_0_0
2_2_1
2_3_1
2_4_1
4_0_0
4_1_1
4_2_1

i tak dalej az w nieskonczoność może tego być
i jak teraz chce wstawic pole o nazwie 3_0_0 ale za pole 2_4_1 (nie wiem czy napewno bedzie to to pole)
bo jeżeli bym wiedział to ,to by było proste
  1. ALTER TABLE `tbl_name` ADD COLUMN `3_0_0` tinyint(1) NOT NULL DEFAULT '0' AFTER `2_4_1`

a jeżeli nieznam tego pola po którym chcęwstawić (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


  1. <?php
  2. /* tu jaka kolumne chcesz wstawic */
  3. $doWstawienia = '3_9_1';
  4.  
  5. function mysql_fetch_all($result) {
  6.  while($row=mysql_fetch_array($result)) {
  7.  $return[] = $row;
  8.  }
  9.  return $return;
  10. }
  11. function getVal($str){
  12. $a = explode("_", $str);
  13. $ret = 0;
  14. $count = count($a);
  15. for( $i=$count-1, $j=0; $i>=0; $j=$count-$i, $i--){
  16. $ret += $a[$j] * pow(10,$i);
  17. }
  18. return $ret;
  19. }
  20. $valDoWstawienia = getVal($doWstawienia);
  21. $link = mysql_connect('****', '****', '***')
  22. or die('Connect error: ' . mysql_error());
  23. print ("conected\n");
  24. mysql_select_db("***") or die("db select error: ".mysql_error());
  25. print ("db selected\n");
  26.  
  27. // pobierasz info o tabelach
  28. $res = mysql_query("SHOW FIELDS FROM tbl_name;");
  29. $arrRes = mysql_fetch_all($res);
  30.  
  31. $after = '';
  32. foreach ( $arrRes as $field ){
  33. if ( getVal($field['Field']) < $valDoWstawienia ){
  34. $after = $field['Field'];
  35. } else {
  36. break;
  37. }
  38. }
  39.  
  40. if ( mysql_query("ALTER TABLE `tbl_name` ADD COLUMN `$doWstawienia` tinyint(1) NOT NULL default '0' AFTER `$after` ") ){
  41. echo "Poszlo dobrze";
  42. } else {
  43. echo "cos nie poszlo: ".mysql_error();
  44. }
  45. ?>


PS1: Nie sprawdzałem na warunkach brzegowych, więc ewentualnie sobie popraw jeśli jest jakiś błąd
PS2: Też uważam, że jeśli:
Cytat
i tak dalej az w nieskonczoność może tego być

... w jednej tabeli to znaczy, że można to jakoś inaczej rozwiązać

Pozdrawiam

Ten post edytował Cezar708 4.01.2008, 11:32:44
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 22:16