1e rij uit database verwijderen

Status
Niet open voor verdere reacties.
Geplaatst door JPeetje
@masterprut> Je vergeet dat in de query alleen kolom 'Nieuwsbericht' opgehaald wordt, dus $row->Text is onmogelijk ;)
Maar Danny is d'r zelf al achter gekomen :p

Met een beetje hulp van jou ;)
 
Laatst bewerkt:
He, mij hoor je niet klagen, maar voordat je 't weet ben je voor 'n week gebanned hier :p

@ JP, wist ik al :p, maar dat mag ie zelf wel uitzoeken, maar wat er eerst was, vond ik nogal groot :o
 
OK, daar ben ik weer...gister deed deze code het nog wel, en nu niet meer...en ik kan me niet herinneren er iets in veranderd te hebben...:confused:

PHP:
   // als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is
    if (!$submit || $submit && (!$naam || !$mail || !$msggs || !$onderwerp))
    {
        if ($submit && (!$naam || !$mail || !$msggs || !$onderwerp))
        {
            echo "<p>Je bent je <b>naam</b>, <b>e-mail</b>, <b>onderwerp</b> of <b>bericht</b> vergeten!</p>";
        }
        
        // form + tabel
		echo "<font size='2'><BR><BR>";
        echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>";
        echo "<FORM METHOD=POST ACTION=$PHP_SELF>";
        
        // naam
        echo "<TR><TD><font size='2'>Naam:</TD></TR>";
        echo "<TR><TD><INPUT TYPE=text NAME=naam VALUE=\"$naam\"></TD></TR>";
        
        // space
        echo "<TR><TD><font size='2'>&nbsp;</TD></TR>";
        
        // mail
        echo "<TR><TD><font size='2'>E-mail adres:*</TD></TR>";
        echo "<TR><TD><INPUT TYPE=text NAME=mail VALUE=\"$mail\"></TD></TR>";
        
        // space
        echo "<TR><TD><font size='2'>&nbsp;</TD></TR>";
        
        // mail
        echo "<TR><TD><font size='2'>Onderwerp:</TD></TR>";
        echo "<TR><TD><INPUT TYPE=text NAME=onderwerp VALUE=\"$onderwerp\"></TD></TR>";
        
        // space
        echo "<TR><TD><font size='2'>&nbsp;</TD></TR>";
        
        // mail
        echo "<TR><TD><font size='2'>Bericht:</TD></TR>";
        echo "<TR><TD><TEXTAREA NAME=msggs ROWS=6 COLS=70>$msggs</TEXTAREA></TD></TR>";
        
        // button
        echo "<TR><TD>&nbsp;</TD></TR>";
        echo "<TR><TD><INPUT TYPE=submit NAME=submit VALUE=\"Versturen\"></TD></TR>";
		
		echo "<TR><TD><BR><font size='2'>*zonder een geldig e-mail adres zal het bericht niet worden bekeken!</TD></TR>";
        
        // sluit form + tabel
        echo "</FORM>";
        echo "</TABLE>";
    }
    // versturen naar
    else
    {    
        // set datum
        $datum = date("d.m.Y H:i");
        
        // set ip
        $ip = $REMOTE_ADDR;
		
        $inhoud_mail .= "===================================================\n";
        $inhoud_mail .= "INGEVULD FORMULIER\n";
        $inhoud_mail .= "===================================================\n\n";
        
        $inhoud_mail .= "Naam: $naam\n";
        $inhoud_mail .= "E-mail adres: $mail\n";
        $inhoud_mail .= "Bericht:\n";
        $inhoud_mail .= "$msggs\n\n";
        
        $inhoud_mail .= "Verstuurd op $datum via het ip $ip\n\n";
        
        $inhoud_mail .= "===================================================\n";

$query = "INSERT INTO Ideeën (IdeeUser) VALUES ('$inhoud_mail')";
mysql_query($query) or die("Kon query niet uitvoeren: " . mysql_error());

echo "<meta http-equiv=\"refresh\" content=\"0; url=Ideeenbus.php\" />\n";
echo "<script language=\"JavaScript\">\n"; 
echo "alert('Je bericht is verstuurd!');\n"; 
echo "</script>"; 

    }
 
