Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php, mysql] Dlaczego tworzy dwa rekordy?
Forum PHP.pl > Forum > Przedszkole
david069
Mógłby mi ktoś wytłumaczyć fenomen tego że za każdym razem tworzy dwa rekordy w bazie (jeden poprawny (z poprawnymi danymi) i drugi zupełnie pusty) podczas jednego zapytania.
Kod
if($ev=='dodaj')
   {
   echo pl('<form action="index.php?p=admin&ev=dodane" method="post">
       Data:<input type="text" name="data">
      Url obrazka:<input type="text" name="image">
      Tekst:<input type="text" name="tekst">
     <input type="submit" value="Dodaj"></form>');
   }
  
   if($ev=='dodane')
   {
   $data=$_POST['data'];
   $image=$_POST['image'];
   $tekst=$_POST['tekst'];
   //echo $data.$image.$tekst;
  
   $sql=mysql_query("INSERT INTO `events` (`data`, `image`, `tekst`) VALUES ('$data', '$image', '$tekst')");
  
   if(!$sql)
   echo pl('Bład podczas dodawania eventu');
   else
   echo('<b>Event został dodany poprawnie</b>');
   }

Kod
id int(11) auto_increment
   data varchar(40)
   image varchar(200)
   tekst varchar(200)
erix
A $ev skąd się bierze? snitch.gif

PS. Do php jest dostępny odpowiedni bbcode.
david069
Stąd:
$ev=$_GET['ev'];
Jakby nie spełniało warunku ev to by nie dodawało do bazy w ogólne rekordu... A dodaje poprawny tylko że dwa na raz (drugi pusty) mógłbym go zawsze automatycznie zaraz usunąć no ale nie w tym rzecz...
erix
Cytat
(jeden poprawny (z poprawnymi danymi) i drugi zupełnie pusty) podczas jednego zapytania.

Cytat
A dodaje poprawny tylko że dwa na raz (drugi pusty)

W takiej kolejności, czy na odwrót?

Nie include" title="Zobacz w manualu PHP" target="_manual'ujesz tego pliku gdzieś drugi raz? Czy to jest cały skrypt?
damian.1923
witam

proponuję zmienić kolejność i zastosować "else if"

Kod
</P><P>if ($ev==$_GET['dodane'])</P><P>{</P><P>// polecenia SQL</P><P>}</P><P>else if($ev=='dodaj') // lub samo else</P><P>{</P><P>// teraz dopiero formularz</P><P>}</P><P>




pozdrawiam.



sorry, jeszcze raz:

if ($ev==$_GET['dodane'])

{

// polecenia SQL

}

else if($ev=='dodaj') // lub samo else

{

// teraz dopiero formularz

}
david069
Cytat(erix @ 13.02.2009, 23:06:39 ) *
W takiej kolejności, czy na odwrót?

Nie include" title="Zobacz w manualu PHP" target="_manual'ujesz tego pliku gdzieś drugi raz? Czy to jest cały skrypt?

Nie nie cały index.php ma ponad 1000 linijek to są tylko eventsy które jako jedyne nie działają, ponieważ na tym samym sposobie są newsy, strony, linki itd. z samego admin.php:
$o=$_GET['o'];
$lm=$_GET['lm'];
$li=$_GET['li'];
$id=$_GET['id'];
$ps=$_GET['ps'];
$ap=$_GET['ap'];
$ev=$_GET['ev'];
ale tylko tutaj dodaje podwójnie, nie mam pojęcia dlaczego, kopiowany jest ten sam kod co przy innych, zmienione jak zawsze to samo ale tylko tutaj tworzy dwa rekordy na raz.
Co do kolejności to tak, najpierw dodaje ten z uzupełnionymi polami a potem z pustymi.
No i wyszukiwałem właśnie czy nie zdublowałem gdzieś ale zrobiłem chyba najprostszy i najskuteczniejszy test zamieniłem linjkę:
Kod
$sql=mysql_query("INSERT INTO `events` (`data`, `image`, `tekst`) VALUES ('$data', '$image', '$tekst')");

na:
Kod
//$sql=mysql_query("INSERT INTO `events` (`data`, `image`, `tekst`) VALUES ('$data', '$image', '$tekst')");

i nie dodaje nic (ani jednego rekordu (czyli tak jak powinno)). Wystarczy że usunę slashe i przy tych samych danych przy tym samym formluarzu i reszcie dodaje automatycznie 2 rekordy.

damian.1923 mam właśnie w takiej kolejności
najpierw mam
if($li=='usuniete')
sql
if($li=='zmienione')
sql
if($ev=='dodane')
sql
...
if($li=='usun')
if($li=='edytuj')
if($ev=='dodaj')
...
no i tu formularze

W takiej kolejności właśnie wszystko jest no i wszystko działa, tylko właśnie przy tym tak sie dzieje, no i mówię dam w komentarz, 0 rekordów utworzy, usunę komentarz od razu 2 rekordy.
Dziś już nie mam czasu ale jutro jeszcze muszę spróbować takie rzeczy jak usunąć całkiem tą tabele i stworzyć nową pozmieniać nazwy zmiennych itp, może gdzieś się coś zdublowało bo nie dzielę tego na pliki żeby dużo nie otwierać i prawie 700 linijek mam w admin.php więc można coś przeoczyć.

Omg sciana.gif
Dopiero teraz zauważyłem że dodaje w każdej opcji w newsach, linkach itd i winą nie jest nic z panelu a tylko i wyłącznie wyświetlanie tych eventsów, co też ciekawe dlaczego, nie wiem co tu jest takiego niezwykłego:
Kod
/*
            $sqlev=mysql_query("SELECT `data`, `image`, `tekst` FROM `events`");
                
                $it=0;
                while($event=mysql_fetch_row($sqlev))
                    {
                    if($it)
                    echo('*****************<br><br>');
                    echo('<b>'.$event[0].'</b><br><br>
                    <img src="'.$event[1].'"><br><br>
                    '.$event[2].'<br><br>');
                    $it++;
                    } */


Przepraszam za ten temat no ale jak go zakładałem byłem w 100% przekonany że dzieje się tak tylko przy dodawaniu eventsów!
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.