Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28

    Modifica database con PHP

    Ciao a tutti,
    sto lavorando su un pasticcio pperato sul mio sito in Joomla dal plugin Joomla SEF Patch.

    Tutti i 'metakey' e 'metadesc' sono stati inseriti nel campo 'metadesc' del database...attraverso preg_match_all sono riuscito ad isolare 'metakey' e 'metadesc'...

    ora devo inserirli negli appositi campi, faccio partire lo script e ricevo questo avviso:
    Match #1:
    Field 'introtext' doesn't have a default value

    quindi evinco che il problema sia proprio nell'inserimento dei nuovi metakey e metadesc estratti

    Il codice in questione è questo:

    Codice PHP:
    <?php  
    $con 
    mysql_connect("localhost","joomla","joomla");
    if (!
    $con)
      {
      die(
    'Could not connect: ' mysql_error());
      }

    mysql_select_db("old"$con);

    $result mysql_query("SELECT * FROM jos_content");
    $cont 0;

    while(
    $row mysql_fetch_array($result))
      {
      
    $cont++;
      
    $metakey $row['metakey'];
      
    $metadesc $row['metadesc'];
      
    $metadata $row['metadata'];

    // extraction of metadesc and metakey from metadata field
    $pattern_desc '{tion=(.*?)meta_k}si';
    $pattern_key '{words=(.*?)robots=}si';
     
    //$matchcount = preg_match_all($pattern_long, $data, $matches);
    $matchcount_desc preg_match_all($pattern_desc$metadata$matches_desc);
    $matchcount_key preg_match_all($pattern_key$metadata$matches_key);

    echo(
    "<pre>\n");
    if (
    $matchcount_desc || $matchcount_key 0) {
        
    //  print_r($matches);
        
    for($i 0$i $matchcount_desc || $i $matchcount_key$i++) {
            echo(
    "\nMatch #" . ($cont) . ":\n");
            
            
    $metadesc_new = ($matches_desc[1][$i]); // print 1st capture group for match number i
            
            
    $metakey_new = ($matches_key[1][$i]); // print 1st capture group for match number i
            
            
    if($metadesc == '' || !$metadesc){
                
    mysql_query ("INSERT INTO `jos_content` (`metadesc`) VALUES ('".$metadesc_new."');") or die(mysql_error());
            }
            if(
    $metakey == '' || !$metakey){
                
    mysql_query ("INSERT INTO `jos_content` (`metakey`) VALUES ('".$metakey_new."');") or die(mysql_error());
            }

        }
    } else {
        echo(
    'No matches');
    }
    echo 
    'Fine';
    echo(
    "\n</pre>");
    }
    mysql_close($con);
    ?>
    Potreste aiutarmi per favore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28
    Forse sto migliorando...ho unito i due if in questo modo:

    Codice PHP:
    if($metadesc == '' || !$metadesc || $metakey == '' || !$metakey){
                
    mysql_query ("INSERT INTO `jos_content` (metadesc,metakey,fulltext) VALUES ('$metadesc_new','$metakey_new','$fulltext');") or die(mysql_error());
            } 
    ricevendo questa volta questo errore:

    Errore di sintassi nella query SQL vicino a 'fulltext) VALUES ('
    ','La Coin
    ','fulltext')' linea 1


    La Coin è l'unica keyword di uno degli articoli...

  3. #3
    fulltext è una parola riservata, non puoi usarla come nome di tabella...


  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28
    Ok, a me servirebbe cambiare solo metakey e metadesc della tabella jos_content..ora ho notato che se non metto tutti i campi della tabella mi esce il seguente errore:

    Field 'fulltext' doesn't have a default value

    Quindi se imposto nel php full text, mi esce:

    Field 'introtext' doesn't have a default value

    quindi sembra che lui voglia che vengano settati tutti i campi?!

  5. #5
    Devi fare l'escape dei nomi delle colonne (usando `, es `nomecolonna` ), In questo modo puoi usare le colonne che usano nomi riservati.
    I campi segnati come "not null" devono essere valorizzati (anche con stringa vuota se sono di tipo stringa).


  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28
    Grazie mille Dascos...potresti farmi vedere come modificheresti il codice con le modifiche appena dette? Non sono praticissimo di PHP.

    A me nn interessa modificare ne introtext ne fulltext...è possibile ignorare questi parametri?

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28
    Ho modificato seguendo le tue indicazioni:

    Codice PHP:
    mysql_query ("INSERT INTO `jos_content` (metadesc,metakey,`introtext`) VALUES ('$metadesc_new','$metakey_new',`$introtext`);") or die(mysql_error()); 
    ma adesso ricevo questo errore:

    Colonna sconosciuta '

    La Coin è un grande ......(tutto l'articolo)....blablabla
    ' in 'field list'

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28
    Ho rimodificato così...solo che adesso ho:

    Match #11:
    Errore di sintassi nella query SQL vicino a 'abito a tunica
    meta_keywords=Abito a tunica
    robots=index, follow
    googlebot=
    copy' linea 31

    Codice PHP:
    <?php  
    $con 
    mysql_connect("localhost","joomla","joomla");
    if (!
    $con)
      {
      die(
    'Could not connect: ' mysql_error());
      }

    mysql_select_db("old"$con);

    $result mysql_query("SELECT * FROM jos_content");
    $cont 0;

    while(
    $row mysql_fetch_array($result))
      {
      
    $cont++;
     
    /* $metakey = $row['metakey'];
      $metadesc = $row['metadesc'];
      $metadata = $row['metadata'];
      $introtext = $row['introtext'];*/
      
      
    $title $row['title'];
    $alias $row['alias'];
    $title_alias $row['title_alias'];
    $introtext $row['introtext'];
    $fulltext "fulltext";
    $state $row['state'];
    $sectionid $row['sectionid'];
    $mask $row['mask'];
    $catid $row['catid'];
    $created $row['created'];
    $created_by $row['created_by'];
    $created_by_alias $row['created_by_alias'];
    $modified $row['modified'];
    $modified_by $row['modified_by'];
    $checked_out $row['checked_out'];
    $checked_out_time $row['checked_out_time'];
    $publish_up $row['publish_up'];
    $publish_down $row['publish_down'];
    $images $row['images'];
    $urls $row['urls'];
    $attribs "show_title=
    link_titles=
    show_intro=
    show_section=
    link_section=
    show_category=
    link_category=
    show_vote=
    show_author=
    show_create_date=
    show_modify_date=
    show_pdf_icon=
    show_print_icon=
    show_email_icon=
    language=
    keyref=
    readmore="
    ;
    $version $row['version'];
    $parentid $row['parentid'];
    $ordering $row['ordering'];
    $metakey $row['metakey'];
    $metadesc $row['metadesc'];
    $access $row['access'];
    $hits $row['hits'];
    $metadata $row['metadata'];

    // extraction of metadesc and metakey from metadata field
    $pattern_desc '{tion=(.*?)meta_k}si';
    $pattern_key '{words=(.*?)robots=}si';
     
    //$matchcount = preg_match_all($pattern_long, $data, $matches);
    $matchcount_desc preg_match_all($pattern_desc$metadata$matches_desc);
    $matchcount_key preg_match_all($pattern_key$metadata$matches_key);

    echo(
    "<pre>\n");
    if (
    $matchcount_desc || $matchcount_key 0) {
        
    //  print_r($matches);
        
    for($i 0$i $matchcount_desc || $i $matchcount_key$i++) {
            echo(
    "\nMatch #" . ($cont) . ":\n");
            
            
    $metadesc_new = ($matches_desc[1][$i]); // print 1st capture group for match number i
            
            
    $metakey_new = ($matches_key[1][$i]); // print 1st capture group for match number i
            
            
    if($metadesc == '' || !$metadesc || $metakey == '' || !$metakey){
              
    /*  mysql_query ("INSERT INTO `jos_content` (metadesc,metakey,`introtext`) VALUES ('$metadesc_new','$metakey_new',`$introtext`);") or die(mysql_error());   */
             
                
    mysql_query("insert into jos_content (
                title,
                alias,
                title_alias,
                `introtext`,
                `fulltext`,
                state,
                sectionid,
                mask,
                catid,
                created,
                created_by,
                created_by_alias,
                modified,
                modified_by,
                checked_out,
                checked_out_time,
                publish_up,
                publish_down,
                images,
                urls,
                attribs,
                version,
                parentid,
                ordering,
                metakey,
                metadesc,
                access,
                hits,
                metadata
                ) VALUES ('
    $title','$alias','$title_alias','$introtext','$fulltext','$state','$sectionid','$mask','$catid','$created','$created_by','$created_by_alias','$modified','$modified_by','$checked_out','$checked_out_time','$publish_up','$publish_down','$images','$urls','$attribs','$version','$parentid','$ordering','$metakey_new','$metadesc_new','$access','$hits','$metadata')") or die(mysql_error());
                
            }
        }
    } else {
        echo(
    'No matches');
    }
    echo(
    "\n</pre>");
    }
    mysql_close($con);
    ?>

  9. #9
    Originariamente inviato da anjx
    Ho modificato seguendo le tue indicazioni:

    Codice PHP:
    mysql_query ("INSERT INTO `jos_content` (metadesc,metakey,`introtext`) VALUES ('$metadesc_new','$metakey_new',`$introtext`);") or die(mysql_error()); 
    ma adesso ricevo questo errore:

    Colonna sconosciuta '

    La Coin è un grande ......(tutto l'articolo)....blablabla
    ' in 'field list'
    Eh per forza, solo il nome della tabella devi "escappare" con quell'apice, non i valori
    codice:
    mysql_query ("INSERT INTO `jos_content` (metadesc,metakey,`introtext`) VALUES ('$metadesc_new','$metakey_new','$introtext');") or die(mysql_error());

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    28
    Nonotante tutto ricevo:

    Field 'fulltext' doesn't have a default value

    ed in questo caso nn l'ho settato fulltext..ecco perchè li ho citati tutti ora...però citandoli tutti ho questo:


    Match #1:


    No matches

    No matches

    No matches

    No matches

    No matches

    No matches

    No matches

    No matches

    No matches

    Match #11:
    Errore di sintassi nella query SQL vicino a 'abito a tunica
    ','0','373','html_title=
    meta_description=Una brevissima descrizi' linea 31

    Mi sono permesso di aggiungerti su skype, magari puoi darmi una mano e poi puoi anche cancellarmi a vita LOL

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 © 2025 vBulletin Solutions, Inc. All rights reserved.