:r

In de chat is dat een kokhals smile :p

Ik denk dat ik al wet wat er aan de hand is.


$submit. Ik neem aan dat dat de naam van een submit is. Als je dat eens verandert naar $_POST['submit']. Zo ga je dat met elke doen met het schema hieronder:
  • Formulieren => $_POST['naamvandevar']
  • In URL's => $_GET['naamvandevar']

En verderop zie ik ook nog $REMOTE_ADDR. Als je dat soort variablen eens verandert naar $_SERVER['REMOTE_ADDR'].

Wat doe je dan. Zoals dit script geschreven is zou op de server in php.ini 'super_globals' op On moeten staan. Als dit niet werkt is dat niet het geval. Superglobals zijn slecht, bah, b00. Waarom => vraag maar aan JP, nooit gevraagt. Weet alleen dat ie er niet blij mee is als ik dat doe (en ik daarna ook niet :o) :p

Ook bij queries zie ik weer de variablen 'erin' staan. Scheid ze weer eens netjes met het " . $var . " systeem :)

Verder zou ik nog wat aan de 2e regel doen. Ik vind die niet netjes en ongeordend gemaakt.

Ik ben er van uitgegaan dat het allemaal knopjes zijn

PHP:
if((isset($_POST['submit']) == TRUE) || (isset($_POST['naam']) == TRIE) || (isset($_POST['mail']) || if(isset($_POST['msggs']) == TRUE) || (isset($_POST['onderwerp']) == FALSE))

Truste :thumb:
 
Geplaatst door masterprut
Ik ben er van uitgegaan dat het allemaal knopjes zijn

PHP:
if((isset($_POST['submit']) == TRUE) || (isset($_POST['naam']) == TRIE) || (isset($_POST['mail']) || if(isset($_POST['msggs']) == TRUE) || (isset($_POST['onderwerp']) == FALSE))
En $_POST['submit'] is kennelijk een belangrijk invoerveld ?
Nee dus, alleen controleren of de velden die je gaat gebruiken bestaan ;)
Verder, || betekent OR, oftewel jij controleert nu of 1 of meer van die velden bestaan. Toch ben je van plan alle velden te gaan gebruiken, dus moet je ook alle velden controleren.
Ennuh, TRIE ? :rolleyes:

@danny> Tot nu toe heb je in elke post nog $_POST en $_GET gebruikt, waarom kom je nou opeens aangezet zonder die prachtige voorgedefinieerde variabelen ? :(

Als voor die superglobals, het is niet 'super_globals' maar 'register_globals' in php.ini. Vanaf PHP 4.2.0 staat deze standaard uit (haleluja).
Wanneer je $_COOKIE["blaat"] gaat vervangen door $blaat, ben je héél fout bezig. Ook $_SERVER, $_POST, $_GET, $_SESSION, $_ENV en andere superglobals kunnen zo even snel vervangen worden, wat jij dus ook doet met je '$REMOTE_ADDR' en '$submit', '$naam', '$email', etc etc.
Niet alleen is dit slordig, het werkt lang niet op alle servers en het is ook onveilig. Als je een cookie met naam 'blaat' hebt, een sessie met de naam 'blaat', je typt in de adresbalk '?blaat=iets' en je zet binnenin het script
PHP:
echo $blaat;
neer, dan kun je dus van alles als resultaat krijgen. Gebruik gewoon $_COOKIE, $_GET, $_POST en andere superglobals, als je ijverig bent, gebruik dan $HTTP_POST_VARS, $HTTP_COOKIE_VARS en $HTTP_GET_VARS ... maar ga niet door met wat je nu aan het doen bent.

Succes :thumb:
 
Ik geloof dat wij elkaar (of iig ik jullie) niet helemaal goed begrijp...:confused:

Ik heb tot nu toe in iedere post $_POST en $_GET gezet, omdat ik de POST nodig had om een string op te slaan zodat ik deze kon openen in een volgend php document. En GET omdat ik iets nodig had uit de adresbalk.

Dit heb ik nu geen van beide nodig aangezien ik alles nu in 1 document doe: er worden strings ingelezen en meteen opgeslagen.

Verder heb ik deze code niet zelf geschreven, maar voor een groot deel van het internet afgeplukt...daarom snap ik ook niet waarom hij nu ineens niet meer werkt :(

Ik ben er inmiddels wel achter wat er niet werkt: hij schrijft niets naar de database...
 
Laatst bewerkt:
Verrek! Ik heb net de site weer gevonden waarvan ik de code heb...en idd...er moet $_POST voor al die knoppen...:p

Nu werkt ie weer!

Maar ik heb echt geen idee hoe die $_POST nu kon verdwijnen...ik weet zeker dat ik er niets aan veranderd heb.:(

Nou ja...weer een probleem opgelost dankzij jullie!!
 
Weer een probleempje!:(

Ik heb een script gemaakt waarmee je kunt stemmen op een bepaald ding. De stemmen worden opgeslagen in een database:

PHP:
if(isset($_GET["id"]) == FALSE)
  {
  die("Geen ID opgegeven !");
  }

$id = ((int) $_GET["id"]);

$query = "SELECT Vote FROM Ideeën WHERE id = '" . $id . "'";
$result = mysql_query($query) or die("Kon query niet uitvoeren: " . mysql_error());
  if(mysql_num_rows($result) == 0)
  {
  echo "FOUT! Ga terug en probeer het opnieuw!";
  }
  else
  {
    while ($row = mysql_fetch_object($result)) 
    { 
	$tekst = $row->Text;
	$tekst++;
    }
  }
$query = "UPDATE Ideeën SET Vote='".$tekst."' WHERE id = '" . $id . "'";
$result = @mysql_query($query);
  if($result == FALSE)
  {
  echo ("Kon query niet uitvoeren: " . mysql_error());
  }
  elseif(mysql_affected_rows() == 0)
  {
  echo "Je hebt geen geldige ID opgegeven !";
  }
  else
  {
  echo "<meta http-equiv=\"refresh\" content=\"0; url=PIdeeen.php\" />\n";
  echo "<script language=\"JavaScript\">\n"; 
  echo "alert('Gestemd!');\n"; 
  echo "</script>";
  }

Stemmen als het aantal stemmen nog op 0 staat lukt, maar zodra het op 1 staat, krijg ik steeds de error 'Je hebt geen geldige ID opgegeven !'

Waarom krijg ik die error en wat kan ik ertegen doen??
 
Als je error_reporting(E_ALL); bovenaan je script zet, krijg je dan errors ?
 
Yup:

Notice: Undefined property: Text in .../PIdeeenVote.php on line 24
Je hebt geen geldige ID opgegeven !

edit: dat is dus deze regel: $tekst = $row->Text;
 
Laatst bewerkt:
Oh, ik zie net dat hij deze error ook geeft als je van 0 naar 1 stem gaat, alleen krijg ik dan niet het bericht 'Je hebt geen geldige ID opgegeven !' :confused:
 
Al opgelost!:D

Ik heb
PHP:
$query = "SELECT Vote FROM Ideeën WHERE id = '" . $id . "'";
$result = mysql_query($query) or die("Kon query niet uitvoeren: " . mysql_error());
  if(mysql_num_rows($result) == 0)
  {
  echo "FOUT! Ga terug en probeer het opnieuw!";
  }
  else
  {
    while ($row = mysql_fetch_object($result)) 
    { 
    $tekst = $row->Text;
    $tekst++;
    }
  }
$query = "UPDATE Ideeën SET Vote='".$tekst."' WHERE id = '" . $id . "'";

gewoon vervangen door
PHP:
$query = "UPDATE Ideeën SET Vote = Vote+ 1 WHERE id = '" . $id . "'";

Zo simpel...maar toch zo moeilijk...:o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan