[PHP] Tekst in database en aanpassen in database

Status
Niet open voor verdere reacties.
Nu krijg deze error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Chout\CMS\indexverwerk.php on line 12
Er is een fout opgetreden bij het toevoegen!
De query: INSERT INTO indextabel VALUES('Werkt het? \r\n \r\n')
MySQL melding: Column count doesn't match value count at row 1
 
PHP:
<?php    

include('cmsconfig.php');   

//Enige juiste manier om te controleren of een formulier is verzonden! 
if($_SERVER['REQUEST_METHOD'] == "POST") { 
  if(empty($_POST['indextekstingeven'])) { 
    echo "U heeft geen tekst opgegeven!"; 
  } else { 
    $checkQuery = "SELECT indexondertabel, wijzig FROM indextabel"; 
    $checkResult = mysql_query($checkQuery); 
    $num = mysql_num_rows($checkResult); //Controleren of er al een rij is...   
    if($num >0){ // Er bestaat een rij 
      $updateQuery = "UPDATE indextabel SET wijzig='". mysql_real_espace_string($_POST['indextekstingeven']) ."'"; 
      $updateResult = mysql_query($updateQuery); 
      if(!$updateResult) { 
        echo 'Er is een fout opgetreden bij het aanpassen!<br /> 
                 De query: <b>'. $updateQuery .'</b><br /> 
                 MySQL melding: '. mysql_error(); 
      } else { 
        echo "Tekst gewijzigd."; 
      } 
    } else { // Er bestaat geen rij 
      $insertQuery = "INSERT INTO indextabel VALUES('". mysql_real_escape_string($_POST['indextekstingeven']) ."')"; 
      $insertResult = mysql_query($insertQuery); 
      if(!$insertResult) { 
        echo 'Er is een fout opgetreden bij het toevoegen!<br /> 
                 De query: <b>'. $insertQuery .'</b><br /> 
                 MySQL melding: '. mysql_error(); 
      } else { 
        echo "Tekst toevoegd."; 
      } 
    } 
  } 
} else {
  echo 'Directe toegang is niet toegestaan!';
}
Als het goed is zijn nu al mijn fouten er uit :o k wordt aardig moe van mijzelf :(
 
Ik krijg terug deze foutmelding:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Chout\CMS\indexverwerk.php on line 12
Er is een fout opgetreden bij het toevoegen!
De query: INSERT INTO indextabel VALUES('Werkt het? \r\n \r\n')
MySQL melding: Column count doesn't match value count at row 1

Ligt het niet aan de mysql tabel???
 
Ligt het niet aan de mysql tabel???

Dan gaan we dat even checken :)
Ik zie geen fout bij de code…
PHP:
<?php     

include('cmsconfig.php');    

//Enige juiste manier om te controleren of een formulier is verzonden!  
if($_SERVER['REQUEST_METHOD'] == "POST") {  
  if(empty($_POST['indextekstingeven'])) {  
    echo "U heeft geen tekst opgegeven!";  
  } else {  
    $checkQuery = "SELECT indexondertabel, wijzig FROM indextabel";  
    $checkResult = mysql_query($checkQuery);
    if(!$checkResult) {
       echo 'Er is een fout opgetreden bij het opvragen!<br />  
               De query: <b>'. $checkQuery .'</b><br />  
               MySQL melding: '. mysql_error();
    } else {
      $num = mysql_num_rows($checkResult); //Controleren of er al een rij is...    
      if($num >0){ // Er bestaat een rij  
        $updateQuery = "UPDATE indextabel SET wijzig='". mysql_real_espace_string($_POST['indextekstingeven']) ."'";  
        $updateResult = mysql_query($updateQuery);  
        if(!$updateResult) {  
          echo 'Er is een fout opgetreden bij het aanpassen!<br />  
                   De query: <b>'. $updateQuery .'</b><br />  
                   MySQL melding: '. mysql_error();  
        } else {  
          echo "Tekst gewijzigd.";  
        }  
      } else { // Er bestaat geen rij  
        $insertQuery = "INSERT INTO indextabel VALUES('". mysql_real_escape_string($_POST['indextekstingeven']) ."')";  
        $insertResult = mysql_query($insertQuery);  
        if(!$insertResult) {  
          echo 'Er is een fout opgetreden bij het toevoegen!<br />  
                   De query: <b>'. $insertQuery .'</b><br />  
                   MySQL melding: '. mysql_error();  
        } else {  
          echo "Tekst toevoegd.";  
        }  
      }  
    }
  }  
} else { 
  echo 'Directe toegang is niet toegestaan!'; 
}
Als het aan de database ligt krijg je "Er is een fout opgetreden bij het opvragen!"
 
