Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: errore.

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115

    errore.

    Potreste aiutarmi a trovare l'errore? Io non ci riesco!
    questo script carica dei dati e li carica bene, dovrei anche poterli cancellare e non li cancella.
    L'errore che mi dà è il seguente:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on)' at line 3.

    e questo è lo script:


    <?php
    require 'include/db.inc.php';

    $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Unable to connect. Check your connection parameters.');
    mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

    switch ($_POST['action']) {

    case 'Add Character':

    // escape incoming values to protect database
    $alias = mysql_real_escape_string($_POST['alias'], $db);
    $real_name = mysql_real_escape_string($_POST['real_name'], $db);
    $address = mysql_real_escape_string($_POST['address'], $db);
    $city = mysql_real_escape_string($_POST['city'], $db);
    $state = mysql_real_escape_string($_POST['state'], $db);
    $zipcode_id = mysql_real_escape_string($_POST['zipcode_id'], $db);
    $alignment = ($_POST['alignment'] == 'good') ? 'good' : 'evil';

    // add character information into database tables
    $query = 'INSERT IGNORE INTO comic_zipcode
    (zipcode_id, city, state)
    VALUES
    ("' . $zipcode_id . '", "' . $city . '", "' . $state . '")';
    mysql_query($query, $db) or die (mysql_error($db));

    $query = 'INSERT INTO comic_lair
    (lair_id, zipcode_id, address)
    VALUES
    (NULL, "' . $zipcode_id . '", "' . $address . '")';
    mysql_query($query, $db) or die (mysql_error($db));

    // retrieve new lair_id generated by MySQL
    $lair_id = mysql_insert_id($db);
    $query = 'INSERT INTO comic_character
    (character_id, alias, real_name, lair_id, alignment)
    VALUES
    (NULL, "' . $alias . '", "' . $real_name . '", ' .
    $lair_id . ', "' . $alignment . '")';
    mysql_query($query, $db) or die (mysql_error($db));

    // retrieve new character_id generated by MySQL
    $character_id = mysql_insert_id($db);
    if (!empty($_POST['powers'])) {
    $values = array();
    foreach ($_POST['powers'] as $power_id) {
    $values[] = sprintf('(%d, %d)', $character_id, $power_id);
    }
    $query = 'INSERT IGNORE INTO comic_character_power
    (character_id, power_id)
    VALUES ' .
    implode(',', $values);
    mysql_query($query, $db) or die (mysql_error($db));
    }

    if (!empty($_POST['rivalries'])) {
    $values = array();
    foreach ($_POST['rivalries'] as $rival_id) {
    $values[] = sprintf('(%d, %d)', $character_id, $rival_id);
    }

    // alignment will affect column order
    $columns = ($alignment = 'good') ? '(hero_id, villain_id)' :
    '(villain_id, hero_id)';

    $query = 'INSERT IGNORE INTO comic_rivalry
    ' . $columns . '
    VALUES
    ' . implode(',', $values);
    mysql_query($query, $db) or die (mysql_error($db));
    }

    $redirect = 'list_characters.php';
    break;

    case 'Delete Character':

    // make sure character_id is a number just to be safe
    $character_id = (int)$_POST['character_id'];

    // delete character information from tables
    $query = 'DELETE FROM c, l
    USING
    comic_character c, comic_lair l
    WHERE
    c.lair_id = l.lair_id AND
    c.character_id = ' . $character_id;
    mysql_query($query, $db) or die (mysql_error($db));

    $query = 'DELETE FROM comic_character_power
    WHERE
    character_id = ' . $character_id;
    mysql_query($query, $db) or die (mysql_error($db));

    $query = 'DELETE FROM comic_rivalry
    WHERE
    hero_id = ' . $character_id . ' OR villain_id = ' . $character_id;
    mysql_query($query, $db) or die (mysql_error($db));

    $redirect = 'list_characters.php';
    break;

    case 'Edit Character':

    // escape incoming values to protect database
    $character_id = (int)$_POST['character_id'];
    $alias = mysql_real_escape_string($_POST['alias'], $db);
    $real_name = mysql_real_escape_string($_POST['real_name'], $db);
    $address = mysql_real_escape_string($_POST['address'], $db);
    $city = mysql_real_escape_string($_POST['city'], $db);
    $state = mysql_real_escape_string($_POST['state'], $db);
    $zipcode_id = mysql_real_escape_string($_POST['zipcode_id'], $db);
    $alignment = ($_POST['alignment'] == 'good') ? 'good' : 'evil';

    // update existing character information in tables
    $query = 'INSERT IGNORE INTO comic_zipcode
    (zipcode_id, city, state)
    VALUES
    ("' . $zipcode_id . '", "' . $city . '", "' . $state . '")';
    mysql_query($query, $db) or die (mysql_error($db));

    $query = 'UPDATE comic_lair l, comic_character c
    SET
    l.zipcode_id = ' . $zipcode_id . ',
    l.address = "' . $address . '",
    c.real_name = "' . $real_name . '",
    c.alias = "' . $alias . '",
    c.alignment = "' . $alignment . '"
    WHERE
    c.character_id = ' . $character_id . ' AND
    c.lair_id = l.lair_id';
    mysql_query($query, $db) or die (mysql_error($db));

    $query = 'DELETE FROM comic_character_power
    WHERE
    character_id = ' . $character_id;
    mysql_query($query, $db) or die (mysql_error($db));

    if (!empty($_POST['powers'])) {
    $values = array();
    foreach ($_POST['powers'] as $power_id) {
    $values[] = sprintf('(%d, %d)', $character_id, $power_id);
    }
    $query = 'INSERT IGNORE INTO comic_character_power
    (character_id, power_id)
    VALUES
    ' . implode(',', $values);
    mysql_query($query, $db) or die (mysql_error($db));
    }

    $query = 'DELETE FROM comic_rivalry
    WHERE
    hero_id = ' . $character_id . ' OR villain_id = ' . $character_id;
    mysql_query($query, $db) or die (mysql_error($db));

    if (!empty($_POST['rivalries'])) {
    $values = array();
    foreach ($_POST['rivalries'] as $rival_id) {
    $values[] = sprintf('(%d, %d)', $character_id, $rival_id);
    }

    // alignment will affect column order
    $columns = ($alignment = 'good') ? '(hero_id, villain_id)' :
    '(villain_id, hero_id)';

    $query = 'INSERT IGNORE INTO comic_rivalry
    ' . $columns . '
    VALUES
    ' . implode(',', $values);

    mysql_query($query, $db) or die (mysql_error($db));
    }

    $redirect = 'list_characters.php';
    break;

    case 'Delete Selected Powers':

    if (!empty($_POST['powers'])) {
    // escape incoming values to protect database-- they should be numeric
    // values, but just to be safe
    $powers = implode(',', $_POST['powers']);
    $powers = mysql_real_escape_string($powers, $db);

    // delete powers
    $query = 'DELETE FROM comic_power
    WHERE
    power_id IN (' . $powers . ')';
    mysql_query($query, $db) or die (mysql_error($db));

    $query = 'DELETE FROM comic_character_power
    WHERE
    power_id IN (' . $powers . ')';
    mysql_query($query, $db) or die (mysql_error($db));
    }

    $redirect = 'edit_power.php';
    break;

    case 'Add New Power':

    // trim and check power to prevent adding blank values
    $power = trim($_POST['new_power']);
    if ($power != '')
    {
    // escape incoming value
    $power = mysql_real_escape_string($power, $db);

    // create new power
    $query = 'INSERT IGNORE INTO comic_power
    (power_id, power)
    VALUES
    (NULL, "' . $power . '")';
    mysql_query($query, $db) or die (mysql_error($db));
    }

    $redirect = 'edit_power.php';
    break;

    default:
    $redirect = 'list_characters.php';
    }

    header('Location: ' . $redirect);
    ?>

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115
    Scusate se insisto
    Forse non ho spiegato bene la situazione.
    Questo è uno script che ho scaricato dal sito dell'editore e quanto pare ha un errore che io non riesco a trovare, immagino che fra di voi ci sono persone in grado di aiutarmi.
    è uno script che carica dei dati su un database e lo fà bene infatti i dati ci sono nel database. Quando cerco di cancellarli dalla stessa pagina con cui li ho caricati mi viene fuori quell'errore in riga tre, ma in riga tre non c'è niente e poi l'inizio dello script è la parte del collegamento se errore ci dovrebbe essere dovrebbe essere molto più giù.
    Se volete vi posto l'altra pagina.
    Grazie

  3. #3
    modifica questo così cme ho scritto io e dovrebbe andare
    Codice PHP:
    case 'Delete Selected Powers':

        if (!empty(
    $_POST['powers'])) {
            
    // escape incoming values to protect database-- they should be numeric
            // values, but just to be safe
            
    $powers implode(','$_POST['powers']);
            
    $powers mysql_real_escape_string($powers$db);

            
    // delete powers
            
    $query "DELETE FROM comic_power 
                WHERE 
                    power_id IN ('" 
    $powers "')";
            
    mysql_query($query$db) or die (mysql_error($db));

            
    $query "DELETE FROM comic_character_power 
                WHERE
                    power_id IN ('" 
    $powers "')";
            
    mysql_query($query$db) or die (mysql_error($db));
        }

        
    $redirect 'edit_power.php';
        break; 

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115
    l'errore non viene più ma i dati rimangono nel database, non li cancella.
    ciao.

  5. #5
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    E' possibile che la variabile $_POST['powers'] non sia valorizzata quindi quel pezzo di codice non viene eseguito, prova a mettere all'inizio della pagina un

    echo $_POST['powers'];

    e vedi se stampa qualcosa, se non stampa niente verifica che la pagina che contiene il form habbia un campo con nome powers e che questo sia valorizzato.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115
    Non sembra che sia quello il problema, ho provato e mi da questo errore:
    Array
    Warning: Cannot modify header information - headers already sent by (output started at C:\htdocs\comics\char_transaction.php:3) in C:\htdocs\comics\char_transaction.php on line 225

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115
    Scusa, las, ti posto anche il file di interfaccia e l'include.

    <html>
    <head>
    <title>Edit Powers</title>
    <style type="text/css">
    td { vertical-align: top; }
    </style>
    </head>
    <body>
    [img]images/logo.jpg[/img]
    <h1>Comic Book
    Appreciation</h1>
    <h2>Edit Character Powers</h2>
    <hr style="clear: both;"/>
    <form action="char_transaction.php" method="post">
    <div>
    <input type="text" name="new_power" size="20" maxlength="40" value="" />
    <input type="submit" name="action" value="Add New Power" />
    </div>
    <?php


    questo è l'include


    <?php
    define('MYSQL_HOST','localhost');
    define('MYSQL_USER','root');
    define('MYSQL_PASSWORD','******');
    define('MYSQL_DB','comicbook_fansite');
    ?>
    require 'include/db.inc.php';

    $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Unable to connect. Check your connection parameters.');
    mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

    $query = 'SELECT power_id, power FROM comic_power ORDER BY power ASC';
    $result = mysql_query($query, $db) or die (mysql_error($db));

    if (mysql_num_rows($result) > 0) {
    echo '

    Deleting a power will remove its association with any ' .
    'characters as well-- select wisely!
    </p>';

    $num_powers = mysql_num_rows($result);
    $threshold = 5;
    $max_columns = 2;

    $num_columns = min($max_columns, ceil($num_powers/$threshold));
    $count_per_column = ceil($num_powers/$num_columns);

    $i = 0;
    echo '<table><tr><td>';
    while ($row = mysql_fetch_assoc($result)) {
    if (($i > 0) && ($i % $count_per_column == 0)) {
    echo '</td><td>';
    }
    echo '<input type="checkbox" name="powers[]" "value="' .
    $row['power_id'] . '" /> ';
    echo $row['power'] . '
    ';
    $i++;
    }
    echo '</td></tr></table>';

    echo '
    <input type="submit" name="action" ' .
    'value="Delete Selected Powers" />';
    } else {
    echo '

    No Powers entered...</p>';
    }
    ?>
    </div>
    </form>


    Return to Home Page</p>
    </body>
    </html>

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115
    Non sò come è successo ma il file include è andato a finire in mezzo invece che alla fine del file d'interfaccia, scusa.

  9. #9
    nel ciclo di while vi è una virgoletta di troppo. Modifica in questo modo

    Codice PHP:
    echo '<input type="checkbox" name="powers[]" value="' $row['power_id'] . '" /> '

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    115
    Bravo oly, scusa se non metto il 1982.
    Sei un fenomeno di php. Ti ringrazio veramente, oramai avevo perso le speranze che avrebbe mai funzionato.
    Ciao e grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.