Problème prestashop – object Address->address1 is not valid

Dans le cadre de mon nouveau travail, je gère plusieurs Prestashop.
Nous avons procédé à une bascule de serveur et j’ai tout une série de problème qui arrivent.

Dans le cas présent un client ne pouvais plus valider son panier il tombait à chaque fois sur la traditionnelle page Oups, la page que vous recherchez n’existe pas.
En passant la boutique en mode debug je me suis rendu vite compte du problème.

object Address->address1 is not valid

En gros il y a une merde dans la base !!
Soit sur la partie adresse, soit sur la partie panier.

Pour avoir un peu plus d’informations, direction la base de données en utilisant cette requête:

Le # est a remplacer par vos informations, id_customer est l’identifiant unique du client.

En identifiant les paniers ayant une valeur null pour le champ id_address vous avez quasi résolu le problème.
il vous suffit soit:

  • de supprimer le panier depuis l’administration (pas testé mais ça doit fonctionner),
  • supprimer le panier en SQL,

Et faire un update du panier avec une adresse existante ou nouvelle.

Pour ma part l’adresse contenait des caractères spéciaux, j’ai donc supprimé les adresses en SQL, demandé au client de renseigner à nouveaux ses coordonnées et fait un update massif des champs id_address_delevery et id_address_invoice de la table cart avec les nouveaux id_address.

ATTENTION, si vous ne savez pas ce que vous faite, ne faite pas c’est le genre de requête qui peut faire mal !

Installation d’Apache PHP et Mysql sous Windows

Un grand titre pour un simple exécutable, je ne vais pas faire une installation complète du serveur Apache, venir y rajouter PHP alors que des packages existent !

Pour avoir simplement cette environnement sous Windows je vous recommande WampServeur. Tout simplement parce qu’avec ce seul exécutable vous vous retrouverez avec ce que l’on recherche. Apache PHP et MySQL sous Windows !

J’avais fait un screencast en 2008 qui est toujours d’actualité. Les pages ont un peu changées mais le principe est toujours le même.

Continuer la lecture de « Installation d’Apache PHP et Mysql sous Windows »

NPDS – Meta Mot X Derniers commentaires

ketzol a demandé il y a quelques jours sur le forum de NPDS, si il existait une fonction permettant d’afficher les X Derniers Commentaires, jusqu’à présent ce n’était pas possible mais aujourd’hui c’est chose faite.

Pour installer ce méta-mot vous avez deux possibilités :

L’installer manuellement en suivant cette méthode, Installation et Gestion des Méta-Mot,
avec le fichier d’installation automatique qui se trouve par ici X derniers commentaires

[fusion_builder_container hundred_percent= »yes » overflow= »visible »][fusion_builder_row][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
function MM_dernierCommentaires($nbCommentaire = 10, $maLimite = 80) {
global $NPDS_Prefix;

$nbCommentaire = arg_filter($nbCommentaire);
$maLimite = arg_filter($maLimite);

$sqlSelect = ‘SELECT ‘.$NPDS_Prefix.’posts.topic_id, ‘.$NPDS_Prefix.’posts.poster_id, ‘.$NPDS_Prefix.’posts.post_text, ‘.$NPDS_Prefix.’users.name, ‘.$NPDS_Prefix.’stories.title
FROM ‘.$NPDS_Prefix.’posts
INNER JOIN ‘.$NPDS_Prefix.’users ON ‘.$NPDS_Prefix.’posts.poster_id = ‘.$NPDS_Prefix.’users.uid
INNER JOIN ‘.$NPDS_Prefix.’stories ON ‘.$NPDS_Prefix.’posts.topic_id = ‘.$NPDS_Prefix.’stories.sid
WHERE forum_id = -1
ORDER BY post_id DESC
LIMIT ‘.$nbCommentaire;
$execSqlSelect = sql_query($sqlSelect);
$content .= ‘<ul id="dernierCommentaire">’;

while($dernierCommentaires = sql_fetch_row($execSqlSelect)) {
$dernierComment = strip_tags($dernierCommentaires[2]);
if(strlen($dernierComment) &amp;gt;= $maLimite) {
while($dernierComment[$maLimite – 1] != " ") {
$maLimite++;
}
$dernierComment = substr($dernierComment, 0, $maLimite);
$dernierComment .= ‘ …’;
}
$remplaceNPDS = str_replace(‘NPDS’, ‘npds’, $dernierCommentaires[4]);
$content .= $dernierCommentaires[1] == 1 ? ‘<li>Anonyme : <a title="’.$remplaceNPDS.’" href="article.php?sid=’.$dernierCommentaires[0].’">’.$dernierComment.'</a></li>’ : ‘<li><a href="user.php?op=userinfo&amp;amp;uname=’.$dernierCommentaires[3].’">’.$dernierCommentaires[3].'</a> : <a title="’.$remplaceNPDS.’" href="article.php?sid=’.$dernierCommentaires[0].’">’.$dernierComment.'</a></li>’;
}
$content .= ‘</ul>’;
return($content);
}

[/php][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

SQL – Injection SQL ok mais comment l’éviter avec MS SQL avec PHP?

Sous MySQL il existe la fonction mysql_escape_string ou encore mysql_real_escape_string, mais sous MS SQL avec PHP ces fonctions n’existent pas.

Voici une fonction équivalente a mysql_escape_string , mais l’une comme l’autre elles ne protègent pas les caractères % et _.

[php]
function mssql_escape_string($str) {
$str = str_replace("’"," »",$str);
$str = htmlspecialchars($str, ENT_QUOTES);
return $str;
}
[/php]