Fout opgelost.

Maar nu geeft hij dit:

Er is een fout opgetreden bij het toevoegen!
De query: INSERT INTO indextabel VALUES('Werkt het \r\n \r\n')
MySQL melding: Column count doesn't match value count at row 1

Het dat niet te maken met die onderspaties die ik wilde?
 
Laatst bewerkt:
Het is opgelost.

Je had dit geschreven:

mysql_real_espace_string

In plaats van:

mysql_real_escape_string

Wil je de pagina voor de index weer te geven nog eens posten?
Want die dat eerder in het topic stond werkt niet.

Ik heb nu eens verwijderd wat er in de velden indexondertabel en wijzig stond.
En als ik nu iets wil toevoegen geeft hij dit:

Er is een fout opgetreden bij het toevoegen!
De query: INSERT INTO indextabel VALUES(' \r\n \r\n')
MySQL melding: Column count doesn't match value count at row 1
 
Laatst bewerkt:
Van wat ik uit de foutmelding kan lezen (heb niet het hele topic gelezen, sry) heeft je tabel 'indextabel' vermoedelijk meer dan 1 veld.
Als jij dan uitvoert
Code:
INSERT INTO indextabel VALUES(' \r\n \r\n')
geef je 1 waarde op die moet ingevoerd worden, alleen weet je database niet in welk veld..
De juiste syntax is
Code:
INSERT INTO tabelnaam(veldnaam1, veldnaam2) VALUES('waarde1', 'waarde2')
probeer dus eens om na indextabel tussen haakjes de naam van het juiste veld te plaatsen.
 
Heb nu dit en het werkt niet:

PHP:
<?php      

include('cmsconfig.php');     

//Enige juiste manier om te controleren of een formulier is verzonden!   
if($_SERVER['REQUEST_METHOD'] == "POST") {   
  if(empty($_POST['indextekstingeven'])) {   
    echo "U heeft geen tekst opgegeven!";   
  } else {   
    $checkQuery = "SELECT indexondertabel, wijzig FROM indextabel";   
    $checkResult = mysql_query($checkQuery); 
    if(!$checkResult) { 
       echo 'Er is een fout opgetreden bij het opvragen!<br />   
               De query: <b>'. $checkQuery .'</b><br />   
               MySQL melding: '. mysql_error(); 
    } else { 
      $num = mysql_num_rows($checkResult); //Controleren of er al een rij is...     
      if($num >0){ // Er bestaat een rij   
        $updateQuery = "UPDATE indextabel SET wijzig='". mysql_real_escape_string($_POST['indextekstingeven']) ."'";   
        $updateResult = mysql_query($updateQuery);   
        if(!$updateResult) {   
          echo 'Er is een fout opgetreden bij het aanpassen!<br />   
                   De query: <b>'. $updateQuery .'</b><br />   
                   MySQL melding: '. mysql_error();   
        } else {   
          echo "Tekst gewijzigd.";   
        }   
      } else { // Er bestaat geen rij   
        $insertQuery = "INSERT INTO indextabel(indexondertabel, wijzig) VALUES('". mysql_real_escape_string($_POST['indextekstingeven']) ."')";   
        $insertResult = mysql_query($insertQuery);   
        if(!$insertResult) {   
          echo 'Er is een fout opgetreden bij het toevoegen!<br />   
                   De query: <b>'. $insertQuery .'</b><br />   
                   MySQL melding: '. mysql_error();   
        } else {   
          echo "Tekst toevoegd.";   
        }   
      }   
    } 
  }   
} else {  
  echo 'Directe toegang is niet toegestaan!';  
} 
?>
 
