Piccolo problema Php Access

venerdì 19 giugno 2009 - 13.13

tomas801 Profilo | Junior Member

Salve a tutti
Ho un piccolo problema con questo script funziona tutto tranne l'inserimento dati nel db mi da errore linea 47... invece se devo modificare funziona perfetto
poteve provarlo e dirmi cosa non va
grazie in anticipo

alx_81 Profilo | Guru

>Salve a tutti
ciao

>Ho un piccolo problema con questo script funziona tutto tranne
>l'inserimento dati nel db mi da errore linea 47... invece se
>poteve provarlo e dirmi cosa non va
ehm.. quale script?

>grazie in anticipo
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

tomas801 Profilo | Junior Member

sono un genio ...
ecco il file

alx_81 Profilo | Guru

fai una bella print della stringa che componi prima di eseguire il comando e postala.
inoltre posta anche il messaggio di errore che ricevi.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

tomas801 Profilo | Junior Member

ecco l'errore:

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for ODBC Drivers<br/><b>Description:</b> [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query 'id ='.' in C:\xampp\htdocs\lavori\accessconnect\modify.php:47 Stack trace: #0 C:\xampp\htdocs\lavori\accessconnect\modify.php(47): com->execute('UPDATE clienti ...') #1 {main} thrown in C:\xampp\htdocs\lavori\accessconnect\modify.php on line 47

tomas801 Profilo | Junior Member

C6 ANCORA? (NON X FARTI FRETTA SOLO X SAPERE SE CI 6)

alx_81 Profilo | Guru

>C6 ANCORA? (NON X FARTI FRETTA SOLO X SAPERE SE CI 6)
ero a pranzo.
Ascolta, potresti postarmi l'update che vai a creare? come ti dice l'errore c'è un errore di sintassi..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

tomas801 Profilo | Junior Member

non capisco...
io ho provato lo script in locale se mofico i campi funziona.
se invece voglio inserire mi da quell'errore

alx_81 Profilo | Guru

>non capisco...
devi passarmi la stringa che crei quando vai a fare le istruzioni sql dinamiche. Così vediamo dove sta l'errore "Errore di sintassi (operatore mancante) nell'espressione della query".
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

tomas801 Profilo | Junior Member

questo è il primo file (guarda anke a fine pagina)
?php
require_once("config.php");

$cn = new COM("ADODB.Connection");
$cnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".
realpath(DBNAME).";";
$cn->open($cnStr);
$rs = $cn->execute("SELECT * FROM ".DBTBL);
$numFields = $rs->Fields->count;

// Print HTML
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml">';
echo '<head>';
echo '<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />';
echo '<title>Prova dati con MS Access</title>';
echo '<link href="styles.css" rel="stylesheet" type="text/css" />';
echo '</head><body>';
echo '<h1>GESTIONE '.DBTBL.'</h1>';
// Elenca records -----
echo ("<table class='datatable' summary='Prova dati con MS Access'>");
echo("<caption>Tabella ".DBTBL."</caption>\n");
echo("<thead><tr>\n");
for ($i=0;$i<$numFields;$i++){
echo("<th scope='col'>");
echo $rs->Fields($i)->name;
echo("</th>\n");
}
echo("</tr></thead>\n");
echo("<tbody>");

$alt = false;
while (!$rs->EOF)
{
echo("<tr>");
for ($i=0;$i<$numFields;$i++){
$altClass = $alt ? " class='alt'" : "";
if (LINKPK && $i==PKCOL){
echo "<td".$altClass."><a href='?id=".$rs->Fields($i)->value
."'>".$rs->Fields($i)->value."</a></td>\n";
}
else{
echo "<td".$altClass.">".$rs->Fields($i)->value."</td>\n";
}
}
echo("</tr>\n");
$rs->MoveNext();
$alt = !$alt;
}
echo("</tbody>");
echo("</table>\n");
echo ("<p>[ <a href='?ins=1'>Inserimento nuovo record</a> ]</p>");
// Modifica record -----
if (!empty($_GET['id'])){
$id = intval($_GET['id']);
$rs = $cn->execute("SELECT * FROM ".DBTBL." WHERE ".PKNAME."=".$id);
echo ("<form action='modify.php' method='post'>");
echo ("<fieldset>");
echo ("<legend>Modifica record</legend>");
for ($i=0;$i<$numFields;$i++){
if (LINKPK && $i==PKCOL){
echo ("<label for='".$rs->Fields($i)->name."'>"
.$rs->Fields($i)->name."</label>");
echo ("<input type='text' readonly='readonly' name='"
.$rs->Fields($i)->name."' value=\""
.$rs->Fields($i)->value."\" /><br />\n");
}
else {
echo ("<label for='".$rs->Fields($i)->name."'>"
.$rs->Fields($i)->name."</label>");
echo ("<input type='text' name='".$rs->Fields($i)->name."' value=\""
.$rs->Fields($i)->value."\" /><br />\n");
}
}
echo ("<button type='submit' name='azione' value='modifica'>Modifica</button>");
echo ("<button class='affiancato' type='submit'
name='azione' value='cancella'>Cancella</button>");
echo ("</fieldset></form>");
}
// Inserimento record -----
elseif (!empty($_GET['ins'])){
echo ("<form action='modify.php' method='post'>");
echo ("<fieldset>");
echo ("<legend>Inserimento record</legend>");
for ($i=0;$i<$numFields;$i++){
if ($i!=PKCOL){
echo ("<label for='".$rs->Fields($i)->name."'>"
.$rs->Fields($i)->name."</label>");
echo ("<input type='text' name='".$rs->Fields($i)->name."' /><br />\n");
}
}
echo ("<button type='submit' name='azione' value='inserisci'>Inserisci</button>");
echo ("<br />");
}
echo '</body></html>';
$rs->Close();
$cn->Close();
?>
cliccando su inserisci lui apre quest'altro file:
<?php
require_once("config.php");
//Gestione delle richieste POST
$cn = new COM("ADODB.Connection");
$cnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".
realpath("./fatture.mdb").";";
$cn->open($cnStr);

if ($_POST['azione']=="cancella"){
$query = "DELETE from ".DBTBL." WHERE ".PKNAME." = ".$_POST[PKNAME];
}
elseif ($_POST['azione']=="inserisci"){
$query = "INSERT INTO ".DBTBL." ";
$fieldlist = "(";
$valuelist = "(";
foreach($_POST as $key => $val) {
if ($key<>PKNAME && $key<>'azione'){
if (!empty($val)){
$fieldlist .= $key.", ";
$val = str_replace("'","''",stripslashes($val));
$valuelist .= "'".$val."', ";
}
}
}
$fieldlist = substr($fieldlist, 0, -2);
$valuelist = substr($valuelist, 0, -2);
$fieldlist .= ") VALUES ";
$valuelist .= ")";
$query .= $fieldlist.$valuelist;
}
else{
$query = "UPDATE ".DBTBL." SET ";
foreach($_POST as $key => $val) {
if ($key<>PKNAME && $key<>'azione'){
if (!empty($val)){
$val = str_replace("'","''",stripslashes($val));
$query .= $key."='".$val."', ";
}
else{
$query .= $key."=NULL, ";
}
}
}
$query = substr($query, 0, -2);
$query .= " WHERE ".PKNAME." = ".$_POST[PKNAME];
}
$rs = $cn->execute($query);
header ("Location: ./test.php");
?>
la stringa ke mi kiedi è quella dove c'e' la faccina

alx_81 Profilo | Guru

>la stringa ke mi kiedi è quella dove c'e' la faccina
no, non è quella.. stampa direttamente sulla pagina il valore della variabile.
devo vedere il comando che vai a generare dinamicamente!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

tomas801 Profilo | Junior Member

cosa devo fare esattamente
xdona l'ignoranza

alx_81 Profilo | Guru

>cosa devo fare esattamente
devi scrivere sulla tua pagina il contenuto della variabile che passi al comando. Quella che viene eseguita sul database. Non conosco php, ma credo esista una funzione echo con la quale tu puoi stampare a video il contenuto di una variabile. fai echo della variabile che contiene l'istruzione SQL, capito?

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5