Wat zou er in het veld "indexondertabel" moeten komen dan?
PHP:
$indexondertabel = ""; // Hier invullen wat ik boven vraag
$insertQuery = "INSERT INTO indextabel(indexondertabel, wijzig) VALUES('". $indexondertabel ."','". mysql_real_escape_string($_POST['indextekstingeven']) ."')";
Elk veld dat je bij een INSERT specificeert moet je ook een waarde geven (Tenzij je hem in de database de optie "NULL" hebt meegegeven dacht ik)

Hier vindt je een voorbeeld van een juiste INSERT.
 
Je hebt in je databasetabel "indextabel" twee velden aanmaakt toch?

De ene heet indexondertabel en de ander wijzig, wat wil je in het veld "indexondertabel" opslaan? Van "wijzig" weten we dat je daar iets van tekst in opslaat.

Als je dat andere veld steeds leeg laat dan kun je die net zo goed verwijderen omdat hij dan geen nut heeft.

Is het zo iets duidelijker? :)
 
Wat doe je dan met het veld "indexondertabel"?
 
Sorry,

Dit was de tabel die ik eerst had:

CREATE TABLE `indextabel` (
`indexondertabel` TEXT NOT NULL
) ENGINE = InnoDB

Wil jij hier dat extra veld aan toevoegen?

Dat heb jij eerder gezegd, maar in je query had je toen een veld "wijzig".
Daar vanuitgaande begreep ik dat je dus het veld "indexondertabel" al ergens voor gebruikte en dat je een extra veld aan moest maken omdat je in je queries het veld "wijzig" gebruikte.

Maar goed, als je dus "indexondertabel" niet gebruikt dan kun je die in phpMyAdmin wel weggooien.
(Database selecteren > Tabel selecteren > bij "indexondertabel" het rode kruisje aanklikken)

Dan wordt je code zo:
indexverwerk.php
PHP:
<?php       

include('cmsconfig.php');      

//Enige juiste manier om te controleren of een formulier is verzonden!    
if($_SERVER['REQUEST_METHOD'] == "POST") {    
  if(empty($_POST['indextekstingeven'])) {    
    echo "U heeft geen tekst opgegeven!";    
  } else {    
    $checkQuery = "SELECT wijzig FROM indextabel";    
    $checkResult = mysql_query($checkQuery);  
    if(!$checkResult) {  
       echo 'Er is een fout opgetreden bij het opvragen!<br />    
               De query: <b>'. $checkQuery .'</b><br />    
               MySQL melding: '. mysql_error();  
    } else {  
      $num = mysql_num_rows($checkResult); //Controleren of er al een rij is...      
      if($num >0){ // Er bestaat een rij    
        $updateQuery = "UPDATE indextabel SET wijzig='". mysql_real_escape_string($_POST['indextekstingeven']) ."'";    
        $updateResult = mysql_query($updateQuery);    
        if(!$updateResult) {    
          echo 'Er is een fout opgetreden bij het aanpassen!<br />    
                   De query: <b>'. $updateQuery .'</b><br />    
                   MySQL melding: '. mysql_error();    
        } else {    
          echo "Tekst gewijzigd.";    
        }    
      } else { // Er bestaat geen rij    
        $insertQuery = "INSERT INTO indextabel(wijzig) VALUES('". mysql_real_escape_string($_POST['indextekstingeven']) ."')";    
        $insertResult = mysql_query($insertQuery);    
        if(!$insertResult) {    
          echo 'Er is een fout opgetreden bij het toevoegen!<br />    
                   De query: <b>'. $insertQuery .'</b><br />    
                   MySQL melding: '. mysql_error();    
        } else {
          echo "Tekst toevoegd.";    
        }
      }
    }
  }
} else {
  echo 'Directe toegang is niet toegestaan!';
}
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan